diff options
Diffstat (limited to 'include/clang/Basic/PlistSupport.h')
-rw-r--r-- | include/clang/Basic/PlistSupport.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/include/clang/Basic/PlistSupport.h b/include/clang/Basic/PlistSupport.h index be92bbfde1853..e41c24737798f 100644 --- a/include/clang/Basic/PlistSupport.h +++ b/include/clang/Basic/PlistSupport.h @@ -25,24 +25,35 @@ namespace markup { using FIDMap = llvm::DenseMap<FileID, unsigned>; -inline void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V, - const SourceManager &SM, SourceLocation L) { - FileID FID = SM.getFileID(SM.getExpansionLoc(L)); +inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V, + FileID FID) { FIDMap::iterator I = FIDs.find(FID); if (I != FIDs.end()) - return; - FIDs[FID] = V.size(); + return I->second; + unsigned NewValue = V.size(); + FIDs[FID] = NewValue; V.push_back(FID); + return NewValue; } -inline unsigned GetFID(const FIDMap &FIDs, const SourceManager &SM, - SourceLocation L) { +inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V, + const SourceManager &SM, SourceLocation L) { FileID FID = SM.getFileID(SM.getExpansionLoc(L)); + return AddFID(FIDs, V, FID); +} + +inline unsigned GetFID(const FIDMap &FIDs, FileID FID) { FIDMap::const_iterator I = FIDs.find(FID); assert(I != FIDs.end()); return I->second; } +inline unsigned GetFID(const FIDMap &FIDs, const SourceManager &SM, + SourceLocation L) { + FileID FID = SM.getFileID(SM.getExpansionLoc(L)); + return GetFID(FIDs, FID); +} + inline raw_ostream &Indent(raw_ostream &o, const unsigned indent) { for (unsigned i = 0; i < indent; ++i) o << ' '; |