retdec
Static Public Member Functions | Protected Member Functions | List of all members
retdec::llvmir2hll::DefaultSemantics Class Reference

A default semantics which doesn't know anything. More...

#include <default_semantics.h>

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

Public Member Functions

Semantics Interface
virtual std::string getId () const override
 Returns the ID of the semantics. More...
 
virtual std::optional< std::string > getMainFuncName () const override
 Returns the name of the main function. More...
 
virtual std::optional< std::string > getCHeaderFileForFunc (const std::string &funcName) const override
 Returns the C header file for the given function. More...
 
virtual std::optional< bool > funcNeverReturns (const std::string &funcName) const override
 Gets the information whether the given function never returns. More...
 
virtual std::optional< std::string > getNameOfVarStoringResult (const std::string &funcName) const override
 Returns an appropriate name of the variable that stores the result of calls to the given function. More...
 
virtual std::optional< std::string > getNameOfParam (const std::string &funcName, unsigned paramPos) const override
 Returns an appropriate name of the given function's parameter. More...
 
virtual std::optional< IntStringMapgetSymbolicNamesForParam (const std::string &funcName, unsigned paramPos) const override
 Returns a mapping of integers into their symbolic names for the given parameter of the given function. More...
 
- Public Member Functions inherited from retdec::llvmir2hll::Semantics
virtual ~Semantics ()=default
 

Static Public Member Functions

static ShPtr< Semanticscreate ()
 Creates a new semantics. More...
 

Protected Member Functions

 DefaultSemantics ()
 Constructs the semantics. More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::Semantics
 Semantics ()=default
 

Detailed Description

A default semantics which doesn't know anything.

This class overrides all the pure virtual functions from Semantics so that they always return an "I don't know" answer. Use this class as the base class of your semantics if you just want to override selected functions only.

Instances of this class have reference object semantics.

Constructor & Destructor Documentation

◆ DefaultSemantics()

retdec::llvmir2hll::DefaultSemantics::DefaultSemantics ( )
protected

Constructs the semantics.

Member Function Documentation

◆ create()

ShPtr< Semantics > retdec::llvmir2hll::DefaultSemantics::create ( )
static

Creates a new semantics.

◆ funcNeverReturns()

std::optional< bool > retdec::llvmir2hll::DefaultSemantics::funcNeverReturns ( const std::string &  funcName) const
overridevirtual

Gets the information whether the given function never returns.

Returns
true if the given function never returns, false if the function may return, and std::nullopt otherwise.
Parameters
[in]funcNameName of the function.

For example, semantics describing the standard C library may return true for "exit".

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::WinAPISemantics, and retdec::llvmir2hll::LibcSemantics.

◆ getCHeaderFileForFunc()

std::optional< std::string > retdec::llvmir2hll::DefaultSemantics::getCHeaderFileForFunc ( const std::string &  funcName) const
overridevirtual

Returns the C header file for the given function.

Returns
"file" if the header file is known, std::nullopt otherwise.
Parameters
[in]funcNameName of the function.

For example, semantics describing the standard C library may return "stdio.h" for "printf".

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, and retdec::llvmir2hll::GCCGeneralSemantics.

◆ getId()

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

◆ getMainFuncName()

std::optional< std::string > retdec::llvmir2hll::DefaultSemantics::getMainFuncName ( ) const
overridevirtual

Returns the name of the main function.

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::LibcSemantics.

◆ getNameOfParam()

std::optional< std::string > retdec::llvmir2hll::DefaultSemantics::getNameOfParam ( const std::string &  funcName,
unsigned  paramPos 
) const
overridevirtual

Returns an appropriate name of the given function's parameter.

Returns
"name" if the name is known, std::nullopt otherwise.
Parameters
[in]funcNameName of the function.
[in]paramPosPosition of the parameter.

For example, semantics describing the standard C library may return "file_path" for the first parameter of "fopen".

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, and retdec::llvmir2hll::GCCGeneralSemantics.

◆ getNameOfVarStoringResult()

std::optional< std::string > retdec::llvmir2hll::DefaultSemantics::getNameOfVarStoringResult ( const std::string &  funcName) const
overridevirtual

Returns an appropriate name of the variable that stores the result of calls to the given function.

Returns
"name" if the name is known, std::nullopt otherwise.
Parameters
[in]funcNameName of the function.

For example, semantics describing the standard C library may return "c" for "getchar".

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, and retdec::llvmir2hll::GCCGeneralSemantics.

◆ getSymbolicNamesForParam()

std::optional< IntStringMap > retdec::llvmir2hll::DefaultSemantics::getSymbolicNamesForParam ( const std::string &  funcName,
unsigned  paramPos 
) const
overridevirtual

Returns a mapping of integers into their symbolic names for the given parameter of the given function.

Returns
map if the mapping is known, std::nullopt otherwise.
Parameters
[in]funcNameName of the function.
[in]paramPosPosition of the parameter.

For example, a semantics may return

1 -> LOCK_SH
2 -> LOCK_EX
4 -> LOCK_NB
8 -> LOCK_UN

for "flock" and 2.

Implements retdec::llvmir2hll::Semantics.

Reimplemented in retdec::llvmir2hll::WinAPISemantics, retdec::llvmir2hll::LibcSemantics, and retdec::llvmir2hll::GCCGeneralSemantics.


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