[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