aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic/SourceManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Basic/SourceManager.h')
-rw-r--r--include/clang/Basic/SourceManager.h24
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.
///