32 bool parse(
const QString &source);
33 void disambiguateFileSelectors();
35 bool hasError()
const {
return !_errors.isEmpty(); }
36 void setError(
const QQmlJS::DiagnosticMessage &);
37 QList<QQmlJS::DiagnosticMessage> errors(
const QString &uri)
const;
39 bool hasTypeNamespace()
const {
return !_typeNamespace.isEmpty(); }
40 QString typeNamespace()
const {
return _typeNamespace; }
41 void setTypeNamespace(
const QString &s) { _typeNamespace = s; }
43 static void checkNonRelative(
const char *item,
const QString &typeName,
const QString &fileName)
45 if (fileName.startsWith(QLatin1Char(
'/'))) {
46 qWarning() << item << typeName
47 <<
"is specified with non-relative URL" << fileName <<
"in a qmldir file."
48 <<
"URLs in qmldir files should be relative to the qmldir file's directory.";
56 Plugin(
const QString &name,
const QString &path,
bool optional)
57 : name(name), path(path), optional(optional)
59 checkNonRelative(
"Plugin", name, path);
64 bool optional =
false;
69 Component() =
default;
71 Component(
const QString &typeName,
const QString &fileName, QTypeRevision version)
72 : typeName(typeName), fileName(fileName), version(version),
73 internal(
false), singleton(
false)
75 checkNonRelative(
"Component", typeName, fileName);
80 QTypeRevision version = QTypeRevision::zero();
81 bool internal =
false;
82 bool singleton =
false;
89 Script(
const QString &nameSpace,
const QString &fileName, QTypeRevision version)
90 : nameSpace(nameSpace), fileName(fileName), version(version)
92 checkNonRelative(
"Script", nameSpace, fileName);
97 QTypeRevision version = QTypeRevision::zero();
109 Q_DECLARE_FLAGS(Flags, Flag)
112 Import(QString module, QTypeRevision version, Flags flags)
113 : module(module), version(version), flags(flags)
118 QTypeRevision version;
121 friend bool operator==(
const Import &a,
const Import &b)
123 return a.module == b.module && a.version == b.version && a.flags == b.flags;
127 QMultiHash<QString,Component> components()
const {
return _components; }
128 QList<Import> dependencies()
const {
return _dependencies; }
129 QList<Import> imports()
const {
return _imports; }
130 QList<Script> scripts()
const {
return _scripts; }
131 QList<Plugin> plugins()
const {
return _plugins; }
132 bool designerSupported()
const {
return _designerSupported; }
136 bool isStaticModule()
const {
return _isStaticModule; }
139 bool isSystemModule()
const {
return _isSystemModule; }
141 QStringList typeInfos()
const {
return _typeInfos; }
142 QStringList classNames()
const {
return _classNames; }
143 QString preferredPath()
const {
return _preferredPath; }
144 QString linkTarget()
const {
return _linkTarget; }
147 bool maybeAddComponent(
const QString &typeName,
const QString &fileName,
const QString &version, QHash<QString,Component> &hash,
int lineNumber = -1,
bool multi =
true);
148 void reportError(quint16 line, quint16 column,
const QString &message);
149 QString scanQuotedWord(
const QChar *&ch, quint16 lineNumber, quint16 columnNumber);
150 void insertComponentOrScript(
151 const QString &name,
const QString &fileName, QTypeRevision version);
154 QList<QQmlJS::DiagnosticMessage> _errors;
155 QString _typeNamespace;
156 QString _preferredPath;
157 QMultiHash<QString,Component> _components;
158 QList<Import> _dependencies;
159 QList<Import> _imports;
160 QList<Script> _scripts;
161 QList<Plugin> _plugins;
162 bool _designerSupported =
false;
163 bool _isStaticModule =
false;
164 bool _isSystemModule =
false;
165 QStringList _typeInfos;
166 QStringList _classNames;