retdec
Public Member Functions | Private Member Functions | List of all members
retdec::demangler::MsToCtypesParser Class Reference

#include <ms_ast_ctypes_parser.h>

Inheritance diagram for retdec::demangler::MsToCtypesParser:
Inheritance graph
[legend]
Collaboration diagram for retdec::demangler::MsToCtypesParser:
Collaboration graph
[legend]

Public Member Functions

 MsToCtypesParser ()=default
 
std::shared_ptr< ctypes::FunctionparseAsFunction (const std::string &mangledName, llvm::ms_demangle::SymbolNode *ast, std::unique_ptr< ctypes::Module > &module, const TypeWidths &typeWidths={}, const TypeSignedness &typeSignedness={}, unsigned defaultBitWidth=0)
 
- Public Member Functions inherited from retdec::demangler::AstToCtypesParser
 AstToCtypesParser ()=default
 
- Public Member Functions inherited from retdec::ctypesparser::CTypesParser
virtual ~CTypesParser ()=default
 

Private Member Functions

std::shared_ptr< ctypes::FunctionparseFunction (const std::string &mangledName, llvm::ms_demangle::FunctionSymbolNode *functionSymbolNode)
 
ctypes::CallConvention parseCallConvention (llvm::ms_demangle::CallingConv callConv)
 
std::shared_ptr< ctypes::TypeparseType (llvm::ms_demangle::Node *typeNode)
 
std::shared_ptr< ctypes::TypeparseArrayType (llvm::ms_demangle::ArrayTypeNode *typeNode)
 
std::shared_ptr< ctypes::TypeparsePrimitiveType (llvm::ms_demangle::PrimitiveTypeNode *primitiveTypeNode)
 
std::shared_ptr< ctypes::IntegralTypeparseIntegralType (llvm::ms_demangle::PrimitiveTypeNode *integralTypeNode)
 
std::shared_ptr< ctypes::FloatingPointTypeparseFloatingPointType (llvm::ms_demangle::PrimitiveTypeNode *floatingPointTypeNode)
 
ctypes::Function::Parameters parseFunctionParameters (llvm::ms_demangle::NodeArrayNode *parameters)
 
std::shared_ptr< ctypes::TypeparsePointerType (llvm::ms_demangle::PointerTypeNode *typeNode)
 
std::shared_ptr< ctypes::TypeparseNamedType (llvm::ms_demangle::Node *node)
 
std::shared_ptr< ctypes::FunctionTypeparseFuncType (llvm::ms_demangle::FunctionSignatureNode *funcSignature)
 
ctypes::FunctionType::Parameters parseFuncTypeParameters (llvm::ms_demangle::NodeArrayNode *parameters)
 
std::string getTypeName (llvm::ms_demangle::PrimitiveKind type) const
 

Additional Inherited Members

- Public Types inherited from retdec::ctypesparser::CTypesParser
using TypeWidths = std::map< std::string, unsigned >
 Set container for C-types' bit width. More...
 
using TypeSignedness = std::map< std::string, ctypes::IntegralType::Signess >
 Set container for C-types' signedness. More...
 
- Protected Member Functions inherited from retdec::demangler::AstToCtypesParser
unsigned getBitWidth (const std::string &typeName) const
 
ctypes::IntegralType::Signess toSigness (bool isUnsigned) const
 
ctypes::IntegralType::Signess toSigness (const std::string &typeName) const
 
ctypes::FunctionType::VarArgness toVarArgness (bool isVarArg) const
 
- Protected Member Functions inherited from retdec::ctypesparser::CTypesParser
 CTypesParser ()
 Creates new C-types parser. More...
 
 CTypesParser (unsigned defaultBitWidth)
 Creates new C-types parser. More...
 
- Protected Attributes inherited from retdec::ctypesparser::CTypesParser
std::shared_ptr< retdec::ctypes::Contextcontext
 Container for already parsed functions, types. More...
 
TypeWidths typeWidths
 C-types' bit widths. More...
 
TypeSignedness typeSignedness
 C-types' signedness. More...
 
unsigned defaultBitWidth = 0
 Bitwidth used for types not in typeWidths. More...
 

Constructor & Destructor Documentation

◆ MsToCtypesParser()

retdec::demangler::MsToCtypesParser::MsToCtypesParser ( )
default

Member Function Documentation

◆ getTypeName()

std::string retdec::demangler::MsToCtypesParser::getTypeName ( llvm::ms_demangle::PrimitiveKind  type) const
private

◆ parseArrayType()

std::shared_ptr< ctypes::Type > retdec::demangler::MsToCtypesParser::parseArrayType ( llvm::ms_demangle::ArrayTypeNode *  typeNode)
private

◆ parseAsFunction()

std::shared_ptr< ctypes::Function > retdec::demangler::MsToCtypesParser::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 
)

◆ parseCallConvention()

ctypes::CallConvention retdec::demangler::MsToCtypesParser::parseCallConvention ( llvm::ms_demangle::CallingConv  callConv)
private

◆ parseFloatingPointType()

std::shared_ptr< ctypes::FloatingPointType > retdec::demangler::MsToCtypesParser::parseFloatingPointType ( llvm::ms_demangle::PrimitiveTypeNode *  floatingPointTypeNode)
private

◆ parseFunction()

std::shared_ptr< ctypes::Function > retdec::demangler::MsToCtypesParser::parseFunction ( const std::string &  mangledName,
llvm::ms_demangle::FunctionSymbolNode *  functionSymbolNode 
)
private

◆ parseFunctionParameters()

ctypes::Function::Parameters retdec::demangler::MsToCtypesParser::parseFunctionParameters ( llvm::ms_demangle::NodeArrayNode *  parameters)
private

◆ parseFuncType()

std::shared_ptr< ctypes::FunctionType > retdec::demangler::MsToCtypesParser::parseFuncType ( llvm::ms_demangle::FunctionSignatureNode *  funcSignature)
private

◆ parseFuncTypeParameters()

ctypes::FunctionType::Parameters retdec::demangler::MsToCtypesParser::parseFuncTypeParameters ( llvm::ms_demangle::NodeArrayNode *  parameters)
private

◆ parseIntegralType()

std::shared_ptr< ctypes::IntegralType > retdec::demangler::MsToCtypesParser::parseIntegralType ( llvm::ms_demangle::PrimitiveTypeNode *  integralTypeNode)
private

◆ parseNamedType()

std::shared_ptr< ctypes::Type > retdec::demangler::MsToCtypesParser::parseNamedType ( llvm::ms_demangle::Node *  node)
private

◆ parsePointerType()

std::shared_ptr< ctypes::Type > retdec::demangler::MsToCtypesParser::parsePointerType ( llvm::ms_demangle::PointerTypeNode *  typeNode)
private

◆ parsePrimitiveType()

std::shared_ptr< ctypes::Type > retdec::demangler::MsToCtypesParser::parsePrimitiveType ( llvm::ms_demangle::PrimitiveTypeNode *  primitiveTypeNode)
private

◆ parseType()

std::shared_ptr< ctypes::Type > retdec::demangler::MsToCtypesParser::parseType ( llvm::ms_demangle::Node *  typeNode)
private

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