aboutsummaryrefslogtreecommitdiff
path: root/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2011-12-06 23:12:33 +0000
committerAnna Zaks <ganna@apple.com>2011-12-06 23:12:33 +0000
commit1d1d515b2bafb59d624883d8fdda97d4b7dba0cb (patch)
tree0c8c329904ac0ab84b28420fd5d4e13e6d163ce2 /include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
parentaace9ef279be3dadd53b481aee568bd7701178b4 (diff)
[analyzer] Refactor: Move symbol_iterator from SVal to SymExpr, use it
for finding dependent symbols for taint. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145986 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h')
-rw-r--r--include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
index addc0d3988..d47363cc10 100644
--- a/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+++ b/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
@@ -69,6 +69,26 @@ public:
// Implement isa<T> support.
static inline bool classof(const SymExpr*) { return true; }
+
+ class symbol_iterator {
+ SmallVector<const SymExpr*, 5> itr;
+ void expand();
+ public:
+ symbol_iterator() {}
+ symbol_iterator(const SymExpr *SE);
+
+ symbol_iterator &operator++();
+ const SymExpr* operator*();
+
+ bool operator==(const symbol_iterator &X) const;
+ bool operator!=(const symbol_iterator &X) const;
+ };
+
+ symbol_iterator symbol_begin() const {
+ return symbol_iterator(this);
+ }
+
+ static symbol_iterator symbol_end() { return symbol_iterator(); }
};
typedef const SymExpr* SymbolRef;