retdec
|
A visitor for obtaining a textual representation of a value. More...
#include <value_text_repr_visitor.h>
Static Public Member Functions | |
static std::string | getTextRepr (ShPtr< Value > value) |
Returns a textual representation of value. More... | |
Private Member Functions | |
ValueTextReprVisitor () | |
Constructs a new visitor. More... | |
Visitor Interface | |
virtual void | visit (ShPtr< GlobalVarDef > func) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
Visitor Interface | |
OrderedAllVisitor (bool visitSuccessors=true, bool visitNestedStmts=true) | |
Constructs a new visitor. More... | |
virtual void | visitStmt (ShPtr< Statement > stmt, bool visitSuccessors=true, bool visitNestedStmts=true) |
Visits the given statement, and possibly its successors or nested statements. More... | |
void | restart (bool visitSuccessors=true, bool visitNestedStmts=true) |
"Restarts" the visitor so it is in the state like it was when it was created. More... | |
bool | makeAccessedAndCheckIfAccessed (ShPtr< Type > type) |
Makes the given type accessed. More... | |
![]() | |
virtual | ~Visitor ()=default |
Visitor ()=default | |
![]() | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable ()=default | |
~NonCopyable ()=default | |
Private Attributes | |
std::stringstream | textRepr |
![]() | |
ShPtr< Statement > | lastStmt |
Statement that has been accessed as the last one. More... | |
StmtUSet | accessedStmts |
A set of all accessed statements. More... | |
TypeUSet | accessedTypes |
A set of all accessed types. More... | |
bool | visitSuccessors |
Should statements' successor be accessed? More... | |
bool | visitNestedStmts |
Should nested statements be accessed? More... | |
A visitor for obtaining a textual representation of a value.
See the description of getTextRepr() for more information.
This class implements the "static helper" (or "library") design pattern (it has just static functions and no public instances can be created).
TODO Merge it with PyWriter? "Create" an instance of this class for each HLL writer?
|
private |
Constructs a new visitor.
Returns a textual representation of value.
[in] | value | Value whose textual representation will be obtained. |
The returned representation is a concise representation of value in a Python-like language. It is meant to be used for debugging and developing purposes (for example, you can use it during debugging or when emitting a control-flow graph). The returned string is never ended with a new line. No successors of statements are considered, i.e. if value is a statement, only its representation is returned.
If value is a compound statement or a function, the bodies of nested blocks are not considered. However, in this case, the returned string may contain new lines for better readability.
TODO: Incorporate this functionality into HLL writers? The implementation of this class is based on PyHLLWriter, anyhow.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
private |
Container to be used during obtaining the value's textual representation.