diff options
Diffstat (limited to 'src/libs/clangsupport/idpaths.h')
-rw-r--r-- | src/libs/clangsupport/idpaths.h | 45 |
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 |