Classes | Typedefs | Functions | Variables
demangle.cc File Reference
#include <cstdio>
#include "demangle.h"
#include "utilities.h"
Include dependency graph for demangle.cc:

Go to the source code of this file.

Classes

struct  AbbrevPair
 
struct  State
 

Typedefs

typedef bool(* ParseFunc) (State *)
 

Functions

static void Append (State *state, const char *const str, const int length)
 
static bool AtLeastNumCharsRemaining (const char *str, int n)
 
bool Demangle (const char *mangled, char *out, size_t out_size)
 
static bool DisableAppend (State *state)
 
static bool EnterNestedName (State *state)
 
static bool IdentifierIsAnonymousNamespace (State *state, int length)
 
static void InitState (State *state, const char *mangled, char *out, size_t out_size)
 
static bool IsAlpha (char c)
 
static bool IsDigit (char c)
 
static bool IsFunctionCloneSuffix (const char *str)
 
static bool IsLower (char c)
 
static bool LeaveNestedName (State *state, short prev_value)
 
static bool MaybeAppend (State *state, const char *const str)
 
static void MaybeAppendSeparator (State *state)
 
static void MaybeAppendWithLength (State *state, const char *const str, const int length)
 
static void MaybeCancelLastSeparator (State *state)
 
static void MaybeIncreaseNestLevel (State *state)
 
static bool OneOrMore (ParseFunc parse_func, State *state)
 
static bool Optional (bool)
 
static bool ParseAbiTag (State *state)
 
static bool ParseAbiTags (State *state)
 
static bool ParseArrayType (State *state)
 
static bool ParseBareFunctionType (State *state)
 
static bool ParseBuiltinType (State *state)
 
static bool ParseCallOffset (State *state)
 
static bool ParseCharClass (State *state, const char *char_class)
 
static bool ParseClassEnumType (State *state)
 
static bool ParseCtorDtorName (State *state)
 
static bool ParseCVQualifiers (State *state)
 
static bool ParseDiscriminator (State *state)
 
static bool ParseEncoding (State *state)
 
static bool ParseExpression (State *state)
 
static bool ParseExprPrimary (State *state)
 
static bool ParseFloatNumber (State *state)
 
static bool ParseFunctionType (State *state)
 
static bool ParseIdentifier (State *state, int length)
 
static bool ParseLocalName (State *state)
 
static bool ParseLocalSourceName (State *state)
 
static bool ParseMangledName (State *state)
 
static bool ParseName (State *state)
 
static bool ParseNestedName (State *state)
 
static bool ParseNumber (State *state, int *number_out)
 
static bool ParseNVOffset (State *state)
 
static bool ParseOneCharToken (State *state, const char one_char_token)
 
static bool ParseOperatorName (State *state)
 
static bool ParsePointerToMemberType (State *state)
 
static bool ParsePrefix (State *state)
 
static bool ParseSeqId (State *state)
 
static bool ParseSourceName (State *state)
 
static bool ParseSpecialName (State *state)
 
static bool ParseSubstitution (State *state)
 
static bool ParseTemplateArg (State *state)
 
static bool ParseTemplateArgs (State *state)
 
static bool ParseTemplateParam (State *state)
 
static bool ParseTemplateTemplateParam (State *state)
 
static bool ParseTopLevelMangledName (State *state)
 
static bool ParseTwoCharToken (State *state, const char *two_char_token)
 
static bool ParseType (State *state)
 
static bool ParseUnqualifiedName (State *state)
 
static bool ParseUnscopedName (State *state)
 
static bool ParseUnscopedTemplateName (State *state)
 
static bool ParseVOffset (State *state)
 
static bool RestoreAppend (State *state, bool prev_value)
 
static size_t StrLen (const char *str)
 
static bool StrPrefix (const char *str, const char *prefix)
 
static bool ZeroOrMore (ParseFunc parse_func, State *state)
 

Variables

static const AbbrevPair kBuiltinTypeList []
 
static const AbbrevPair kOperatorList []
 
static const AbbrevPair kSubstitutionList []
 

Typedef Documentation

◆ ParseFunc

typedef bool(* ParseFunc) (State *)

Definition at line 249 of file demangle.cc.

Function Documentation

◆ Append()

static void Append ( State state,
const char *const  str,
const int  length 
)
static

Definition at line 272 of file demangle.cc.

◆ AtLeastNumCharsRemaining()

static bool AtLeastNumCharsRemaining ( const char *  str,
int  n 
)
static

Definition at line 175 of file demangle.cc.

◆ Demangle()

bool Demangle ( const char *  mangled,
char *  out,
size_t  out_size 
)

Definition at line 1327 of file demangle.cc.

◆ DisableAppend()

static bool DisableAppend ( State state)
static

Definition at line 369 of file demangle.cc.

◆ EnterNestedName()

static bool EnterNestedName ( State state)
static

Definition at line 357 of file demangle.cc.

◆ IdentifierIsAnonymousNamespace()

static bool IdentifierIsAnonymousNamespace ( State state,
int  length 
)
static

Definition at line 405 of file demangle.cc.

◆ InitState()

static void InitState ( State state,
const char *  mangled,
char *  out,
size_t  out_size 
)
static

Definition at line 194 of file demangle.cc.

◆ IsAlpha()

static bool IsAlpha ( char  c)
static

Definition at line 293 of file demangle.cc.

◆ IsDigit()

static bool IsDigit ( char  c)
static

Definition at line 297 of file demangle.cc.

◆ IsFunctionCloneSuffix()

static bool IsFunctionCloneSuffix ( const char *  str)
static

Definition at line 305 of file demangle.cc.

◆ IsLower()

static bool IsLower ( char  c)
static

Definition at line 289 of file demangle.cc.

◆ LeaveNestedName()

static bool LeaveNestedName ( State state,
short  prev_value 
)
static

Definition at line 363 of file demangle.cc.

◆ MaybeAppend()

static bool MaybeAppend ( State state,
const char *const  str 
)
static

Definition at line 348 of file demangle.cc.

◆ MaybeAppendSeparator()

static void MaybeAppendSeparator ( State state)
static

Definition at line 388 of file demangle.cc.

◆ MaybeAppendWithLength()

static void MaybeAppendWithLength ( State state,
const char *const  str,
const int  length 
)
static

Definition at line 329 of file demangle.cc.

◆ MaybeCancelLastSeparator()

static void MaybeCancelLastSeparator ( State state)
static

Definition at line 395 of file demangle.cc.

◆ MaybeIncreaseNestLevel()

static void MaybeIncreaseNestLevel ( State state)
static

Definition at line 381 of file demangle.cc.

◆ OneOrMore()

static bool OneOrMore ( ParseFunc  parse_func,
State state 
)
static

Definition at line 250 of file demangle.cc.

◆ Optional()

static bool Optional ( bool  )
static

Definition at line 244 of file demangle.cc.

◆ ParseAbiTag()

static bool ParseAbiTag ( State state)
static

Definition at line 722 of file demangle.cc.

◆ ParseAbiTags()

static bool ParseAbiTags ( State state)
static

Definition at line 710 of file demangle.cc.

◆ ParseArrayType()

static bool ParseArrayType ( State state)
static

Definition at line 1049 of file demangle.cc.

◆ ParseBareFunctionType()

static bool ParseBareFunctionType ( State state)
static

Definition at line 1030 of file demangle.cc.

◆ ParseBuiltinType()

static bool ParseBuiltinType ( State state)
static

Definition at line 999 of file demangle.cc.

◆ ParseCallOffset()

static bool ParseCallOffset ( State state)
static

Definition at line 855 of file demangle.cc.

◆ ParseCharClass()

static bool ParseCharClass ( State state,
const char *  char_class 
)
static

Definition at line 232 of file demangle.cc.

◆ ParseClassEnumType()

static bool ParseClassEnumType ( State state)
static

Definition at line 1043 of file demangle.cc.

◆ ParseCtorDtorName()

static bool ParseCtorDtorName ( State state)
static

Definition at line 890 of file demangle.cc.

◆ ParseCVQualifiers()

static bool ParseCVQualifiers ( State state)
static

Definition at line 989 of file demangle.cc.

◆ ParseDiscriminator()

static bool ParseDiscriminator ( State state)
static

Definition at line 1258 of file demangle.cc.

◆ ParseEncoding()

static bool ParseEncoding ( State state)
static

Definition at line 491 of file demangle.cc.

◆ ParseExpression()

static bool ParseExpression ( State state)
static

Definition at line 1154 of file demangle.cc.

◆ ParseExprPrimary()

static bool ParseExprPrimary ( State state)
static

Definition at line 1206 of file demangle.cc.

◆ ParseFloatNumber()

static bool ParseFloatNumber ( State state)
static

Definition at line 664 of file demangle.cc.

◆ ParseFunctionType()

static bool ParseFunctionType ( State state)
static

Definition at line 1018 of file demangle.cc.

◆ ParseIdentifier()

static bool ParseIdentifier ( State state,
int  length 
)
static

Definition at line 695 of file demangle.cc.

◆ ParseLocalName()

static bool ParseLocalName ( State state)
static

Definition at line 1240 of file demangle.cc.

◆ ParseLocalSourceName()

static bool ParseLocalSourceName ( State state)
static

Definition at line 625 of file demangle.cc.

◆ ParseMangledName()

static bool ParseMangledName ( State state)
static

Definition at line 484 of file demangle.cc.

◆ ParseName()

static bool ParseName ( State state)
static

Definition at line 508 of file demangle.cc.

◆ ParseNestedName()

static bool ParseNestedName ( State state)
static

Definition at line 552 of file demangle.cc.

◆ ParseNumber()

static bool ParseNumber ( State state,
int *  number_out 
)
static

Definition at line 638 of file demangle.cc.

◆ ParseNVOffset()

static bool ParseNVOffset ( State state)
static

Definition at line 873 of file demangle.cc.

◆ ParseOneCharToken()

static bool ParseOneCharToken ( State state,
const char  one_char_token 
)
static

Definition at line 210 of file demangle.cc.

◆ ParseOperatorName()

static bool ParseOperatorName ( State state)
static

Definition at line 729 of file demangle.cc.

◆ ParsePointerToMemberType()

static bool ParsePointerToMemberType ( State state)
static

Definition at line 1066 of file demangle.cc.

◆ ParsePrefix()

static bool ParsePrefix ( State state)
static

Definition at line 577 of file demangle.cc.

◆ ParseSeqId()

static bool ParseSeqId ( State state)
static

Definition at line 680 of file demangle.cc.

◆ ParseSourceName()

static bool ParseSourceName ( State state)
static

Definition at line 610 of file demangle.cc.

◆ ParseSpecialName()

static bool ParseSpecialName ( State state)
static

Definition at line 792 of file demangle.cc.

◆ ParseSubstitution()

static bool ParseSubstitution ( State state)
static

Definition at line 1270 of file demangle.cc.

◆ ParseTemplateArg()

static bool ParseTemplateArg ( State state)
static

Definition at line 1122 of file demangle.cc.

◆ ParseTemplateArgs()

static bool ParseTemplateArgs ( State state)
static

Definition at line 1103 of file demangle.cc.

◆ ParseTemplateParam()

static bool ParseTemplateParam ( State state)
static

Definition at line 1078 of file demangle.cc.

◆ ParseTemplateTemplateParam()

static bool ParseTemplateTemplateParam ( State state)
static

Definition at line 1097 of file demangle.cc.

◆ ParseTopLevelMangledName()

static bool ParseTopLevelMangledName ( State state)
static

Definition at line 1305 of file demangle.cc.

◆ ParseTwoCharToken()

static bool ParseTwoCharToken ( State state,
const char *  two_char_token 
)
static

Definition at line 221 of file demangle.cc.

◆ ParseType()

static bool ParseType ( State state)
static

Definition at line 933 of file demangle.cc.

◆ ParseUnqualifiedName()

static bool ParseUnqualifiedName ( State state)
static

Definition at line 602 of file demangle.cc.

◆ ParseUnscopedName()

static bool ParseUnscopedName ( State state)
static

Definition at line 529 of file demangle.cc.

◆ ParseUnscopedTemplateName()

static bool ParseUnscopedTemplateName ( State state)
static

Definition at line 546 of file demangle.cc.

◆ ParseVOffset()

static bool ParseVOffset ( State state)
static

Definition at line 878 of file demangle.cc.

◆ RestoreAppend()

static bool RestoreAppend ( State state,
bool  prev_value 
)
static

Definition at line 375 of file demangle.cc.

◆ StrLen()

static size_t StrLen ( const char *  str)
static

Definition at line 165 of file demangle.cc.

◆ StrPrefix()

static bool StrPrefix ( const char *  str,
const char *  prefix 
)
static

Definition at line 185 of file demangle.cc.

◆ ZeroOrMore()

static bool ZeroOrMore ( ParseFunc  parse_func,
State state 
)
static

Definition at line 263 of file demangle.cc.

Variable Documentation

◆ kBuiltinTypeList

const AbbrevPair kBuiltinTypeList[]
static
Initial value:
= {
{ "v", "void" },
{ "w", "wchar_t" },
{ "b", "bool" },
{ "c", "char" },
{ "a", "signed char" },
{ "h", "unsigned char" },
{ "s", "short" },
{ "t", "unsigned short" },
{ "i", "int" },
{ "j", "unsigned int" },
{ "l", "long" },
{ "m", "unsigned long" },
{ "x", "long long" },
{ "y", "unsigned long long" },
{ "n", "__int128" },
{ "o", "unsigned __int128" },
{ "f", "float" },
{ "d", "double" },
{ "e", "long double" },
{ "g", "__float128" },
{ "z", "ellipsis" },
{ NULL, NULL }
}

Definition at line 109 of file demangle.cc.

◆ kOperatorList

const AbbrevPair kOperatorList[]
static

Definition at line 55 of file demangle.cc.

◆ kSubstitutionList

const AbbrevPair kSubstitutionList[]
static
Initial value:
= {
{ "St", "" },
{ "Sa", "allocator" },
{ "Sb", "basic_string" },
{ "Ss", "string"},
{ "Si", "istream" },
{ "So", "ostream" },
{ "Sd", "iostream" },
{ NULL, NULL }
}

Definition at line 135 of file demangle.cc.

NULL
NULL
Definition: test_security_zap.cpp:405


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:02