diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-10-21 03:32:32 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-10-21 03:32:32 +0000 |
commit | 8673ae73569d3417854527cebfe95b4c3e37d311 (patch) | |
tree | eb3554dbfc2a13e9cbc19aa09590f3fb81761e70 /include/clang/Basic/SourceManager.h | |
parent | ef3b215c946d4813408b5fe872fe2baa3b246b00 (diff) |
Add fileid_iterator to SourceManager.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57878 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/SourceManager.h')
-rw-r--r-- | include/clang/Basic/SourceManager.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 7d28db20e5..b41d708784 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -454,6 +454,30 @@ public: return getFIDInfo(getPhysicalLoc(Loc).getFileID())->getFileCharacteristic(); } + // Iterators over FileIDs. + + class fileid_iterator { + std::vector<SrcMgr::FileIDInfo>::iterator I; + unsigned fid; + public: + fileid_iterator(std::vector<SrcMgr::FileIDInfo>::iterator i, unsigned f) + : I(i), fid(f) {} + + bool operator==(const fileid_iterator& X) const { return X.fid == fid; } + bool operator!=(const fileid_iterator& X) const { return X.fid != fid; } + fileid_iterator& operator++() { ++fid; ++I; return *this; } + + unsigned getFileID() const { return fid; } + SrcMgr::FileIDInfo& getFileIDInfo() { return *I; } + }; + + fileid_iterator fileid_begin() { + return fileid_iterator(FileIDs.begin(), 1); + } + + fileid_iterator fileid_end() { + return fileid_iterator(FileIDs.end(), FileIDs.size()+1); + } /// PrintStats - Print statistics to stderr. /// |