7 #ifndef RETDEC_ITANIUM_AST_CTYPES_PARSER_H
8 #define RETDEC_ITANIUM_AST_CTYPES_PARSER_H
13 namespace itanium_demangle {
14 class FunctionEncoding;
38 const std::string &name,
39 const llvm::itanium_demangle::Node *ast,
40 std::unique_ptr<ctypes::Module> &
module,
47 const std::string &mangledName,
const llvm::itanium_demangle::FunctionEncoding *functionEncodingNode);
50 llvm::itanium_demangle::NodeArray node,
bool &isVarArg);
53 const llvm::itanium_demangle::Node *typeNode);
56 const std::string &name);
59 const std::string &name);
62 const llvm::itanium_demangle::PointerType *typeNode);
65 const llvm::itanium_demangle::ReferenceType *typeNode);
68 const llvm::itanium_demangle::NameType *typeNode);
71 const llvm::itanium_demangle::ArrayType *typeNode);
74 const llvm::itanium_demangle::NodeOrString *dimensions);
77 const llvm::itanium_demangle::FunctionType *typeNode);
80 llvm::itanium_demangle::NodeArray parameters,
Base class for all AST to ctypes parsers.
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: itanium_ast_ctypes_parser.h:33
ctypes::FunctionType::Parameters parseFuncTypeParameters(llvm::itanium_demangle::NodeArray parameters, bool &isVarArg)
Definition: itanium_ast_ctypes_parser.cpp:329
unsigned parseDimension(const llvm::itanium_demangle::NodeOrString *dimensions)
Definition: itanium_ast_ctypes_parser.cpp:291
std::shared_ptr< ctypes::Type > parseReference(const llvm::itanium_demangle::ReferenceType *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:197
std::shared_ptr< ctypes::ArrayType > parseArrayType(const llvm::itanium_demangle::ArrayType *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:270
std::shared_ptr< ctypes::Function > parseFunction(const std::string &mangledName, const llvm::itanium_demangle::FunctionEncoding *functionEncodingNode)
Definition: itanium_ast_ctypes_parser.cpp:85
std::shared_ptr< ctypes::PointerType > parsePointer(const llvm::itanium_demangle::PointerType *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:186
std::shared_ptr< ctypes::FunctionType > parseFuntionType(const llvm::itanium_demangle::FunctionType *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:316
std::shared_ptr< ctypes::IntegralType > parseIntegralType(const std::string &name)
Definition: itanium_ast_ctypes_parser.cpp:166
std::shared_ptr< ctypes::Type > parseType(const llvm::itanium_demangle::Node *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:128
std::shared_ptr< ctypes::FloatingPointType > parseFloatingPointType(const std::string &name)
Definition: itanium_ast_ctypes_parser.cpp:176
ctypes::Function::Parameters parseFunctionParameters(llvm::itanium_demangle::NodeArray node, bool &isVarArg)
Definition: itanium_ast_ctypes_parser.cpp:106
ItaniumAstCtypesParser()=default
std::shared_ptr< ctypes::Function > parseAsFunction(const std::string &name, const llvm::itanium_demangle::Node *ast, std::unique_ptr< ctypes::Module > &module, const TypeWidths &typeWidths={}, const TypeSignedness &typeSignedness={}, unsigned defaultBitWidth=0)
Definition: itanium_ast_ctypes_parser.cpp:59
std::shared_ptr< ctypes::Type > parseNameTypeNode(const llvm::itanium_demangle::NameType *typeNode)
Definition: itanium_ast_ctypes_parser.cpp:215
ShPtr< Module > module
The current module.
Definition: hll_writer.cpp:100
Definition: itanium_ast_ctypes_parser.h:12
Definition: archive_wrapper.h:19