diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h | 25 | ||||
-rw-r--r-- | include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h | 20 |
2 files changed, 26 insertions, 19 deletions
diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h b/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h index a6005ffd96..8c541efd6f 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h @@ -143,30 +143,17 @@ public: void dumpToStream(raw_ostream &OS) const; void dump() const; - // Iterators. - class symbol_iterator { - SmallVector<const SymExpr*, 5> itr; - void expand(); - public: - symbol_iterator() {} - symbol_iterator(const SymExpr *SE); - - symbol_iterator &operator++(); - SymbolRef operator*(); - - bool operator==(const symbol_iterator &X) const; - bool operator!=(const symbol_iterator &X) const; - }; - - symbol_iterator symbol_begin() const { + SymExpr::symbol_iterator symbol_begin() const { const SymExpr *SE = getAsSymbolicExpression(); if (SE) - return symbol_iterator(SE); + return SE->symbol_begin(); else - return symbol_iterator(); + return SymExpr::symbol_iterator(); } - symbol_iterator symbol_end() const { return symbol_iterator(); } + SymExpr::symbol_iterator symbol_end() const { + return SymExpr::symbol_end(); + } // Implement isa<T> support. static inline bool classof(const SVal*) { return true; } 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; |