retdec
Static Public Member Functions | Static Private Attributes | List of all members
retdec::bin2llvmir::DemanglerProvider Class Reference

#include <demangler.h>

Collaboration diagram for retdec::bin2llvmir::DemanglerProvider:
Collaboration graph
[legend]

Static Public Member Functions

static DemangleraddDemangler (llvm::Module *llvmModule, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig)
 
static DemanglergetDemangler (llvm::Module *m)
 
static bool getDemangler (llvm::Module *m, Demangler *&d)
 
static void clear ()
 

Static Private Attributes

static std::map< llvm::Module *, std::unique_ptr< Demangler > > _module2demangler
 Mapping of modules to demanglers associated with them. More...
 

Detailed Description

Completely static object – all members and methods are static -> it can be used by anywhere in bin2llvmirl. It provides mapping of modules to demanglers associated with them.

Attention
Even though this is accessible anywhere in bin2llvmirl, use it only in LLVM passes' prologs to initialize pass-local demangler object. All analyses, utils and other modules MUST NOT use it. If they need to work with demangler, they should accept it in parameter.

Member Function Documentation

◆ addDemangler()

Demangler * retdec::bin2llvmir::DemanglerProvider::addDemangler ( llvm::Module *  llvmModule,
Config config,
const std::shared_ptr< ctypesparser::TypeConfig > &  typeConfig 
)
static

Create and add to provider a demangler for the given module m and tools t.

Returns
Created and added demangler or nullptr if something went wrong and it was not successfully created.

◆ clear()

void retdec::bin2llvmir::DemanglerProvider::clear ( )
static

Clear all stored data.

◆ getDemangler() [1/2]

Demangler * retdec::bin2llvmir::DemanglerProvider::getDemangler ( llvm::Module *  m)
static
Returns
Get demangler associated with the given module m or nullptr if there is no associated demangler.

◆ getDemangler() [2/2]

bool retdec::bin2llvmir::DemanglerProvider::getDemangler ( llvm::Module *  m,
Demangler *&  d 
)
static

Get demangler d associated with the module m.

Parameters
[in]mModule for which to get demangler.
[out]dSet to demangler associated with m module, or nullptr if there is no associated demangler.
Returns
True if demangler d was set ok and can be used. False otherwise.

Member Data Documentation

◆ _module2demangler

std::map< Module *, std::unique_ptr< Demangler > > retdec::bin2llvmir::DemanglerProvider::_module2demangler
staticprivate

Mapping of modules to demanglers associated with them.


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