Go to the documentation of this file.
13 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H
14 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H
18 #include "llvm/ADT/FoldingSet.h"
19 #include "llvm/ADT/SmallVector.h"
29 class SymExpr :
public llvm::FoldingSetNode {
30 virtual void anchor();
34 #define SYMBOL(Id, Parent) Id##Kind,
35 #define SYMBOL_RANGE(Id, First, Last) BEGIN_##Id = First, END_##Id = Last,
36 #include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
58 virtual void dump()
const;
63 virtual void Profile(llvm::FoldingSetNodeID &profile) = 0;
120 void anchor()
override;
142 return k >= BEGIN_SYMBOLS && k <= END_SYMBOLS;
149 #endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H
Iterator over symbols that the current symbol depends on.
~SymbolData() override=default
bool operator==(const symbol_iterator &X) const
virtual unsigned computeComplexity() const =0
A (possibly-)qualified type.
static bool classof(const SymExpr *SE)
symbol_iterator()=default
MemRegion - The root abstract class for all memory regions.
virtual QualType getType() const =0
virtual const MemRegion * getOriginRegion() const
Find the region from which this symbol originates.
virtual ~SymExpr()=default
virtual StringRef getKindStr() const =0
Get a string representation of the kind of the region.
bool operator!=(const symbol_iterator &X) const
symbol_iterator & operator++()
virtual void dump() const
unsigned computeComplexity() const override
bool isNull() const
Return true if this QualType doesn't point to a type yet.
virtual void Profile(llvm::FoldingSetNodeID &profile)=0
SymbolData(Kind k, SymbolID sym)
static bool isValidTypeForSymbol(QualType T)
const SymExpr * operator*()
SymbolID getSymbolID() const
raw_ostream & operator<<(raw_ostream &Out, const CheckerBase &Checker)
Dump checker name to stream.
virtual void dumpToStream(raw_ostream &os) const
A symbol representing data which can be stored in a memory location (region).
symbol_iterator symbol_begin() const
static symbol_iterator symbol_end()