diff options
author | Anna Zaks <ganna@apple.com> | 2011-12-06 23:12:33 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2011-12-06 23:12:33 +0000 |
commit | 1d1d515b2bafb59d624883d8fdda97d4b7dba0cb (patch) | |
tree | 0c8c329904ac0ab84b28420fd5d4e13e6d163ce2 /include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h | |
parent | aace9ef279be3dadd53b481aee568bd7701178b4 (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.h | 20 |
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; |