summaryrefslogtreecommitdiff
path: root/src/tools/clangrefactoringbackend/source/projectpartartefacts.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clangrefactoringbackend/source/projectpartartefacts.h')
-rw-r--r--src/tools/clangrefactoringbackend/source/projectpartartefacts.h30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/tools/clangrefactoringbackend/source/projectpartartefacts.h b/src/tools/clangrefactoringbackend/source/projectpartartefacts.h
index 31c191e415..646a87e790 100644
--- a/src/tools/clangrefactoringbackend/source/projectpartartefacts.h
+++ b/src/tools/clangrefactoringbackend/source/projectpartartefacts.h
@@ -28,8 +28,11 @@
#include <utils/algorithm.h>
#include <utils/smallstringvector.h>
+#include <compilermacro.h>
+
#include <QJsonArray>
#include <QJsonDocument>
+#include <QJsonObject>
namespace ClangBackEnd {
@@ -37,16 +40,16 @@ class ProjectPartArtefact
{
public:
ProjectPartArtefact(Utils::SmallStringView compilerArgumentsText,
- Utils::SmallStringView macroNamesText,
+ Utils::SmallStringView compilerMacrosText,
int projectPartId)
- : compilerArguments(toVector(compilerArgumentsText)),
- macroNames(toVector(macroNamesText)),
+ : compilerArguments(toStringVector(compilerArgumentsText)),
+ compilerMacros(toCompilerMacros(compilerMacrosText)),
projectPartId(projectPartId)
{
}
static
- Utils::SmallStringVector toVector(Utils::SmallStringView jsonText)
+ Utils::SmallStringVector toStringVector(Utils::SmallStringView jsonText)
{
QJsonDocument document = QJsonDocument::fromJson(QByteArray::fromRawData(jsonText.data(),
jsonText.size()));
@@ -56,16 +59,31 @@ public:
});
}
+ static
+ CompilerMacros toCompilerMacros(Utils::SmallStringView jsonText)
+ {
+ QJsonDocument document = QJsonDocument::fromJson(QByteArray::fromRawData(jsonText.data(),
+ jsonText.size()));
+ QJsonObject object = document.object();
+ CompilerMacros macros;
+ macros.reserve(object.size());
+
+ for (auto current = object.constBegin(); current != object.constEnd(); ++current)
+ macros.emplace_back(current.key(), current.value().toString());
+
+ return macros;
+ }
+
friend
bool operator==(const ProjectPartArtefact &first, const ProjectPartArtefact &second)
{
return first.compilerArguments == second.compilerArguments
- && first.macroNames == second.macroNames;
+ && first.compilerMacros == second.compilerMacros;
}
public:
Utils::SmallStringVector compilerArguments;
- Utils::SmallStringVector macroNames;
+ CompilerMacros compilerMacros;
int projectPartId = -1;
};