Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
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// Qt-Security score:significant reason:default
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
21QT_REQUIRE_CONFIG(mimetype);
22
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{
47
48public:
51
52 bool parse(QIODevice *dev, const QString &fileName, QString *errorMessage);
53
54 static bool parseNumber(QStringView n, int *target, QString *errorMessage);
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;
61 virtual void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) = 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) {}
90
91protected:
92 inline bool process(const QMimeTypeXMLData &t, QString *) override
93 { m_provider.addMimeType(t); return true; }
94
95 inline bool process(const QMimeGlobPattern &glob, QString *) override
96 { m_provider.addGlobPattern(glob); return true; }
97
98 inline void processParent(const QString &child, const QString &parent) override
99 { m_provider.addParent(child, parent); }
100
101 inline void processAlias(const QString &alias, const QString &name) override
102 { m_provider.addAlias(alias, name); }
103
104 inline void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) override
105 { m_provider.addMagicMatcher(matcher); }
106
107private:
108 QMimeXMLProvider &m_provider;
109};
110
111QT_END_NAMESPACE
112
113#endif // MIMETYPEPARSER_P_H
The QMimeGlobPattern class contains the glob pattern for file names for MIME type matching.
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
~QMimeTypeParser() 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 addMimeType(const QMimeTypeXMLData &mt)
void addMagicMatcher(const QMimeMagicRuleMatcher &matcher)
QT_REQUIRE_CONFIG(mimetype)
static QByteArray makePattern(const QByteArray &value)
static constexpr auto magicRuleTypes