[cfe-commits] r42437 - /cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h

Ted Kremenek kremenek at apple.com
Fri Sep 28 10:55:22 PDT 2007


Author: kremenek
Date: Fri Sep 28 12:55:22 2007
New Revision: 42437

URL: http://llvm.org/viewvc/llvm-project?rev=42437&view=rev
Log:
Added iterator mechanism to iterator over the decls and expressions
tracked by an ExprDeclBitVector analysis.

Modified:
    cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h

Modified: cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h?rev=42437&r1=42436&r2=42437&view=diff

==============================================================================
--- cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h (original)
+++ cfe/trunk/include/clang/Analysis/ExprDeclBitVector.h Fri Sep 28 12:55:22 2007
@@ -32,9 +32,13 @@
   //===--------------------------------------------------------------------===//
 
   class AnalysisDataTy {
+  public:
     typedef llvm::DenseMap<const ScopedDecl*, unsigned > DMapTy;
-    typedef llvm::DenseMap<const Expr*, unsigned > EMapTy;
+    typedef llvm::DenseMap<const Expr*, unsigned > EMapTy;    
+    typedef DMapTy::const_iterator decl_iterator;
+    typedef EMapTy::const_iterator expr_iterator;
 
+  protected:
     EMapTy EMap;
     DMapTy DMap;    
     unsigned NDecls;
@@ -70,6 +74,11 @@
     void Register(const Expr* E) {
       if (!isTracked(E)) EMap[E] = NExprs++;
     }
+    
+    decl_iterator begin_decl() const { return DMap.begin(); }
+    decl_iterator end_decl() const { return DMap.end(); }
+    expr_iterator begin_expr() const { return EMap.begin(); }
+    expr_iterator end_expr() const { return EMap.end(); }
   };
 
   //===--------------------------------------------------------------------===//
@@ -116,6 +125,16 @@
       return const_cast<ValTy&>(*this)(E,AD);
     }
     
+    llvm::BitVector::reference getDeclBit(unsigned i) { return DeclBV[i]; }    
+    const llvm::BitVector::reference getDeclBit(unsigned i) const {
+      return const_cast<llvm::BitVector&>(DeclBV)[i];
+    }
+    
+    llvm::BitVector::reference getExprBit(unsigned i) { return ExprBV[i]; }    
+    const llvm::BitVector::reference getExprBit(unsigned i) const {
+      return const_cast<llvm::BitVector&>(ExprBV)[i];
+    }
+    
     ValTy& operator|=(const ValTy& RHS) {
       assert (sizesEqual(RHS));
       DeclBV |= RHS.DeclBV;





More information about the cfe-commits mailing list