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

Counter of the number of statements in a block. More...

#include <statements_counter.h>

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

Static Public Member Functions

static unsigned count (ShPtr< Statement > block, bool recursive=true, bool includeEmptyStmts=false)
 Returns the number of statements in block. More...
 

Private Member Functions

 StatementsCounter ()
 Constructs a new statements counter. More...
 
unsigned countInternal (ShPtr< Statement > block, bool recursive, bool includeEmptyStmts)
 Internal implementation of count(). More...
 
Visitor Interface
virtual void visit (ShPtr< GlobalVarDef > varDef) 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< 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
 
- Private Member Functions inherited from retdec::llvmir2hll::OrderedAllVisitor
virtual void visit (ShPtr< FunctionType > 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 Member Functions inherited from retdec::utils::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Private Attributes

unsigned numOfStmts
 Counter of the number of statements. More...
 
bool recursive
 Should we also visit nested statements (in compound statements)? More...
 
bool includeEmptyStmts
 Should we also count empty statements? 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

Counter of the number of statements in a block.

This class implements the "static helper" (or "library") design pattern (it has just static functions and no instances can be created).

Constructor & Destructor Documentation

◆ StatementsCounter()

retdec::llvmir2hll::StatementsCounter::StatementsCounter ( )
private

Constructs a new statements counter.

Member Function Documentation

◆ count()

unsigned retdec::llvmir2hll::StatementsCounter::count ( ShPtr< Statement block,
bool  recursive = true,
bool  includeEmptyStmts = false 
)
static

Returns the number of statements in block.

Parameters
[in]blockSequence of statements (possibly empty).
[in]recursiveVisit also nested statements (in compound statements)?
[in]includeEmptyStmtsCount also empty statements?

◆ countInternal()

unsigned retdec::llvmir2hll::StatementsCounter::countInternal ( ShPtr< Statement block,
bool  recursive_,
bool  includeEmptyStmts_ 
)
private

Internal implementation of count().

See the description of count() for more info.

◆ visit() [1/68]

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

◆ visit() [2/68]

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

◆ visit() [3/68]

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

◆ visit() [4/68]

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

◆ visit() [5/68]

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

◆ visit() [6/68]

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

◆ visit() [7/68]

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

◆ visit() [8/68]

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

◆ visit() [9/68]

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

◆ visit() [10/68]

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

◆ visit() [11/68]

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

◆ visit() [12/68]

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

◆ visit() [13/68]

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

◆ visit() [14/68]

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

◆ visit() [15/68]

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

◆ visit() [16/68]

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

◆ visit() [17/68]

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

◆ visit() [18/68]

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

◆ visit() [19/68]

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

◆ visit() [20/68]

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

◆ visit() [21/68]

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

◆ visit() [22/68]

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

◆ visit() [23/68]

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

◆ visit() [24/68]

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

◆ visit() [25/68]

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

◆ visit() [26/68]

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

◆ visit() [27/68]

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

◆ visit() [28/68]

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

◆ visit() [29/68]

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

◆ visit() [30/68]

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

◆ visit() [31/68]

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

◆ visit() [32/68]

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

◆ visit() [33/68]

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

◆ visit() [34/68]

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

◆ visit() [35/68]

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

◆ visit() [36/68]

void retdec::llvmir2hll::StatementsCounter::visit ( ShPtr< GlobalVarDef varDef)
overrideprivatevirtual

◆ visit() [37/68]

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

◆ visit() [38/68]

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

◆ visit() [39/68]

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

◆ visit() [40/68]

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

◆ visit() [41/68]

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

◆ visit() [42/68]

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

◆ visit() [43/68]

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

◆ visit() [44/68]

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

◆ visit() [45/68]

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

◆ visit() [46/68]

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

◆ visit() [47/68]

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

◆ visit() [48/68]

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

◆ visit() [49/68]

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

◆ visit() [50/68]

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

◆ visit() [51/68]

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

◆ visit() [52/68]

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

◆ visit() [53/68]

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

◆ visit() [54/68]

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

◆ visit() [55/68]

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

◆ visit() [56/68]

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

◆ visit() [57/68]

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

◆ visit() [58/68]

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

◆ visit() [59/68]

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

◆ visit() [60/68]

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

◆ visit() [61/68]

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

◆ visit() [62/68]

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

◆ visit() [63/68]

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

◆ visit() [64/68]

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

◆ visit() [65/68]

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

◆ visit() [66/68]

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

◆ visit() [67/68]

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

◆ visit() [68/68]

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

Member Data Documentation

◆ includeEmptyStmts

bool retdec::llvmir2hll::StatementsCounter::includeEmptyStmts
private

Should we also count empty statements?

◆ numOfStmts

unsigned retdec::llvmir2hll::StatementsCounter::numOfStmts
private

Counter of the number of statements.

◆ recursive

bool retdec::llvmir2hll::StatementsCounter::recursive
private

Should we also visit nested statements (in compound statements)?


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