7 #ifndef RETDEC_BIN2LLVMIR_PROVIDERS_DEMANGLER_H
8 #define RETDEC_BIN2LLVMIR_PROVIDERS_DEMANGLER_H
12 #include <llvm/IR/Module.h>
38 std::shared_ptr<retdec::ctypes::Function>>;
42 llvm::Module *llvmModule,
44 const std::shared_ptr<ctypesparser::TypeConfig> &typeConfig,
45 std::unique_ptr<retdec::demangler::Demangler> demangler);
54 llvm::Type *
getLlvmType(std::shared_ptr<retdec::ctypes::Type> type);
73 const std::shared_ptr<ctypesparser::TypeConfig> &typeConfig);
78 const std::shared_ptr<ctypesparser::TypeConfig> &typeConfig);
83 const std::shared_ptr<ctypesparser::TypeConfig> &typeConfig);
100 llvm::Module *llvmModule,
102 const std::shared_ptr<ctypesparser::TypeConfig> &typeConfig);
Config DB provider for bin2llvmirl.
Class for creating demanglers.
Definition: demangler.h:68
static std::unique_ptr< Demangler > getMicrosoftDemangler(llvm::Module *m, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig)
Crates new instance of MicrosoftDemangler.
Definition: demangler.cpp:96
static std::unique_ptr< Demangler > getBorlandDemangler(llvm::Module *m, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig)
Crates new instance of BorlandDemangler.
Definition: demangler.cpp:109
static std::unique_ptr< Demangler > getItaniumDemangler(llvm::Module *m, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig)
Crates new instance of ItaniumDemangler.
Definition: demangler.cpp:83
Definition: demangler.h:97
static std::map< llvm::Module *, std::unique_ptr< Demangler > > _module2demangler
Mapping of modules to demanglers associated with them.
Definition: demangler.h:113
static Demangler * getDemangler(llvm::Module *m)
Definition: demangler.cpp:156
static void clear()
Definition: demangler.cpp:181
static Demangler * addDemangler(llvm::Module *llvmModule, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig)
Definition: demangler.cpp:129
Definition: demangler.h:34
Config * _config
Definition: demangler.h:58
std::pair< llvm::Function *, std::shared_ptr< retdec::ctypes::Function > > FunctionPair
Definition: demangler.h:38
llvm::Type * getLlvmType(std::shared_ptr< retdec::ctypes::Type > type)
Definition: demangler.cpp:63
Demangler(llvm::Module *llvmModule, Config *config, const std::shared_ptr< ctypesparser::TypeConfig > &typeConfig, std::unique_ptr< retdec::demangler::Demangler > demangler)
Definition: demangler.cpp:26
std::string demangleToString(const std::string &mangled)
Definition: demangler.cpp:37
std::shared_ptr< ctypesparser::TypeConfig > _typeConfig
Definition: demangler.h:60
demangler::Demangler * getDemangler()
Definition: demangler.cpp:70
llvm::Module * _llvmModule
Definition: demangler.h:57
std::unique_ptr< demangler::Demangler > _demangler
Definition: demangler.h:61
std::unique_ptr< retdec::ctypes::Module > _ctypesModule
Definition: demangler.h:59
FunctionPair getPairFunction(const std::string &mangled)
Definition: demangler.cpp:42
A base class of all C types.
Definition: type.h:22
Definition: demangler_base.h:31
File to include for demangling work.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19
Defines type widths and singnedness for types that are implementation specific.