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

An obtainer of information about function calls. More...

#include <calls_obtainer.h>

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

Static Public Member Functions

static CallVector getCalls (ShPtr< Value > value)
 Returns a list of all function calls in the given value. More...
 
static bool hasCalls (ShPtr< Value > value)
 Returns true if the selected value contains some function calls, false otherwise. More...
 

Private Member Functions

 CallsObtainer ()
 Constructs a new obtainer. More...
 
Visitor Interface
virtual void visit (ShPtr< CallExpr > expr) 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 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< 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< 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
 
 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

CallVector foundCalls
 Found function calls. 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

An obtainer of information about function calls.

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

Constructor & Destructor Documentation

◆ CallsObtainer()

retdec::llvmir2hll::CallsObtainer::CallsObtainer ( )
private

Constructs a new obtainer.

Member Function Documentation

◆ getCalls()

CallVector retdec::llvmir2hll::CallsObtainer::getCalls ( ShPtr< Value value)
static

Returns a list of all function calls in the given value.

Nested function calls are not considered, e.g. for

func1(1, 2, func2("test"), var) + func3()

it returns

[func1(1, 2, func2("test"), var), func3()]

If value is a statement, nested statements or successors are not visited.

Function calls are obtained from the left to the right (i.e. in the order Visitor visits them).

Preconditions
  • value is non-null

◆ hasCalls()

bool retdec::llvmir2hll::CallsObtainer::hasCalls ( ShPtr< Value value)
static

Returns true if the selected value contains some function calls, false otherwise.

See the description of getCalls() for more information.

◆ visit() [1/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [2/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [3/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [4/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [5/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [6/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [7/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [8/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [9/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [10/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [11/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [12/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [13/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [14/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [15/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [16/70]

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

◆ visit() [17/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [18/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [19/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [20/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [21/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [22/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [23/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [24/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [25/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [26/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [27/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [28/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [29/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [30/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [31/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [32/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [33/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [34/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [35/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [36/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [37/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [38/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [39/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [40/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [41/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [42/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [43/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [44/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [45/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [46/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [47/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [48/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [49/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [50/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [51/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [52/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [53/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [54/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [55/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [56/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [57/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [58/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [59/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [60/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [61/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [62/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [63/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [64/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [65/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [66/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [67/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [68/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [69/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [70/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

Member Data Documentation

◆ foundCalls

CallVector retdec::llvmir2hll::CallsObtainer::foundCalls
private

Found function calls.


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