nxt.mangling

ELF Symbol Name (De)Mangling.

Members

Aliases

Expr
alias Expr = string

Demangled Expression.

Classes

Demangler
class Demangler(R)

C++ Demangler.

Enums

CtorDtorName
enum CtorDtorName

TODO Use this

Functions

decodeCxxArrayType
R decodeCxxArrayType(Demangler!R x)
decodeCxxBareFunctionType
CxxBareFunctionType!R decodeCxxBareFunctionType(Demangler!R x)
decodeCxxBuiltinType
R decodeCxxBuiltinType(Demangler!R x)

Try to Decode C++ Builtin Type at r.

decodeCxxCVQualifiers
CXXCVQualifiers decodeCxxCVQualifiers(R r)

Decode <CV-qualifiers>

decodeCxxCallOffset
R decodeCxxCallOffset(Demangler!R x)
decodeCxxClassEnumType
R decodeCxxClassEnumType(Demangler!R x)
decodeCxxCtorDtorName
R decodeCxxCtorDtorName(Demangler!R x)
decodeCxxDecltype
R decodeCxxDecltype(Demangler!R x)
decodeCxxDescriminator
R decodeCxxDescriminator(Demangler!R x)
decodeCxxExprPrimary
R decodeCxxExprPrimary(Demangler!R x)
decodeCxxFunctionType
R decodeCxxFunctionType(Demangler!R x)

Try to Decode C++ Function Type at r.

decodeCxxLocalName
R decodeCxxLocalName(Demangler!R x)
decodeCxxMangledName
R decodeCxxMangledName(Demangler!R x)
decodeCxxName
R decodeCxxName(Demangler!R x)
decodeCxxNestedName
R decodeCxxNestedName(Demangler!R x)
decodeCxxNumber
R decodeCxxNumber(Demangler!R x)
decodeCxxOperatorName
R decodeCxxOperatorName(Demangler!R x)

Try to Decode C++ Operator at r.

decodeCxxPointerToMemberType
R decodeCxxPointerToMemberType(Demangler!R x)
decodeCxxPrefix
R decodeCxxPrefix(Demangler!R x)
decodeCxxRefQualifier
CxxRefQualifier decodeCxxRefQualifier(Demangler!R x)

Decode <ref-qualifier>

decodeCxxSourceName
R decodeCxxSourceName(Demangler!R x)

Decode Identifier <source-name>.

decodeCxxSpecialName
R decodeCxxSpecialName(Demangler!R x)
decodeCxxSubstitution
R decodeCxxSubstitution(Demangler!R x, R stdPrefix)

Decode C++ Substitution Type at r.

decodeCxxTemplateArg
R decodeCxxTemplateArg(Demangler!R x)
decodeCxxTemplateArgs
R[] decodeCxxTemplateArgs(Demangler!R x)
decodeCxxTemplateParam
R decodeCxxTemplateParam(Demangler!R x)
decodeCxxTemplatePrefix
R decodeCxxTemplatePrefix(Demangler!R x)
decodeCxxType
R decodeCxxType(Demangler!R x)

Decode C++ Type at r.

decodeCxxUnnamedTypeName
R decodeCxxUnnamedTypeName(Demangler!R x)
decodeCxxUnqualifiedName
R decodeCxxUnqualifiedName(Demangler!R x)

https://mentorembedded.github.io/cxx-abi/abi.html#mangle.unqualified-name

decodeCxxUnqualifiedType
R decodeCxxUnqualifiedType(Demangler!R x)

Decode Unqualified C++ Type at r.

decodeCxxUnscopedName
R decodeCxxUnscopedName(Demangler!R x)
decodeCxxUnscopedTemplateName
R decodeCxxUnscopedTemplateName(Demangler!R x)
decodeCxxUnscopedTemplateNameAndArgs
R decodeCxxUnscopedTemplateNameAndArgs(Demangler!R x)
decodeSymbol
Demangling decodeSymbol(Demangler!R x)

Demangle Symbol r and Detect Language.

skipLiteral
string skipLiteral(Demangler!R x, E lit)

Like skipOver but return string instead of bool. Bool-conversion of returned value gives same result as r.skipOver(lit).

See Also

https://mentorembedded.github.io/cxx-abi/abi.html

TODO Only check for emptyness before any optionals.

TODO Search for pattern "X> <Y" and assure that they all use return r.tryEvery(X, Y).

TODO 1. Replace calls to decode ~ decode with separate decodes TODO 2 : Replace calls to decode ~ decode with a sequence call.

TODO Detect recursion: See: http://forum.dlang.org/thread/edaduxaxmihvzkoudeqa@forum.dlang.org#post-edaduxaxmihvzkoudeqa:40forum.dlang.org See: http://code.dlang.org/packages/backtrace-d

TODO What role does _ZL have? See localFlag for details.

Meta