retdec
Protected Member Functions | Protected Attributes | List of all members
retdec::llvmir2hll::OrderedAllVisitor Class Reference

A visitor that visits everything in an ordered way. More...

#include <ordered_all_visitor.h>

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

Public Member Functions

Visitor Interface
virtual void visit (ShPtr< GlobalVarDef > varDef) override
 
virtual void visit (ShPtr< Function > func) override
 
virtual void visit (ShPtr< AssignStmt > stmt) override
 
virtual void visit (ShPtr< BreakStmt > stmt) override
 
virtual void visit (ShPtr< CallStmt > stmt) override
 
virtual void visit (ShPtr< ContinueStmt > stmt) override
 
virtual void visit (ShPtr< EmptyStmt > stmt) override
 
virtual void visit (ShPtr< ForLoopStmt > stmt) override
 
virtual void visit (ShPtr< UForLoopStmt > stmt) override
 
virtual void visit (ShPtr< GotoStmt > stmt) override
 
virtual void visit (ShPtr< IfStmt > stmt) override
 
virtual void visit (ShPtr< ReturnStmt > stmt) override
 
virtual void visit (ShPtr< SwitchStmt > stmt) override
 
virtual void visit (ShPtr< UnreachableStmt > stmt) override
 
virtual void visit (ShPtr< VarDefStmt > stmt) override
 
virtual void visit (ShPtr< WhileLoopStmt > stmt) override
 
virtual void visit (ShPtr< AddOpExpr > expr) override
 
virtual void visit (ShPtr< AddressOpExpr > expr) override
 
virtual void visit (ShPtr< AndOpExpr > expr) override
 
virtual void visit (ShPtr< ArrayIndexOpExpr > expr) override
 
virtual void visit (ShPtr< AssignOpExpr > expr) override
 
virtual void visit (ShPtr< BitAndOpExpr > expr) override
 
virtual void visit (ShPtr< BitOrOpExpr > expr) override
 
virtual void visit (ShPtr< BitShlOpExpr > expr) override
 
virtual void visit (ShPtr< BitShrOpExpr > expr) override
 
virtual void visit (ShPtr< BitXorOpExpr > expr) override
 
virtual void visit (ShPtr< CallExpr > expr) override
 
virtual void visit (ShPtr< CommaOpExpr > expr) override
 
virtual void visit (ShPtr< DerefOpExpr > expr) override
 
virtual void visit (ShPtr< DivOpExpr > expr) override
 
virtual void visit (ShPtr< EqOpExpr > expr) override
 
virtual void visit (ShPtr< GtEqOpExpr > expr) override
 
virtual void visit (ShPtr< GtOpExpr > expr) override
 
virtual void visit (ShPtr< LtEqOpExpr > expr) override
 
virtual void visit (ShPtr< LtOpExpr > expr) override
 
virtual void visit (ShPtr< ModOpExpr > expr) override
 
virtual void visit (ShPtr< MulOpExpr > expr) override
 
virtual void visit (ShPtr< NegOpExpr > expr) override
 
virtual void visit (ShPtr< NeqOpExpr > expr) override
 
virtual void visit (ShPtr< NotOpExpr > expr) override
 
virtual void visit (ShPtr< OrOpExpr > expr) override
 
virtual void visit (ShPtr< StructIndexOpExpr > expr) override
 
virtual void visit (ShPtr< SubOpExpr > expr) override
 
virtual void visit (ShPtr< TernaryOpExpr > expr) override
 
virtual void visit (ShPtr< Variable > var) override
 
virtual void visit (ShPtr< BitCastExpr > expr) override
 
virtual void visit (ShPtr< ExtCastExpr > 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
 
virtual void visit (ShPtr< TruncCastExpr > expr) override
 
virtual void visit (ShPtr< ConstArray > constant) 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< ConstStruct > constant) override
 
virtual void visit (ShPtr< ConstSymbol > constant) override
 
virtual void visit (ShPtr< ArrayType > type) 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< StructType > type) override
 
virtual void visit (ShPtr< FunctionType > type) override
 
virtual void visit (ShPtr< VoidType > type) override
 
virtual void visit (ShPtr< UnknownType > type) override
 
- Public Member Functions inherited from retdec::llvmir2hll::Visitor
virtual ~Visitor ()=default
 

Protected Member Functions

 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...
 
- Protected Member Functions inherited from retdec::llvmir2hll::Visitor
 Visitor ()=default
 

Protected Attributes

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 that visits everything in an ordered way.

Concrete visitors should:

Instances of this class have reference object semantics.

By default, the functions from the Visitor interface go through all statements and expressions, calling value->accept(this) on each value.

Constructor & Destructor Documentation

◆ OrderedAllVisitor()

retdec::llvmir2hll::OrderedAllVisitor::OrderedAllVisitor ( bool  visitSuccessors = true,
bool  visitNestedStmts = true 
)
protected

Constructs a new visitor.

Member Function Documentation

◆ makeAccessedAndCheckIfAccessed()

bool retdec::llvmir2hll::OrderedAllVisitor::makeAccessedAndCheckIfAccessed ( ShPtr< Type type)
protected

Makes the given type accessed.

Returns
true if type has already been accessed, false otherwise.

◆ restart()

void retdec::llvmir2hll::OrderedAllVisitor::restart ( bool  visitSuccessors = true,
bool  visitNestedStmts = true 
)
protected

"Restarts" the visitor so it is in the state like it was when it was created.

Parameters
[in]visitSuccessorsNew value of this attribute.
[in]visitNestedStmtsNew value of this attribute.

◆ visit() [1/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< AddOpExpr expr)
overridevirtual

◆ visit() [2/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< AddressOpExpr expr)
overridevirtual

◆ visit() [3/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< AndOpExpr expr)
overridevirtual

◆ visit() [4/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ArrayIndexOpExpr expr)
overridevirtual

◆ visit() [5/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ArrayType type)
overridevirtual

◆ visit() [6/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< AssignOpExpr expr)
overridevirtual

◆ visit() [7/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< AssignStmt stmt)
overridevirtual

◆ visit() [8/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitAndOpExpr expr)
overridevirtual

◆ visit() [9/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitCastExpr expr)
overridevirtual

◆ visit() [10/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitOrOpExpr expr)
overridevirtual

◆ visit() [11/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitShlOpExpr expr)
overridevirtual

◆ visit() [12/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitShrOpExpr expr)
overridevirtual

◆ visit() [13/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BitXorOpExpr expr)
overridevirtual

◆ visit() [14/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< BreakStmt stmt)
overridevirtual

◆ visit() [15/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< CallExpr expr)
overridevirtual

◆ visit() [16/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< CallStmt stmt)
overridevirtual

◆ visit() [17/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< CommaOpExpr expr)
overridevirtual

◆ visit() [18/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstArray constant)
overridevirtual

◆ visit() [19/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstBool constant)
overridevirtual

◆ visit() [20/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstFloat constant)
overridevirtual

◆ visit() [21/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstInt constant)
overridevirtual

◆ visit() [22/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstNullPointer constant)
overridevirtual

◆ visit() [23/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstString constant)
overridevirtual

◆ visit() [24/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstStruct constant)
overridevirtual

◆ visit() [25/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ConstSymbol constant)
overridevirtual

◆ visit() [26/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ContinueStmt stmt)
overridevirtual

◆ visit() [27/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< DerefOpExpr expr)
overridevirtual

◆ visit() [28/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< DivOpExpr expr)
overridevirtual

◆ visit() [29/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< EmptyStmt stmt)
overridevirtual

◆ visit() [30/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< EqOpExpr expr)
overridevirtual

◆ visit() [31/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ExtCastExpr expr)
overridevirtual

◆ visit() [32/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< FloatType type)
overridevirtual

◆ visit() [33/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ForLoopStmt stmt)
overridevirtual

◆ visit() [34/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< FPToIntCastExpr expr)
overridevirtual

◆ visit() [35/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< Function func)
overridevirtual

◆ visit() [36/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< FunctionType type)
overridevirtual

◆ visit() [37/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< GlobalVarDef varDef)
overridevirtual

◆ visit() [38/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< GotoStmt stmt)
overridevirtual

◆ visit() [39/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< GtEqOpExpr expr)
overridevirtual

◆ visit() [40/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< GtOpExpr expr)
overridevirtual

◆ visit() [41/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< IfStmt stmt)
overridevirtual

◆ visit() [42/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< IntToFPCastExpr expr)
overridevirtual

◆ visit() [43/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< IntToPtrCastExpr expr)
overridevirtual

◆ visit() [44/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< IntType type)
overridevirtual

◆ visit() [45/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< LtEqOpExpr expr)
overridevirtual

◆ visit() [46/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< LtOpExpr expr)
overridevirtual

◆ visit() [47/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ModOpExpr expr)
overridevirtual

◆ visit() [48/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< MulOpExpr expr)
overridevirtual

◆ visit() [49/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< NegOpExpr expr)
overridevirtual

◆ visit() [50/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< NeqOpExpr expr)
overridevirtual

◆ visit() [51/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< NotOpExpr expr)
overridevirtual

◆ visit() [52/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< OrOpExpr expr)
overridevirtual

◆ visit() [53/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< PointerType type)
overridevirtual

◆ visit() [54/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< PtrToIntCastExpr expr)
overridevirtual

◆ visit() [55/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< ReturnStmt stmt)
overridevirtual

◆ visit() [56/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< StringType type)
overridevirtual

◆ visit() [57/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< StructIndexOpExpr expr)
overridevirtual

◆ visit() [58/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< StructType type)
overridevirtual

◆ visit() [59/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< SubOpExpr expr)
overridevirtual

◆ visit() [60/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< SwitchStmt stmt)
overridevirtual

◆ visit() [61/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< TernaryOpExpr expr)
overridevirtual

◆ visit() [62/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< TruncCastExpr expr)
overridevirtual

◆ visit() [63/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< UForLoopStmt stmt)
overridevirtual

◆ visit() [64/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< UnknownType type)
overridevirtual

◆ visit() [65/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< UnreachableStmt stmt)
overridevirtual

◆ visit() [66/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< VarDefStmt stmt)
overridevirtual

◆ visit() [67/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< Variable var)
overridevirtual

◆ visit() [68/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< VoidType type)
overridevirtual

◆ visit() [69/69]

void retdec::llvmir2hll::OrderedAllVisitor::visit ( ShPtr< WhileLoopStmt stmt)
overridevirtual

◆ visitStmt()

void retdec::llvmir2hll::OrderedAllVisitor::visitStmt ( ShPtr< Statement stmt,
bool  visitSuccessors = true,
bool  visitNestedStmts = true 
)
protectedvirtual

Visits the given statement, and possibly its successors or nested statements.

Parameters
[in]stmtStatement to be visited.
[in]visitSuccessorsIf true, a successor of stmt is also visited (and a successor of this successor, and so on).
[in]visitNestedStmtsIf true, nested statements are also visited, e.g. loop, if, and switch statement's bodies.

If stmt has already been accessed, this function does nothing. If stmt is the null pointer, it also does nothing. Before visiting stmt, this function adds it to accessedStmts.

Reimplemented in retdec::llvmir2hll::UnreachableCodeInCFGRemover, retdec::llvmir2hll::RecursiveCFGBuilder, and retdec::llvmir2hll::GotoTargetAnalysis.

Member Data Documentation

◆ accessedStmts

StmtUSet retdec::llvmir2hll::OrderedAllVisitor::accessedStmts
protected

A set of all accessed statements.

◆ accessedTypes

TypeUSet retdec::llvmir2hll::OrderedAllVisitor::accessedTypes
protected

A set of all accessed types.

◆ lastStmt

ShPtr<Statement> retdec::llvmir2hll::OrderedAllVisitor::lastStmt
protected

Statement that has been accessed as the last one.

◆ visitNestedStmts

bool retdec::llvmir2hll::OrderedAllVisitor::visitNestedStmts
protected

Should nested statements be accessed?

◆ visitSuccessors

bool retdec::llvmir2hll::OrderedAllVisitor::visitSuccessors
protected

Should statements' successor be accessed?


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