7 #ifndef RETDEC_MS_AST_CTYPES_PARSER_H
8 #define RETDEC_MS_AST_CTYPES_PARSER_H
10 #include <llvm/Demangle/MicrosoftDemangleNodes.h>
26 const std::string &mangledName,
27 llvm::ms_demangle::SymbolNode *ast,
28 std::unique_ptr<ctypes::Module> &
module,
35 const std::string &mangledName,
36 llvm::ms_demangle::FunctionSymbolNode *functionSymbolNode);
39 llvm::ms_demangle::CallingConv callConv);
42 llvm::ms_demangle::Node *typeNode);
45 llvm::ms_demangle::ArrayTypeNode *typeNode);
48 llvm::ms_demangle::PrimitiveTypeNode *primitiveTypeNode);
51 llvm::ms_demangle::PrimitiveTypeNode *integralTypeNode);
54 llvm::ms_demangle::PrimitiveTypeNode *floatingPointTypeNode);
57 llvm::ms_demangle::NodeArrayNode *parameters);
60 llvm::ms_demangle::PointerTypeNode *typeNode);
63 llvm::ms_demangle::Node *node);
66 llvm::ms_demangle::FunctionSignatureNode *funcSignature);
69 llvm::ms_demangle::NodeArrayNode *parameters);
71 std::string
getTypeName(llvm::ms_demangle::PrimitiveKind type)
const;
Base class for all AST to ctypes parsers.
A representation of a C call convention.
Definition: call_convention.h:19
std::vector< std::shared_ptr< Type > > Parameters
Definition: function_type.h:28
std::vector< Parameter > Parameters
Definition: function.h:32
std::map< std::string, ctypes::IntegralType::Signess > TypeSignedness
Set container for C-types' signedness.
Definition: ctypes_parser.h:30
unsigned defaultBitWidth
Bitwidth used for types not in typeWidths.
Definition: ctypes_parser.h:47
std::map< std::string, unsigned > TypeWidths
Set container for C-types' bit width.
Definition: ctypes_parser.h:28
TypeSignedness typeSignedness
C-types' signedness.
Definition: ctypes_parser.h:45
TypeWidths typeWidths
C-types' bit widths.
Definition: ctypes_parser.h:43
Definition: ast_ctypes_parser.h:18
Definition: ms_ast_ctypes_parser.h:21
std::shared_ptr< ctypes::Type > parsePointerType(llvm::ms_demangle::PointerTypeNode *typeNode)
Definition: ms_ast_ctypes_parser.cpp:265
ctypes::FunctionType::Parameters parseFuncTypeParameters(llvm::ms_demangle::NodeArrayNode *parameters)
Definition: ms_ast_ctypes_parser.cpp:344
std::string getTypeName(llvm::ms_demangle::PrimitiveKind type) const
Definition: ms_ast_ctypes_parser.cpp:305
MsToCtypesParser()=default
std::shared_ptr< ctypes::FloatingPointType > parseFloatingPointType(llvm::ms_demangle::PrimitiveTypeNode *floatingPointTypeNode)
Definition: ms_ast_ctypes_parser.cpp:231
ctypes::CallConvention parseCallConvention(llvm::ms_demangle::CallingConv callConv)
Definition: ms_ast_ctypes_parser.cpp:105
std::shared_ptr< ctypes::FunctionType > parseFuncType(llvm::ms_demangle::FunctionSignatureNode *funcSignature)
Definition: ms_ast_ctypes_parser.cpp:333
std::shared_ptr< ctypes::Type > parseType(llvm::ms_demangle::Node *typeNode)
Definition: ms_ast_ctypes_parser.cpp:134
ctypes::Function::Parameters parseFunctionParameters(llvm::ms_demangle::NodeArrayNode *parameters)
Definition: ms_ast_ctypes_parser.cpp:242
std::shared_ptr< ctypes::Function > parseFunction(const std::string &mangledName, llvm::ms_demangle::FunctionSymbolNode *functionSymbolNode)
Definition: ms_ast_ctypes_parser.cpp:81
std::shared_ptr< ctypes::Type > parseNamedType(llvm::ms_demangle::Node *node)
Definition: ms_ast_ctypes_parser.cpp:294
std::shared_ptr< ctypes::Type > parseArrayType(llvm::ms_demangle::ArrayTypeNode *typeNode)
Definition: ms_ast_ctypes_parser.cpp:161
std::shared_ptr< ctypes::Function > parseAsFunction(const std::string &mangledName, llvm::ms_demangle::SymbolNode *ast, std::unique_ptr< ctypes::Module > &module, const TypeWidths &typeWidths={}, const TypeSignedness &typeSignedness={}, unsigned defaultBitWidth=0)
Definition: ms_ast_ctypes_parser.cpp:54
std::shared_ptr< ctypes::Type > parsePrimitiveType(llvm::ms_demangle::PrimitiveTypeNode *primitiveTypeNode)
Definition: ms_ast_ctypes_parser.cpp:183
std::shared_ptr< ctypes::IntegralType > parseIntegralType(llvm::ms_demangle::PrimitiveTypeNode *integralTypeNode)
Definition: ms_ast_ctypes_parser.cpp:219
ShPtr< Module > module
The current module.
Definition: hll_writer.cpp:100
Definition: archive_wrapper.h:19