Class SymbolicExpr#

Inheritance Relationships#

Base Types#

Derived Types#

Class Documentation#

class SymbolicExpr : public SymbolicValImpl, public CountRefHandle<SymbolicOperands>#

Subclassed by SymbolicMultiply, SymbolicPlus, SymbolicSelect

Public Types

typedef LatticeElemList<SymbolicTerm>::iterator OpdIterator#

Public Functions

inline SymbolicTerm Val2Term(const SymbolicVal &v) const#
inline SymbolicVal Term2Val(const SymbolicTerm &tm) const#
void AddOpd(const SymbolicTerm &v, OPApplicator *op = 0)#
void AddOpd(const SymbolicVal &v, OPApplicator *op = 0)#
virtual void ApplyOpd(const SymbolicVal &v) = 0#
virtual SymbolicExpr *DistributeExpr(SymOpType t, const SymbolicVal &that) const = 0#
inline virtual void Visit(SymbolicVisitor *op) const#
inline virtual SymbolicValImpl *Clone() const#
virtual std::string toString() const#
inline virtual SymbolicValType GetValType() const#
inline virtual std::string GetTypeName() const#
inline void push_back(const SymbolicVal &v)#
virtual std::string GetOPName() const = 0#
virtual SymOpType GetOpType() const = 0#
virtual SymbolicExpr *CloneExpr() const = 0#
virtual AstNodePtr CodeGenOP(AstInterface &fa, const AstNodePtr &a1, const AstNodePtr &a2) const = 0#
inline virtual AstNodePtr CodeGen(AstInterface &fa) const#
SymbolicVal GetUnknownOpds() const#
bool GetConstOpd(int &val1, int &val2) const#
unsigned NumOfOpds() const#
OpdIterator GetOpdIterator() const#
SymbolicTerm &FirstOpd() const#
bool operator==(const SymbolicExpr &that) const#

Protected Functions

inline SymbolicExpr()#
inline SymbolicExpr(const SymbolicExpr &that)#
virtual SymOpType GetTermOP() const = 0#