retdec
Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
retdec::llvmir2hll::ValueTextReprVisitor Class Reference

A visitor for obtaining a textual representation of a value. More...

#include <value_text_repr_visitor.h>

Inheritance diagram for retdec::llvmir2hll::ValueTextReprVisitor:
Inheritance graph
[legend]
Collaboration diagram for retdec::llvmir2hll::ValueTextReprVisitor:
Collaboration graph
[legend]

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...
 
- Private Member Functions inherited from retdec::llvmir2hll::Visitor
virtual ~Visitor ()=default
 
 Visitor ()=default
 
- Private Member Functions inherited from retdec::utils::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Private Attributes

std::stringstream textRepr
 
- Private Attributes inherited from retdec::llvmir2hll::OrderedAllVisitor
ShPtr< StatementlastStmt
 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...
 

Detailed Description

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?

Constructor & Destructor Documentation

◆ ValueTextReprVisitor()

retdec::llvmir2hll::ValueTextReprVisitor::ValueTextReprVisitor ( )
private

Constructs a new visitor.

Member Function Documentation

◆ getTextRepr()

std::string retdec::llvmir2hll::ValueTextReprVisitor::getTextRepr ( ShPtr< Value value)
static

Returns a textual representation of value.

Parameters
[in]valueValue 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.

Preconditions
  • value is non-null

TODO: Incorporate this functionality into HLL writers? The implementation of this class is based on PyHLLWriter, anyhow.

◆ visit() [1/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< AddOpExpr expr)
overrideprivatevirtual

◆ visit() [2/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< AddressOpExpr expr)
overrideprivatevirtual

◆ visit() [3/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< AndOpExpr expr)
overrideprivatevirtual

◆ visit() [4/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ArrayIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [5/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ArrayType type)
overrideprivatevirtual

◆ visit() [6/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< AssignOpExpr expr)
overrideprivatevirtual

◆ visit() [7/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< AssignStmt stmt)
overrideprivatevirtual

◆ visit() [8/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitAndOpExpr expr)
overrideprivatevirtual

◆ visit() [9/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitCastExpr expr)
overrideprivatevirtual

◆ visit() [10/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitOrOpExpr expr)
overrideprivatevirtual

◆ visit() [11/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitShlOpExpr expr)
overrideprivatevirtual

◆ visit() [12/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitShrOpExpr expr)
overrideprivatevirtual

◆ visit() [13/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BitXorOpExpr expr)
overrideprivatevirtual

◆ visit() [14/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< BreakStmt stmt)
overrideprivatevirtual

◆ visit() [15/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< CallExpr expr)
overrideprivatevirtual

◆ visit() [16/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< CallStmt stmt)
overrideprivatevirtual

◆ visit() [17/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< CommaOpExpr expr)
overrideprivatevirtual

◆ visit() [18/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstArray constant)
overrideprivatevirtual

◆ visit() [19/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstBool constant)
overrideprivatevirtual

◆ visit() [20/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstFloat constant)
overrideprivatevirtual

◆ visit() [21/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstInt constant)
overrideprivatevirtual

◆ visit() [22/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstNullPointer constant)
overrideprivatevirtual

◆ visit() [23/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstString constant)
overrideprivatevirtual

◆ visit() [24/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstStruct constant)
overrideprivatevirtual

◆ visit() [25/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ConstSymbol constant)
overrideprivatevirtual

◆ visit() [26/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ContinueStmt stmt)
overrideprivatevirtual

◆ visit() [27/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< DerefOpExpr expr)
overrideprivatevirtual

◆ visit() [28/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< DivOpExpr expr)
overrideprivatevirtual

◆ visit() [29/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< EmptyStmt stmt)
overrideprivatevirtual

◆ visit() [30/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< EqOpExpr expr)
overrideprivatevirtual

◆ visit() [31/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ExtCastExpr expr)
overrideprivatevirtual

◆ visit() [32/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< FloatType type)
overrideprivatevirtual

◆ visit() [33/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ForLoopStmt stmt)
overrideprivatevirtual

◆ visit() [34/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< FPToIntCastExpr expr)
overrideprivatevirtual

◆ visit() [35/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< Function func)
overrideprivatevirtual

◆ visit() [36/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< FunctionType type)
overrideprivatevirtual

◆ visit() [37/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< GlobalVarDef func)
overrideprivatevirtual

◆ visit() [38/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< GotoStmt stmt)
overrideprivatevirtual

◆ visit() [39/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< GtEqOpExpr expr)
overrideprivatevirtual

◆ visit() [40/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< GtOpExpr expr)
overrideprivatevirtual

◆ visit() [41/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< IfStmt stmt)
overrideprivatevirtual

◆ visit() [42/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< IntToFPCastExpr expr)
overrideprivatevirtual

◆ visit() [43/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< IntToPtrCastExpr expr)
overrideprivatevirtual

◆ visit() [44/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< IntType type)
overrideprivatevirtual

◆ visit() [45/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< LtEqOpExpr expr)
overrideprivatevirtual

◆ visit() [46/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< LtOpExpr expr)
overrideprivatevirtual

◆ visit() [47/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ModOpExpr expr)
overrideprivatevirtual

◆ visit() [48/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< MulOpExpr expr)
overrideprivatevirtual

◆ visit() [49/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< NegOpExpr expr)
overrideprivatevirtual

◆ visit() [50/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< NeqOpExpr expr)
overrideprivatevirtual

◆ visit() [51/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< NotOpExpr expr)
overrideprivatevirtual

◆ visit() [52/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< OrOpExpr expr)
overrideprivatevirtual

◆ visit() [53/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< PointerType type)
overrideprivatevirtual

◆ visit() [54/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< PtrToIntCastExpr expr)
overrideprivatevirtual

◆ visit() [55/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< ReturnStmt stmt)
overrideprivatevirtual

◆ visit() [56/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< StringType type)
overrideprivatevirtual

◆ visit() [57/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< StructIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [58/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< StructType type)
overrideprivatevirtual

◆ visit() [59/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< SubOpExpr expr)
overrideprivatevirtual

◆ visit() [60/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< SwitchStmt stmt)
overrideprivatevirtual

◆ visit() [61/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< TernaryOpExpr expr)
overrideprivatevirtual

◆ visit() [62/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< TruncCastExpr expr)
overrideprivatevirtual

◆ visit() [63/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< UForLoopStmt stmt)
overrideprivatevirtual

◆ visit() [64/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< UnknownType type)
overrideprivatevirtual

◆ visit() [65/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< UnreachableStmt stmt)
overrideprivatevirtual

◆ visit() [66/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< VarDefStmt stmt)
overrideprivatevirtual

◆ visit() [67/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< Variable var)
overrideprivatevirtual

◆ visit() [68/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< VoidType type)
overrideprivatevirtual

◆ visit() [69/69]

void retdec::llvmir2hll::ValueTextReprVisitor::visit ( ShPtr< WhileLoopStmt stmt)
overrideprivatevirtual

Member Data Documentation

◆ textRepr

std::stringstream retdec::llvmir2hll::ValueTextReprVisitor::textRepr
private

Container to be used during obtaining the value's textual representation.


The documentation for this class was generated from the following files: