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

A class that contains precedence table and overrided methods which decide of elimination redundant brackets for the C language. More...

#include <c_bracket_manager.h>

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

Public Member Functions

 CBracketManager (ShPtr< Module > module)
 Constructs a new C brackets manager. More...
 
virtual std::string getId () const override
 Returns the ID of the BracketManager. 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. This function enter to precedence table and return result. Precedence tables is indexed with previous operator and current operator. More...
 
virtual bool isOperatorSupported (Operators currentOperator) override
 Function that check if operator is supported in chosen language. More...
 

Static Private Attributes

static ItemOfPrecTable precedenceTable [PREC_TABLE_SIZE][PREC_TABLE_SIZE]
 Precedence table of operators. 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 contains precedence table and overrided methods which decide of elimination redundant brackets for the C language.

Constructor & Destructor Documentation

◆ CBracketManager()

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

Constructs a new C brackets manager.

Parameters
[in]moduleThe module to be analyzed.

Member Function Documentation

◆ checkPrecTable()

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

Overrided from base class BracketManager. This function enter to precedence table and return result. Precedence tables is indexed with previous operator and current operator.

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

Implements retdec::llvmir2hll::BracketManager.

◆ getId()

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

Returns the ID of the BracketManager.

Implements retdec::llvmir2hll::BracketManager.

◆ isOperatorSupported()

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

Function that check if operator is supported in chosen language.

Parameters
[in]currentOperatorOperator to check.
Returns
true if operator is supported, false otherwise.

Implements retdec::llvmir2hll::BracketManager.

Member Data Documentation

◆ precedenceTable

CBracketManager::ItemOfPrecTable retdec::llvmir2hll::CBracketManager::precedenceTable
staticprivate

Precedence table of operators.


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