Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qmimetypeparser_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
5#ifndef QMIMETYPEPARSER_P_H
6#define QMIMETYPEPARSER_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtCore/qtconfigmacros.h>
20
22
23#include "qmimeprovider_p.h"
24
26
28{
29public:
30 void clear();
31
32 void addGlobPattern(const QString &pattern);
33
34 bool hasGlobDeleteAll = false; // true if the mimetype has a glob-deleteall tag
37 QString genericIconName; // TODO move to a struct that's specific to the XML provider
38 QString iconName; // TODO move to a struct that's specific to the XML provider
40};
41
42class QIODevice;
43
45{
46 Q_DISABLE_COPY_MOVE(QMimeTypeParserBase)
47
48public:
51
53
55
56protected:
57 virtual bool process(const QMimeTypeXMLData &t, QString *errorMessage) = 0;
58 virtual bool process(const QMimeGlobPattern &t, QString *errorMessage) = 0;
59 virtual void processParent(const QString &child, const QString &parent) = 0;
60 virtual void processAlias(const QString &alias, const QString &name) = 0;
62
63private:
64 enum ParseState {
65 ParseBeginning,
66 ParseMimeInfo,
67 ParseMimeType,
68 ParseComment,
69 ParseGenericIcon,
70 ParseIcon,
71 ParseGlobPattern,
72 ParseGlobDeleteAll,
73 ParseSubClass,
74 ParseAlias,
75 ParseMagic,
76 ParseMagicMatchRule,
77 ParseOtherMimeTypeSubTag,
78 ParseError
79 };
80
81 static ParseState nextState(ParseState currentState, QStringView startElement);
82};
83
84
86{
87public:
88 explicit QMimeTypeParser(QMimeXMLProvider &provider) : m_provider(provider) {}
89
90protected:
91 inline bool process(const QMimeTypeXMLData &t, QString *) override
92 { m_provider.addMimeType(t); return true; }
93
94 inline bool process(const QMimeGlobPattern &glob, QString *) override
95 { m_provider.addGlobPattern(glob); return true; }
96
97 inline void processParent(const QString &child, const QString &parent) override
98 { m_provider.addParent(child, parent); }
99
100 inline void processAlias(const QString &alias, const QString &name) override
101 { m_provider.addAlias(alias, name); }
102
104 { m_provider.addMagicMatcher(matcher); }
105
106private:
107 QMimeXMLProvider &m_provider;
108};
109
111
112#endif // MIMETYPEPARSER_P_H
\inmodule QtCore \reentrant
Definition qiodevice.h:34
The QMimeGlobPattern class contains the glob pattern for file names for MIME type matching.
The QMimeMagicRuleMatcher class checks a number of rules based on operator "or".
virtual void processMagicMatcher(const QMimeMagicRuleMatcher &matcher)=0
static bool parseNumber(QStringView n, int *target, QString *errorMessage)
bool parse(QIODevice *dev, const QString &fileName, QString *errorMessage)
virtual bool process(const QMimeTypeXMLData &t, QString *errorMessage)=0
virtual bool process(const QMimeGlobPattern &t, QString *errorMessage)=0
virtual void processParent(const QString &child, const QString &parent)=0
virtual void processAlias(const QString &alias, const QString &name)=0
\inmodule QtCore
bool process(const QMimeTypeXMLData &t, QString *) override
void processAlias(const QString &alias, const QString &name) override
QMimeTypeParser(QMimeXMLProvider &provider)
void processParent(const QString &child, const QString &parent) override
bool process(const QMimeGlobPattern &glob, QString *) override
void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) override
QStringList globPatterns
QMimeTypePrivate::LocaleHash localeComments
void addGlobPattern(const QString &pattern)
void addGlobPattern(const QMimeGlobPattern &glob)
void addAlias(const QString &alias, const QString &name)
void addMimeType(const QMimeTypeXMLData &mt)
void addMagicMatcher(const QMimeMagicRuleMatcher &matcher)
void addParent(const QString &child, const QString &parent)
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:78
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
Combined button and popup list for selecting options.
GLenum target
GLuint name
GLfloat n
GLdouble GLdouble t
Definition qopenglext.h:243
GLubyte * pattern
#define QT_REQUIRE_CONFIG(feature)
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
Definition qurl.cpp:3517
static const auto matcher
[0]
QLayoutItem * child
[0]