retdec
Public Member Functions | Private Types | Private Attributes | List of all members
retdec::demangler::borland::Context Class Reference

Storage for functions, types and names. Used for cacheing. More...

#include <context.h>

Collaboration diagram for retdec::demangler::borland::Context:
Collaboration graph
[legend]

Public Member Functions

 Context ()=default
 
std::shared_ptr< NodegetFunction (const std::string &mangled) const
 
void addFunction (const std::string &mangled, const std::shared_ptr< Node > &function)
 
Built-in types.
std::shared_ptr< BuiltInTypeNodegetBuiltInType (const std::string &name, const Qualifiers &quals) const
 
void addBuiltInType (const std::shared_ptr< BuiltInTypeNode > &type)
 
Char type.
std::shared_ptr< CharTypeNodegetCharType (const ThreeStateSignedness &signedness, const Qualifiers &quals) const
 
void addCharType (const std::shared_ptr< CharTypeNode > &type)
 
Integral type.
std::shared_ptr< IntegralTypeNodegetIntegralType (const std::string &name, bool isUnsigned, const Qualifiers &quals) const
 
void addIntegralType (const std::shared_ptr< IntegralTypeNode > &type)
 
Floating point number types.
std::shared_ptr< FloatTypeNodegetFloatType (const std::string &name, const Qualifiers &quals) const
 
void addFloatType (const std::shared_ptr< FloatTypeNode > &type)
 
Pointer types.
std::shared_ptr< PointerTypeNodegetPointerType (std::shared_ptr< Node > pointee, const Qualifiers &quals) const
 
void addPointerType (const std::shared_ptr< PointerTypeNode > &type)
 
Reference types.
std::shared_ptr< ReferenceTypeNodegetReferenceType (std::shared_ptr< Node > pointee) const
 
void addReferenceType (const std::shared_ptr< ReferenceTypeNode > &type)
 
R-value reference types.
std::shared_ptr< RReferenceTypeNodegetRReferenceType (std::shared_ptr< Node > pointee) const
 
void addRReferenceType (const std::shared_ptr< RReferenceTypeNode > &type)
 
Named types.
std::shared_ptr< NamedTypeNodegetNamedType (const std::string &name, const Qualifiers &quals) const
 
void addNamedType (const std::string &mangled, const Qualifiers &quals, const std::shared_ptr< NamedTypeNode > &type)
 
Names.
std::shared_ptr< NameNodegetName (const std::string &name) const
 
void addName (const std::shared_ptr< NameNode > &name)
 
Nested names.
std::shared_ptr< NestedNameNodegetNestedName (std::shared_ptr< Node > super, std::shared_ptr< Node > name)
 
void addNestedName (const std::shared_ptr< NestedNameNode > &name)
 
Array types.
std::shared_ptr< ArrayNodegetArray (std::shared_ptr< Node > pointee, unsigned size, const Qualifiers &quals)
 
void addArrayType (const std::shared_ptr< ArrayNode > &array)
 

Private Types

using BuiltInTypeNodes = std::map< std::tuple< std::string, bool, bool >, std::shared_ptr< BuiltInTypeNode > >
 
using CharTypeNodes = std::map< std::tuple< ThreeStateSignedness, bool, bool >, std::shared_ptr< CharTypeNode > >
 
using IntegralTypeNodes = std::map< std::tuple< std::string, bool, bool, bool >, std::shared_ptr< IntegralTypeNode > >
 
using PointerTypeNodes = std::map< std::tuple< std::shared_ptr< Node >, bool, bool >, std::shared_ptr< PointerTypeNode > >
 
using ReferenceTypeNodes = std::map< std::shared_ptr< Node >, std::shared_ptr< ReferenceTypeNode > >
 
using RReferenceTypeNodes = std::map< std::shared_ptr< Node >, std::shared_ptr< RReferenceTypeNode > >
 
using NamedTypeNodes = std::map< std::tuple< std::string, bool, bool >, std::shared_ptr< NamedTypeNode > >
 
using FunctionNodes = std::map< std::string, std::shared_ptr< Node > >
 
using NameNodes = std::map< std::string, std::shared_ptr< NameNode > >
 
using NestedNameNodes = std::map< std::tuple< std::shared_ptr< Node >, std::shared_ptr< Node > >, std::shared_ptr< NestedNameNode > >
 
using ArrayNodes = std::map< std::tuple< std::shared_ptr< Node >, unsigned, bool, bool >, std::shared_ptr< ArrayNode > >
 

Private Attributes

BuiltInTypeNodes builtInTypes
 
CharTypeNodes charTypes
 
IntegralTypeNodes integralTypes
 
PointerTypeNodes pointerTypes
 
ReferenceTypeNodes referenceTypes
 
RReferenceTypeNodes rReferenceTypes
 
NamedTypeNodes namedTypes
 
FunctionNodes functions
 
NameNodes nameNodes
 
NestedNameNodes nestedNameNodes
 
ArrayNodes arrayNodes
 

Detailed Description

Storage for functions, types and names. Used for cacheing.

Member Typedef Documentation

◆ ArrayNodes

using retdec::demangler::borland::Context::ArrayNodes = std::map< std::tuple<std::shared_ptr<Node>, unsigned, bool, bool>, std::shared_ptr<ArrayNode> >
private

◆ BuiltInTypeNodes

using retdec::demangler::borland::Context::BuiltInTypeNodes = std::map< std::tuple<std::string, bool, bool>, std::shared_ptr<BuiltInTypeNode> >
private

◆ CharTypeNodes

using retdec::demangler::borland::Context::CharTypeNodes = std::map< std::tuple<ThreeStateSignedness, bool, bool>, std::shared_ptr<CharTypeNode> >
private

◆ FunctionNodes

using retdec::demangler::borland::Context::FunctionNodes = std::map< std::string, std::shared_ptr<Node> >
private

◆ IntegralTypeNodes

using retdec::demangler::borland::Context::IntegralTypeNodes = std::map< std::tuple<std::string, bool, bool, bool>, std::shared_ptr<IntegralTypeNode> >
private

◆ NamedTypeNodes

using retdec::demangler::borland::Context::NamedTypeNodes = std::map< std::tuple<std::string, bool, bool>, std::shared_ptr<NamedTypeNode> >
private

◆ NameNodes

using retdec::demangler::borland::Context::NameNodes = std::map< std::string, std::shared_ptr<NameNode> >
private

◆ NestedNameNodes

using retdec::demangler::borland::Context::NestedNameNodes = std::map< std::tuple<std::shared_ptr<Node>, std::shared_ptr<Node> >, std::shared_ptr<NestedNameNode> >
private

◆ PointerTypeNodes

using retdec::demangler::borland::Context::PointerTypeNodes = std::map< std::tuple<std::shared_ptr<Node>, bool, bool>, std::shared_ptr<PointerTypeNode> >
private

◆ ReferenceTypeNodes

using retdec::demangler::borland::Context::ReferenceTypeNodes = std::map< std::shared_ptr<Node>, std::shared_ptr<ReferenceTypeNode> >
private

◆ RReferenceTypeNodes

using retdec::demangler::borland::Context::RReferenceTypeNodes = std::map< std::shared_ptr<Node>, std::shared_ptr<RReferenceTypeNode> >
private

Constructor & Destructor Documentation

◆ Context()

retdec::demangler::borland::Context::Context ( )
default

Member Function Documentation

◆ addArrayType()

void retdec::demangler::borland::Context::addArrayType ( const std::shared_ptr< ArrayNode > &  array)

◆ addBuiltInType()

void retdec::demangler::borland::Context::addBuiltInType ( const std::shared_ptr< BuiltInTypeNode > &  type)

◆ addCharType()

void retdec::demangler::borland::Context::addCharType ( const std::shared_ptr< CharTypeNode > &  type)

◆ addFloatType()

void retdec::demangler::borland::Context::addFloatType ( const std::shared_ptr< FloatTypeNode > &  type)

◆ addFunction()

void retdec::demangler::borland::Context::addFunction ( const std::string &  mangled,
const std::shared_ptr< Node > &  function 
)

◆ addIntegralType()

void retdec::demangler::borland::Context::addIntegralType ( const std::shared_ptr< IntegralTypeNode > &  type)

◆ addName()

void retdec::demangler::borland::Context::addName ( const std::shared_ptr< NameNode > &  name)

◆ addNamedType()

void retdec::demangler::borland::Context::addNamedType ( const std::string &  mangled,
const Qualifiers quals,
const std::shared_ptr< NamedTypeNode > &  type 
)

◆ addNestedName()

void retdec::demangler::borland::Context::addNestedName ( const std::shared_ptr< NestedNameNode > &  name)

◆ addPointerType()

void retdec::demangler::borland::Context::addPointerType ( const std::shared_ptr< PointerTypeNode > &  type)

◆ addReferenceType()

void retdec::demangler::borland::Context::addReferenceType ( const std::shared_ptr< ReferenceTypeNode > &  type)

◆ addRReferenceType()

void retdec::demangler::borland::Context::addRReferenceType ( const std::shared_ptr< RReferenceTypeNode > &  type)

◆ getArray()

std::shared_ptr< ArrayNode > retdec::demangler::borland::Context::getArray ( std::shared_ptr< Node pointee,
unsigned  size,
const Qualifiers quals 
)

◆ getBuiltInType()

std::shared_ptr< BuiltInTypeNode > retdec::demangler::borland::Context::getBuiltInType ( const std::string &  name,
const Qualifiers quals 
) const

◆ getCharType()

std::shared_ptr< CharTypeNode > retdec::demangler::borland::Context::getCharType ( const ThreeStateSignedness signedness,
const Qualifiers quals 
) const

◆ getFloatType()

std::shared_ptr< FloatTypeNode > retdec::demangler::borland::Context::getFloatType ( const std::string &  name,
const Qualifiers quals 
) const

◆ getFunction()

std::shared_ptr< Node > retdec::demangler::borland::Context::getFunction ( const std::string &  mangled) const

◆ getIntegralType()

std::shared_ptr< IntegralTypeNode > retdec::demangler::borland::Context::getIntegralType ( const std::string &  name,
bool  isUnsigned,
const Qualifiers quals 
) const

◆ getName()

std::shared_ptr< NameNode > retdec::demangler::borland::Context::getName ( const std::string &  name) const

◆ getNamedType()

std::shared_ptr< NamedTypeNode > retdec::demangler::borland::Context::getNamedType ( const std::string &  name,
const Qualifiers quals 
) const

◆ getNestedName()

std::shared_ptr< NestedNameNode > retdec::demangler::borland::Context::getNestedName ( std::shared_ptr< Node super,
std::shared_ptr< Node name 
)

◆ getPointerType()

std::shared_ptr< PointerTypeNode > retdec::demangler::borland::Context::getPointerType ( std::shared_ptr< Node pointee,
const Qualifiers quals 
) const

◆ getReferenceType()

std::shared_ptr< ReferenceTypeNode > retdec::demangler::borland::Context::getReferenceType ( std::shared_ptr< Node pointee) const

◆ getRReferenceType()

std::shared_ptr< RReferenceTypeNode > retdec::demangler::borland::Context::getRReferenceType ( std::shared_ptr< Node pointee) const

Member Data Documentation

◆ arrayNodes

ArrayNodes retdec::demangler::borland::Context::arrayNodes
private

◆ builtInTypes

BuiltInTypeNodes retdec::demangler::borland::Context::builtInTypes
private

◆ charTypes

CharTypeNodes retdec::demangler::borland::Context::charTypes
private

◆ functions

FunctionNodes retdec::demangler::borland::Context::functions
private

◆ integralTypes

IntegralTypeNodes retdec::demangler::borland::Context::integralTypes
private

◆ namedTypes

NamedTypeNodes retdec::demangler::borland::Context::namedTypes
private

◆ nameNodes

NameNodes retdec::demangler::borland::Context::nameNodes
private

◆ nestedNameNodes

NestedNameNodes retdec::demangler::borland::Context::nestedNameNodes
private

◆ pointerTypes

PointerTypeNodes retdec::demangler::borland::Context::pointerTypes
private

◆ referenceTypes

ReferenceTypeNodes retdec::demangler::borland::Context::referenceTypes
private

◆ rReferenceTypes

RReferenceTypeNodes retdec::demangler::borland::Context::rReferenceTypes
private

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