@@ -29,6 +29,9 @@ static const char ClassNameAttrib[] = "name";
2929static const char IncludDirElementName[] = " includedir" ;
3030static const char DirElementName[] = " dir" ;
3131static const char DirNameAttrib[] = " name" ;
32+ static const char DefinesElementName[] = " defines" ;
33+ static const char DefineName[] = " define" ;
34+ static const char DefineNameAttrib[] = " name" ;
3235
3336ProjectFile::ProjectFile (QObject *parent) :
3437 QObject(parent)
@@ -66,6 +69,10 @@ bool ProjectFile::Read(const QString &filename)
6669
6770 if (insideProject && xmlReader.name () == IncludDirElementName)
6871 ReadIncludeDirs (xmlReader);
72+
73+ if (insideProject && xmlReader.name () == DefinesElementName)
74+ ReadDefines (xmlReader);
75+
6976 break ;
7077
7178 case QXmlStreamReader::EndElement:
@@ -101,6 +108,11 @@ QStringList ProjectFile::GetIncludeDirs() const
101108 return mIncludeDirs ;
102109}
103110
111+ QStringList ProjectFile::GetDefines () const
112+ {
113+ return mDefines ;
114+ }
115+
104116void ProjectFile::ReadAutoAllocClasses (QXmlStreamReader &reader)
105117{
106118 QXmlStreamReader::TokenType type;
@@ -184,3 +196,44 @@ void ProjectFile::ReadIncludeDirs(QXmlStreamReader &reader)
184196 }
185197 while (!allRead);
186198}
199+
200+ void ProjectFile::ReadDefines (QXmlStreamReader &reader)
201+ {
202+ QXmlStreamReader::TokenType type;
203+ bool allRead = false ;
204+ do
205+ {
206+ type = reader.readNext ();
207+ switch (type)
208+ {
209+ case QXmlStreamReader::StartElement:
210+ // Read define-elements
211+ if (reader.name ().toString () == DefineName)
212+ {
213+ QXmlStreamAttributes attribs = reader.attributes ();
214+ QString name = attribs.value (" " , DefineNameAttrib).toString ();
215+ if (!name.isEmpty ())
216+ mDefines << name;
217+ }
218+ break ;
219+
220+ case QXmlStreamReader::EndElement:
221+ if (reader.name ().toString () == DefinesElementName)
222+ allRead = true ;
223+ break ;
224+
225+ // Not handled
226+ case QXmlStreamReader::NoToken:
227+ case QXmlStreamReader::Invalid:
228+ case QXmlStreamReader::StartDocument:
229+ case QXmlStreamReader::EndDocument:
230+ case QXmlStreamReader::Characters:
231+ case QXmlStreamReader::Comment:
232+ case QXmlStreamReader::DTD:
233+ case QXmlStreamReader::EntityReference:
234+ case QXmlStreamReader::ProcessingInstruction:
235+ break ;
236+ }
237+ }
238+ while (!allRead);
239+ }
0 commit comments