]> granicus.if.org Git - clang/commitdiff
Add some iterators to BugReporter.
authorTed Kremenek <kremenek@apple.com>
Wed, 11 Mar 2009 01:40:35 +0000 (01:40 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 11 Mar 2009 01:40:35 +0000 (01:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66621 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/PathSensitive/BugReporter.h

index 0350f91a2d7663f72b52daf55f852e2be411a5e6..85430e366ef15c0b7bba61acbcef61f134eec69a 100644 (file)
@@ -141,9 +141,23 @@ public:
     BugReport* operator*() const { return *impl; }
     BugReport* operator->() const { return *impl; }
   };
+  
+  class const_iterator {
+    std::list<BugReport*>::const_iterator impl;
+  public:
+    const_iterator(std::list<BugReport*>::const_iterator i) : impl(i) {}
+    const_iterator& operator++() { ++impl; return *this; }
+    bool operator==(const const_iterator& I) const { return I.impl == impl; }
+    bool operator!=(const const_iterator& I) const { return I.impl != impl; }
+    const BugReport* operator*() const { return *impl; }
+    const BugReport* operator->() const { return *impl; }
+  };
     
   iterator begin() { return iterator(Reports.begin()); }
   iterator end() { return iterator(Reports.end()); }
+  
+  const_iterator begin() const { return const_iterator(Reports.begin()); }
+  const_iterator end() const { return const_iterator(Reports.end()); }
 };
   
 class BugType {
@@ -162,6 +176,14 @@ public:
 
   virtual void FlushReports(BugReporter& BR);  
   void AddReport(BugReport* BR);  
+  
+  typedef llvm::FoldingSet<BugReportEquivClass>::iterator iterator;
+  iterator begin() { return EQClasses.begin(); }
+  iterator end() { return EQClasses.end(); }
+  
+  typedef llvm::FoldingSet<BugReportEquivClass>::const_iterator const_iterator;
+  const_iterator begin() const { return EQClasses.begin(); }
+  const_iterator end() const { return EQClasses.end(); }
 };
   
 //===----------------------------------------------------------------------===//
@@ -244,6 +266,10 @@ public:
     return D.getPathDiagnosticClient();
   }
   
+  typedef BugTypesTy::iterator iterator;
+  iterator begin() { return BugTypes.begin(); }
+  iterator end() { return BugTypes.end(); }
+  
   ASTContext& getContext() { return D.getContext(); }
   
   SourceManager& getSourceManager() { return D.getSourceManager(); }