aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/clangsupport/idpaths.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/clangsupport/idpaths.h')
-rw-r--r--src/libs/clangsupport/idpaths.h45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/libs/clangsupport/idpaths.h b/src/libs/clangsupport/idpaths.h
index d67a73e83e..d0945f7ff5 100644
--- a/src/libs/clangsupport/idpaths.h
+++ b/src/libs/clangsupport/idpaths.h
@@ -25,21 +25,60 @@
#pragma once
-#include "projectpartid.h"
#include "filepathid.h"
+#include "projectpartid.h"
+#include "sourceentry.h"
namespace ClangBackEnd {
-class IdPaths
+class ProjectChunkId
{
public:
ProjectPartId id;
+ SourceType sourceType;
+
+ friend bool operator==(ProjectChunkId first, ProjectChunkId second)
+ {
+ return first.id == second.id && first.sourceType == second.sourceType;
+ }
+
+ friend bool operator==(ProjectChunkId first, ProjectPartId second)
+ {
+ return first.id == second;
+ }
+
+ friend bool operator==(ProjectPartId first, ProjectChunkId second)
+ {
+ return first == second.id;
+ }
+
+ friend bool operator!=(ProjectChunkId first, ProjectChunkId second)
+ {
+ return !(first == second);
+ }
+
+ friend bool operator<(ProjectChunkId first, ProjectChunkId second)
+ {
+ return std::tie(first.id, first.sourceType) < std::tie(second.id, second.sourceType);
+ }
+
+ friend bool operator<(ProjectChunkId first, ProjectPartId second) { return first.id < second; }
+
+ friend bool operator<(ProjectPartId first, ProjectChunkId second) { return first < second.id; }
+};
+
+class IdPaths
+{
+public:
+ ProjectChunkId id;
FilePathIds filePathIds;
- friend bool operator==(const IdPaths &first, const IdPaths &second)
+ friend bool operator==(IdPaths first, IdPaths second)
{
return first.id == second.id && first.filePathIds == second.filePathIds;
}
};
+using ProjectChunkIds = std::vector<ProjectChunkId>;
+
} // namespace ClangBackEnd