Skip to content

Commit 4621174

Browse files
committed
GUI: Read include directories from project file.
1 parent 3132041 commit 4621174

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

gui/mainwindow.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,13 @@ Settings MainWindow::GetCppcheckSettings()
293293
{
294294
result.addAutoAllocClass(classname.toStdString());
295295
}
296+
297+
QStringList dirs = pfile.GetIncludeDirs();
298+
QString dir;
299+
foreach(dir, dirs)
300+
{
301+
result._includePaths.push_back(dir.toStdString());
302+
}
296303
}
297304
}
298305

gui/projectfile.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ static const char ProjectElementName[] = "project";
2626
static const char AllocElementName[] = "autodealloc";
2727
static const char ClassElementName[] = "class";
2828
static const char ClassNameAttrib[] = "name";
29+
static const char IncludDirElementName[] = "includedir";
30+
static const char DirElementName[] = "dir";
31+
static const char DirNameAttrib[] = "name";
2932

3033
ProjectFile::ProjectFile(QObject *parent) :
3134
QObject(parent)
@@ -60,6 +63,9 @@ bool ProjectFile::Read(const QString &filename)
6063
// Find allocelement from inside project element
6164
if (insideProject && xmlReader.name() == AllocElementName)
6265
ReadAutoAllocClasses(xmlReader);
66+
67+
if (insideProject && xmlReader.name() == IncludDirElementName)
68+
ReadIncludeDirs(xmlReader);
6369
break;
6470

6571
case QXmlStreamReader::EndElement:
@@ -90,6 +96,11 @@ QStringList ProjectFile::GetDeAllocatedClasses() const
9096
return mDeAllocatedClasses;
9197
}
9298

99+
QStringList ProjectFile::GetIncludeDirs() const
100+
{
101+
return mIncludeDirs;
102+
}
103+
93104
void ProjectFile::ReadAutoAllocClasses(QXmlStreamReader &reader)
94105
{
95106
QXmlStreamReader::TokenType type;
@@ -131,3 +142,45 @@ void ProjectFile::ReadAutoAllocClasses(QXmlStreamReader &reader)
131142
}
132143
while (!allRead);
133144
}
145+
146+
void ProjectFile::ReadIncludeDirs(QXmlStreamReader &reader)
147+
{
148+
QXmlStreamReader::TokenType type;
149+
bool allRead = false;
150+
do
151+
{
152+
type = reader.readNext();
153+
switch (type)
154+
{
155+
case QXmlStreamReader::StartElement:
156+
157+
// Read dir-elements
158+
if (reader.name().toString() == DirElementName)
159+
{
160+
QXmlStreamAttributes attribs = reader.attributes();
161+
QString name = attribs.value("", DirNameAttrib).toString();
162+
if (!name.isEmpty())
163+
mIncludeDirs << name;
164+
}
165+
break;
166+
167+
case QXmlStreamReader::EndElement:
168+
if (reader.name().toString() == IncludDirElementName)
169+
allRead = true;
170+
break;
171+
172+
// Not handled
173+
case QXmlStreamReader::NoToken:
174+
case QXmlStreamReader::Invalid:
175+
case QXmlStreamReader::StartDocument:
176+
case QXmlStreamReader::EndDocument:
177+
case QXmlStreamReader::Characters:
178+
case QXmlStreamReader::Comment:
179+
case QXmlStreamReader::DTD:
180+
case QXmlStreamReader::EntityReference:
181+
case QXmlStreamReader::ProcessingInstruction:
182+
break;
183+
}
184+
}
185+
while (!allRead);
186+
}

gui/projectfile.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,25 @@ class ProjectFile : public QObject
4949
*/
5050
QStringList GetDeAllocatedClasses() const;
5151

52+
/**
53+
* @brief Get list of include directories.
54+
* @return list of directories.
55+
*/
56+
QStringList GetIncludeDirs() const;
57+
5258
protected:
59+
/**
60+
* @brief Read list of automatically deallocated classes from XML.
61+
* @param reader XML stream reader.
62+
*/
5363
void ReadAutoAllocClasses(QXmlStreamReader &reader);
5464

65+
/**
66+
* @brief Read list of include directories from XML.
67+
* @param reader XML stream reader.
68+
*/
69+
void ReadIncludeDirs(QXmlStreamReader &reader);
70+
5571
private:
5672

5773
/**
@@ -63,6 +79,11 @@ class ProjectFile : public QObject
6379
* @brief List of automatically deallocated classes.
6480
*/
6581
QStringList mDeAllocatedClasses;
82+
83+
/**
84+
* @brief List of include directories used to search include files.
85+
*/
86+
QStringList mIncludeDirs;
6687
};
6788

6889
#endif // PROJECT_FILE_H

0 commit comments

Comments
 (0)