retdec
Public Member Functions | Private Member Functions | List of all members
retdec::llvmir2hll::NoBracketManager Class Reference

A class that that turns off eleminating redundant brackets. More...

#include <no_bracket_manager.h>

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

Public Member Functions

 NoBracketManager (ShPtr< Module > module)
 Constructs a new brackets manager thath turns off eleminating redundant brackets. More...
 
virtual std::string getId () const override
 Returns the ID of the BracketManager. More...
 
bool areBracketsNeeded (ShPtr< Expression > expr)
 Overrided function from base class, because HLL writer call this function to decide if brackets are needed or not. More...
 
- Public Member Functions inherited from retdec::llvmir2hll::BracketManager
 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...
 
bool areBracketsNeeded (ShPtr< Expression > expr)
 Function that decides whether the brackets are needed. This function is needed to be called from HLL writers. More...
 
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
 

Private Member Functions

virtual ItemOfPrecTable checkPrecTable (Operators currentOperator, Operators prevOperator) override
 Overrided from base class BracketManager. More...
 
virtual bool isOperatorSupported (Operators currentOperator) override
 Overrided from base class BracketManager. More...
 

Additional Inherited Members

- Protected Types inherited from retdec::llvmir2hll::BracketManager
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 inherited from retdec::llvmir2hll::BracketManager
PrevOperators getPrevOperator ()
 Top element from prevOperatorsStack. More...
 
- Static Protected Attributes inherited from retdec::llvmir2hll::BracketManager
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...
 

Detailed Description

A class that that turns off eleminating redundant brackets.

For this purpose need to change emitTargetCode(...) in chosen HLL writer. Need to change there

bracketsManager = ShPtr<BracketManager>(new ..BracketManager(module));
to
bracketsManager = ShPtr<BracketManager>(new NoBracketManager(module));
BracketManager(ShPtr< Module > module)
Constructs a new base class for brackets managers.
Definition: bracket_manager.cpp:69
ShPtr< Module > module
The module to be analyzed.
Definition: bracket_manager.h:120
NoBracketManager(ShPtr< Module > module)
Constructs a new brackets manager thath turns off eleminating redundant brackets.
Definition: no_bracket_manager.cpp:18

Constructor & Destructor Documentation

◆ NoBracketManager()

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

Constructs a new brackets manager thath turns off eleminating redundant brackets.

Parameters
[in]moduleThe module to be written.

Member Function Documentation

◆ areBracketsNeeded()

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

Overrided function from base class, because HLL writer call this function to decide if brackets are needed or not.

Parameters
[in]exprInput expression.
Returns
always true.

◆ checkPrecTable()

BracketManager::ItemOfPrecTable retdec::llvmir2hll::NoBracketManager::checkPrecTable ( Operators  currentOperator,
Operators  prevOperator 
)
overrideprivatevirtual

Overrided from base class BracketManager.

Parameters
[in]currentOperatorcurrent operator.
[in]prevOperatorprevious operator.
Returns
item of precedenceTable.

Implements retdec::llvmir2hll::BracketManager.

◆ getId()

std::string retdec::llvmir2hll::NoBracketManager::getId ( ) const
overridevirtual

Returns the ID of the BracketManager.

Implements retdec::llvmir2hll::BracketManager.

◆ isOperatorSupported()

bool retdec::llvmir2hll::NoBracketManager::isOperatorSupported ( Operators  currentOperator)
overrideprivatevirtual

Overrided from base class BracketManager.

Parameters
currentOperatorcurrent operator.
Returns
always true.

Implements retdec::llvmir2hll::BracketManager.


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