retdec
Classes | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes | List of all members
retdec::llvmir2hll::BracketManager Class Referenceabstract

A base class of all brackets managers. More...

#include <bracket_manager.h>

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

Classes

struct  ItemOfPrecTable
 
struct  PrevOperators
 

Public Member Functions

 BracketManager (ShPtr< Module > module)
 Constructs a new base class for brackets managers. More...
 
void init ()
 Iterate through the module and visit all functions and all global variables. Starts brackets analyse. More...
 
virtual std::string getId () const =0
 Returns the ID of the BracketManager. More...
 
bool areBracketsNeeded (ShPtr< Expression > expr)
 Function that decides whether the brackets are needed. This function is needed to be called from HLL writers. More...
 
OrderedAllVisitor Interface
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< 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
 
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< Variable > var) override
 
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
 

Protected Types

enum class  Operators {
  ADD , ADDRESS , AND , ARRAY ,
  ASSIGN , BITAND , BITOR , BITSHL ,
  BITSHR , BITXOR , CALL , CAST ,
  COMMA , DEREF , DIV , EQ ,
  GT , GTEQ , LT , LTEQ ,
  MOD , MUL , NEG , NEQ ,
  NOT , OR , STRUCT , SUB ,
  TERNARY
}
 Enumeration for operators. More...
 
enum class  Direction { CENTER , LEFT , RIGHT }
 Enumeration for direction tree traversal. More...
 
enum  FirstParInItemOfPrecTable { L , R , N , S }
 

Protected Member Functions

virtual ItemOfPrecTable checkPrecTable (Operators currentOperator, Operators prevOperator)=0
 
virtual bool isOperatorSupported (Operators currentOperator)=0
 
PrevOperators getPrevOperator ()
 Top element from prevOperatorsStack. More...
 

Static Protected Attributes

static const bool T = true
 Bool constants. More...
 
static const bool F = false
 
static const int PREC_TABLE_SIZE = 29
 Constant for size of precedence table. More...
 

Private Member Functions

void addOperatorOnStackIfSupported (Operators currentOperator, Direction direction)
 Create a structure which contains previous operator and direction of tree traversal and add it on stack of prevOperatorsStack. If operator is not supported, operator is not pushed on stack. More...
 
void areBracketsNeededForExpr (ShPtr< Expression > expr, Operators currentOperator)
 Function find out, if brackets are needed for input expression. More...
 
bool areBracketsNeededPrecTable (Operators currentOperator)
 This function enter to precedence table with function checkPrecTable(...) and accordance it decide to if brackets are needed or not. More...
 
void removeOperatorFromStackIfSupported (Operators currentOperator)
 Pop element from prevOperatorsStack. If operator is not supported, operator is not popped from stack. More...
 
void treeTraversalForBinaryOpWithStackOperations (ShPtr< BinaryOpExpr > expr, Operators currentOperator)
 Function visit operands of BinaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack. More...
 
void treeTraversalForCallWithStackOperations (ShPtr< CallExpr > expr, Operators currentOperator)
 Function visit arguments of CallExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack. More...
 
void treeTraversalForCastWithStackOperations (ShPtr< CastExpr > expr, Operators currentOperator)
 Function visit operand of CastExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack. More...
 
void treeTraversalForTernaryOpWithStackOperations (ShPtr< TernaryOpExpr > expr, Operators currentOperator)
 Function visit operands of TernaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack. More...
 
void treeTraversalForUnaryOpWithStackOperations (ShPtr< UnaryOpExpr > expr, Operators currentOperator)
 Function visit operand of UnaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack. More...
 
- Private Member Functions inherited from retdec::llvmir2hll::OrderedAllVisitor
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< 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
 
 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 Attributes

std::stack< PrevOperatorsprevOperatorsStack
 
std::map< ShPtr< Expression >, bool > bracketsAreNeededMap
 
ShPtr< Modulemodule
 The module to be analyzed. More...
 
- 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 base class of all brackets managers.

Every brackets manager should subclass this class and override protected checkPrecTable(...) and isOperatorSupported(...) functions. In subclass is needed to add a Precedence table, which is generated by script hll_prec_table_gen.py which is in /decompiler/scripts/. In C/Py/.. HLL Writer need to override emitTargetCode(...) and call the constructor of subclass BracketManager. In constructor of subclass need to place function init(...).

Instances of this class have reference object semantics.

Member Enumeration Documentation

◆ Direction

Enumeration for direction tree traversal.

Enumerator
CENTER 
LEFT 
RIGHT 

◆ FirstParInItemOfPrecTable

String constants for L = left-associative, R = right-associative, N = doesn't mattter, S = skip operator, operator is not supported.

Enumerator

◆ Operators

Enumeration for operators.

Enumerator
ADD 
ADDRESS 
AND 
ARRAY 
ASSIGN 
BITAND 
BITOR 
BITSHL 
BITSHR 
BITXOR 
CALL 
CAST 
COMMA 
DEREF 
DIV 
EQ 
GT 
GTEQ 
LT 
LTEQ 
MOD 
MUL 
NEG 
NEQ 
NOT 
OR 
STRUCT 
SUB 
TERNARY 

Constructor & Destructor Documentation

◆ BracketManager()

retdec::llvmir2hll::BracketManager::BracketManager ( ShPtr< Module module)

Constructs a new base class for brackets managers.

Parameters
[in]moduleThe module to be analyzed.

Member Function Documentation

◆ addOperatorOnStackIfSupported()

void retdec::llvmir2hll::BracketManager::addOperatorOnStackIfSupported ( Operators  currentOperator,
Direction  direction 
)
private

Create a structure which contains previous operator and direction of tree traversal and add it on stack of prevOperatorsStack. If operator is not supported, operator is not pushed on stack.

Parameters
[in]currentOperatorenum Operators. It is used for creating item which is pushed as previous operator on stack.
[in]directionenum Direction. Enumeration for direction tree traversal.

◆ areBracketsNeeded()

bool retdec::llvmir2hll::BracketManager::areBracketsNeeded ( ShPtr< Expression expr)

Function that decides whether the brackets are needed. This function is needed to be called from HLL writers.

Parameters
[in]exprInput expression.
Returns
true if brackets are needed, false otherwise.

◆ areBracketsNeededForExpr()

void retdec::llvmir2hll::BracketManager::areBracketsNeededForExpr ( ShPtr< Expression expr,
Operators  currentOperator 
)
private

Function find out, if brackets are needed for input expression.

Parameters
[in]exprInput expression.
currentOperatorenum Operators.

◆ areBracketsNeededPrecTable()

bool retdec::llvmir2hll::BracketManager::areBracketsNeededPrecTable ( Operators  currentOperator)
private

This function enter to precedence table with function checkPrecTable(...) and accordance it decide to if brackets are needed or not.

Parameters
[in]currentOperatorenum Operators.
Returns
true if brackets are needed, false otherwise.

◆ checkPrecTable()

virtual ItemOfPrecTable retdec::llvmir2hll::BracketManager::checkPrecTable ( Operators  currentOperator,
Operators  prevOperator 
)
protectedpure virtual

◆ getId()

virtual std::string retdec::llvmir2hll::BracketManager::getId ( ) const
pure virtual

◆ getPrevOperator()

BracketManager::PrevOperators retdec::llvmir2hll::BracketManager::getPrevOperator ( )
protected

Top element from prevOperatorsStack.

Returns
PrevOperators which is a structure with previous operator and direction of tree traversal.

◆ init()

void retdec::llvmir2hll::BracketManager::init ( )

Iterate through the module and visit all functions and all global variables. Starts brackets analyse.

◆ isOperatorSupported()

virtual bool retdec::llvmir2hll::BracketManager::isOperatorSupported ( Operators  currentOperator)
protectedpure virtual

◆ removeOperatorFromStackIfSupported()

void retdec::llvmir2hll::BracketManager::removeOperatorFromStackIfSupported ( Operators  currentOperator)
private

Pop element from prevOperatorsStack. If operator is not supported, operator is not popped from stack.

Parameters
[in]currentOperatorenum Operators. Operator is used for check whether is supported.

◆ treeTraversalForBinaryOpWithStackOperations()

void retdec::llvmir2hll::BracketManager::treeTraversalForBinaryOpWithStackOperations ( ShPtr< BinaryOpExpr expr,
Operators  currentOperator 
)
private

Function visit operands of BinaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack.

Parameters
[in]exprCurrent expression.
[in]currentOperatorenum Operators.

◆ treeTraversalForCallWithStackOperations()

void retdec::llvmir2hll::BracketManager::treeTraversalForCallWithStackOperations ( ShPtr< CallExpr expr,
Operators  currentOperator 
)
private

Function visit arguments of CallExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack.

Parameters
[in]exprCurrent expression.
[in]currentOperatorenum Operators.

◆ treeTraversalForCastWithStackOperations()

void retdec::llvmir2hll::BracketManager::treeTraversalForCastWithStackOperations ( ShPtr< CastExpr expr,
Operators  currentOperator 
)
private

Function visit operand of CastExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack.

Parameters
[in]exprCurrent expression.
[in]currentOperatorenum Operators.

◆ treeTraversalForTernaryOpWithStackOperations()

void retdec::llvmir2hll::BracketManager::treeTraversalForTernaryOpWithStackOperations ( ShPtr< TernaryOpExpr expr,
Operators  currentOperator 
)
private

Function visit operands of TernaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack.

Parameters
[in]exprCurrent expression.
[in]currentOperatorenum Operators.

◆ treeTraversalForUnaryOpWithStackOperations()

void retdec::llvmir2hll::BracketManager::treeTraversalForUnaryOpWithStackOperations ( ShPtr< UnaryOpExpr expr,
Operators  currentOperator 
)
private

Function visit operand of UnaryOpExpr. Function also add operator on stack of previous operators and after visit operand remove this operator from stack.

Parameters
[in]exprCurrent expression.
[in]currentOperatorenum Operators. Current operator.

◆ visit() [1/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [2/113]

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

◆ visit() [3/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [4/113]

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

◆ visit() [5/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [6/113]

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

◆ visit() [7/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [8/113]

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

◆ visit() [9/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [10/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [11/113]

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

◆ visit() [12/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [13/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [14/113]

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

◆ visit() [15/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [16/113]

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

◆ visit() [17/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [18/113]

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

◆ visit() [19/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [20/113]

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

◆ visit() [21/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [22/113]

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

◆ visit() [23/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [24/113]

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

◆ visit() [25/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [26/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [27/113]

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

◆ visit() [28/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [29/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [30/113]

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

◆ visit() [31/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [32/113]

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

◆ visit() [33/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [34/113]

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

◆ visit() [35/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [36/113]

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

◆ visit() [37/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [38/113]

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

◆ visit() [39/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [40/113]

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

◆ visit() [41/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [42/113]

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

◆ visit() [43/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [44/113]

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

◆ visit() [45/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [46/113]

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

◆ visit() [47/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [48/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [49/113]

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

◆ visit() [50/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [51/113]

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

◆ visit() [52/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [53/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [54/113]

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

◆ visit() [55/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [56/113]

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

◆ visit() [57/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [58/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [59/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [60/113]

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

◆ visit() [61/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [62/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [63/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [64/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [65/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [66/113]

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

◆ visit() [67/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [68/113]

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

◆ visit() [69/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [70/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [71/113]

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

◆ visit() [72/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [73/113]

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

◆ visit() [74/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [75/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [76/113]

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

◆ visit() [77/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [78/113]

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

◆ visit() [79/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [80/113]

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

◆ visit() [81/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [82/113]

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

◆ visit() [83/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [84/113]

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

◆ visit() [85/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [86/113]

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

◆ visit() [87/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [88/113]

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

◆ visit() [89/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [90/113]

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

◆ visit() [91/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [92/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [93/113]

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

◆ visit() [94/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [95/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [96/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [97/113]

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

◆ visit() [98/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [99/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [100/113]

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

◆ visit() [101/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [102/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [103/113]

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

◆ visit() [104/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [105/113]

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

◆ visit() [106/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [107/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [108/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [109/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [110/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [111/113]

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

◆ visit() [112/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

◆ visit() [113/113]

void retdec::llvmir2hll::OrderedAllVisitor::visit
override

Member Data Documentation

◆ bracketsAreNeededMap

std::map<ShPtr<Expression>, bool> retdec::llvmir2hll::BracketManager::bracketsAreNeededMap
private

This map contains Expression adresses and status to write, or doesn't write brackets.

◆ F

const bool retdec::llvmir2hll::BracketManager::F = false
staticprotected

◆ module

ShPtr<Module> retdec::llvmir2hll::BracketManager::module
private

The module to be analyzed.

◆ PREC_TABLE_SIZE

const int retdec::llvmir2hll::BracketManager::PREC_TABLE_SIZE = 29
staticprotected

Constant for size of precedence table.

◆ prevOperatorsStack

std::stack<PrevOperators> retdec::llvmir2hll::BracketManager::prevOperatorsStack
private

Stack of structures. Every structure contains previous operator and direction of tree traversal.

◆ T

const bool retdec::llvmir2hll::BracketManager::T = true
staticprotected

Bool constants.


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