diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp index 0e7eee87f7e..def4b41e7af 100644 --- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp +++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp @@ -208,7 +208,7 @@ class ProjectFilesModel : public QAbstractListModel Q_OBJECT public: ProjectFilesModel(QObject *parent); - void configure(const QVector &files); + void configure(const ProjectFiles &files); void clear(); enum Columns { FileKindColumn, FilePathColumn, ColumnCount }; @@ -219,14 +219,14 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const; private: - QVector m_files; + ProjectFiles m_files; }; ProjectFilesModel::ProjectFilesModel(QObject *parent) : QAbstractListModel(parent) { } -void ProjectFilesModel::configure(const QVector &files) +void ProjectFilesModel::configure(const ProjectFiles &files) { emit layoutAboutToBeChanged(); m_files = files; diff --git a/src/plugins/cpptools/cppprojectfile.cpp b/src/plugins/cpptools/cppprojectfile.cpp index ce5172f8aef..8046e0126f9 100644 --- a/src/plugins/cpptools/cppprojectfile.cpp +++ b/src/plugins/cpptools/cppprojectfile.cpp @@ -24,26 +24,25 @@ ****************************************************************************/ #include "cppprojectfile.h" - #include "cpptoolsconstants.h" #include #include -# + #include namespace CppTools { -ProjectFile::ProjectFile(const QString &file, Kind kind) - : path(file) +ProjectFile::ProjectFile(const QString &filePath, Kind kind) + : path(filePath) , kind(kind) { } -ProjectFile::Kind ProjectFile::classify(const QString &file) +ProjectFile::Kind ProjectFile::classify(const QString &filePath) { Utils::MimeDatabase mdb; - const Utils::MimeType mimeType = mdb.mimeTypeForFile(file); + const Utils::MimeType mimeType = mdb.mimeTypeForFile(filePath); if (!mimeType.isValid()) return Unclassified; const QString mt = mimeType.name(); @@ -66,7 +65,6 @@ ProjectFile::Kind ProjectFile::classify(const QString &file) return Unclassified; } -/// @return True if file is header or cannot be classified (i.e has no file extension) bool ProjectFile::isHeader(ProjectFile::Kind kind) { switch (kind) { @@ -74,14 +72,13 @@ bool ProjectFile::isHeader(ProjectFile::Kind kind) case ProjectFile::CXXHeader: case ProjectFile::ObjCHeader: case ProjectFile::ObjCXXHeader: - case ProjectFile::Unclassified: + case ProjectFile::Unclassified: // no file extension, e.g. stl headers return true; default: return false; } } -/// @return True if file is correctly classified source bool ProjectFile::isSource(ProjectFile::Kind kind) { switch (kind) { @@ -97,25 +94,31 @@ bool ProjectFile::isSource(ProjectFile::Kind kind) } } -QDebug operator<<(QDebug stream, const CppTools::ProjectFile &cxxFile) +#define RETURN_TEXT_FOR_CASE(enumValue) case ProjectFile::enumValue: return #enumValue +static const char *projectFileKindToText(ProjectFile::Kind kind) { - const char *kind; - switch (cxxFile.kind) { - case CppTools::ProjectFile::CHeader: kind = "CHeader"; break; - case CppTools::ProjectFile::CSource: kind = "CSource"; break; - case CppTools::ProjectFile::CXXHeader: kind = "CXXHeader"; break; - case CppTools::ProjectFile::CXXSource: kind = "CXXSource"; break; - case CppTools::ProjectFile::ObjCHeader: kind = "ObjCHeader"; break; - case CppTools::ProjectFile::ObjCSource: kind = "ObjCSource"; break; - case CppTools::ProjectFile::ObjCXXHeader: kind = "ObjCXXHeader"; break; - case CppTools::ProjectFile::ObjCXXSource: kind = "ObjCXXSource"; break; - case CppTools::ProjectFile::CudaSource: kind = "CudaSource"; break; - case CppTools::ProjectFile::OpenCLSource: kind = "OpenCLSource"; break; - default: kind = "INVALID"; break; + switch (kind) { + RETURN_TEXT_FOR_CASE(Unclassified); + RETURN_TEXT_FOR_CASE(CHeader); + RETURN_TEXT_FOR_CASE(CSource); + RETURN_TEXT_FOR_CASE(CXXHeader); + RETURN_TEXT_FOR_CASE(CXXSource); + RETURN_TEXT_FOR_CASE(ObjCHeader); + RETURN_TEXT_FOR_CASE(ObjCSource); + RETURN_TEXT_FOR_CASE(ObjCXXHeader); + RETURN_TEXT_FOR_CASE(ObjCXXSource); + RETURN_TEXT_FOR_CASE(CudaSource); + RETURN_TEXT_FOR_CASE(OpenCLSource); } - stream << cxxFile.path << QLatin1String(", ") << kind; + + return "UnhandledProjectFileKind"; +} +#undef RETURN_TEXT_FOR_CASE + +QDebug operator<<(QDebug stream, const CppTools::ProjectFile &projectFile) +{ + stream << projectFile.path << QLatin1String(", ") << projectFileKindToText(projectFile.kind); return stream; } } // namespace CppTools - diff --git a/src/plugins/cpptools/cppprojectfile.h b/src/plugins/cpptools/cppprojectfile.h index a73eb5fb77d..a57688230fb 100644 --- a/src/plugins/cpptools/cppprojectfile.h +++ b/src/plugins/cpptools/cppprojectfile.h @@ -27,8 +27,6 @@ #include "cpptools_global.h" -#include -#include #include namespace CppTools { @@ -36,32 +34,34 @@ namespace CppTools { class CPPTOOLS_EXPORT ProjectFile { public: - // enums and types enum Kind { - Unclassified = 0, - CHeader = 1, - CSource = 2, - CXXHeader = 3, - CXXSource = 4, - ObjCHeader = 5, - ObjCSource = 6, - ObjCXXHeader = 7, - ObjCXXSource = 8, - CudaSource = 9, - OpenCLSource = 10 + Unclassified, + CHeader, + CSource, + CXXHeader, + CXXSource, + ObjCHeader, + ObjCSource, + ObjCXXHeader, + ObjCXXSource, + CudaSource, + OpenCLSource, }; - ProjectFile() = default; - ProjectFile(const QString &file, Kind kind); - - static Kind classify(const QString &file); + static Kind classify(const QString &filePath); static bool isHeader(Kind kind); static bool isSource(Kind kind); +public: + ProjectFile() = default; + ProjectFile(const QString &filePath, Kind kind); + QString path; - Kind kind = CHeader; + Kind kind = Unclassified; }; -QDebug operator<<(QDebug stream, const CppTools::ProjectFile &cxxFile); +using ProjectFiles = QVector; + +QDebug operator<<(QDebug stream, const CppTools::ProjectFile &projectFile); } // namespace CppTools diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h index ea45720589c..e278be769a1 100644 --- a/src/plugins/cpptools/projectpart.h +++ b/src/plugins/cpptools/projectpart.h @@ -103,7 +103,7 @@ public: // fields QString displayName; QString projectFile; ProjectExplorer::Project *project; - QVector files; + ProjectFiles files; QString projectConfigFile; // currently only used by the Generic Project Manager QByteArray projectDefines; QByteArray toolchainDefines; diff --git a/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp b/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp index 16e440def29..50a559bcdd5 100644 --- a/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp +++ b/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp @@ -74,7 +74,7 @@ void GenericProjectPlugin::test_simple() QCOMPARE(pPart->files.first().kind, ProjectFile::CXXSource); } -static QStringList simplify(const QVector &files, const QString &prefix) +static QStringList simplify(const ProjectFiles &files, const QString &prefix) { QStringList result;