Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
AbstractManglingParser< Derived, Alloc > Struct Template Reference

#include "llvm/Demangle/ItaniumDemangle.h"

Inheritance diagram for AbstractManglingParser< Derived, Alloc >:
[legend]

Classes

struct  NameState
 Holds some extra information about a <name> that is being parsed. More...
struct  OperatorInfo
class  SaveTemplateParams
class  ScopedTemplateParamList

Public Types

using TemplateParamList = PODSmallVector<Node *, 8>

Public Member Functions

 AbstractManglingParser (const char *First_, const char *Last_)
Derived & getDerived ()
void reset (const char *First_, const char *Last_)
template<class T, class... Args>
Nodemake (Args &&... args)
template<class It>
NodeArray makeNodeArray (It begin, It end)
NodeArray popTrailingNodeArray (size_t FromPosition)
bool consumeIf (std::string_view S)
bool consumeIf (char C)
char consume ()
char look (unsigned Lookahead=0) const
size_t numLeft () const
std::string_view parseNumber (bool AllowNegative=false)
Qualifiers parseCVQualifiers ()
bool parsePositiveInteger (size_t *Out)
std::string_view parseBareSourceName ()
bool parseSeqId (size_t *Out)
NodeparseSubstitution ()
NodeparseTemplateParam ()
NodeparseTemplateParamDecl (TemplateParamList *Params)
NodeparseTemplateArgs (bool TagTemplates=false)
NodeparseTemplateArg ()
bool isTemplateParamDecl ()
NodeparseExpr ()
 Parse the <expression> production.
NodeparsePrefixExpr (std::string_view Kind, Node::Prec Prec)
NodeparseBinaryExpr (std::string_view Kind, Node::Prec Prec)
NodeparseIntegerLiteral (std::string_view Lit)
NodeparseExprPrimary ()
template<class Float>
NodeparseFloatingLiteral ()
NodeparseFunctionParam ()
NodeparseConversionExpr ()
NodeparseBracedExpr ()
NodeparseFoldExpr ()
NodeparsePointerToMemberConversionExpr (Node::Prec Prec)
NodeparseSubobjectExpr ()
NodeparseConstraintExpr ()
NodeparseRequiresExpr ()
NodeparseType ()
 Parse the <type> production.
NodeparseFunctionType ()
NodeparseVectorType ()
NodeparseDecltype ()
NodeparseArrayType ()
NodeparsePointerToMemberType ()
NodeparseClassEnumType ()
NodeparseQualifiedType ()
NodeparseEncoding (bool ParseParams=true)
bool parseCallOffset ()
NodeparseSpecialName ()
bool resolveForwardTemplateRefs (NameState &State)
NodeparseName (NameState *State=nullptr)
 Parse the <name> production>
NodeparseLocalName (NameState *State)
NodeparseOperatorName (NameState *State)
bool parseModuleNameOpt (ModuleName *&Module)
NodeparseUnqualifiedName (NameState *State, Node *Scope, ModuleName *Module)
NodeparseUnnamedTypeName (NameState *State)
NodeparseSourceName (NameState *State)
NodeparseUnscopedName (NameState *State, bool *isSubstName)
NodeparseNestedName (NameState *State)
NodeparseCtorDtorName (Node *&SoFar, NameState *State)
NodeparseAbiTags (Node *N)
const OperatorInfoparseOperatorEncoding ()
NodeparseUnresolvedName (bool Global)
 Parse the <unresolved-name> production.
NodeparseSimpleId ()
NodeparseBaseUnresolvedName ()
NodeparseUnresolvedType ()
NodeparseDestructorName ()
Nodeparse (bool ParseParams=true)
 Top-level entry point into the parser.

Public Attributes

const charFirst
const charLast
PODSmallVector< Node *, 32 > Names
PODSmallVector< Node *, 32 > Subs
TemplateParamList OuterTemplateParams
PODSmallVector< TemplateParamList *, 4 > TemplateParams
PODSmallVector< ForwardTemplateReference *, 4 > ForwardTemplateRefs
bool TryToParseTemplateArgs = true
bool PermitForwardTemplateReferences = false
bool HasIncompleteTemplateParameterTracking = false
size_t ParsingLambdaParamsAtLevel = (size_t)-1
unsigned NumSyntheticTemplateParameters [3] = {}
Alloc ASTAllocator

Static Public Attributes

static const OperatorInfo Ops []
static const size_t NumOps

Detailed Description

template<typename Derived, typename Alloc>
struct AbstractManglingParser< Derived, Alloc >

Definition at line 2744 of file ItaniumDemangle.h.

Member Typedef Documentation

◆ TemplateParamList

template<typename Derived, typename Alloc>
using AbstractManglingParser< Derived, Alloc >::TemplateParamList = PODSmallVector<Node *, 8>

Definition at line 2760 of file ItaniumDemangle.h.

Constructor & Destructor Documentation

◆ AbstractManglingParser()

Member Function Documentation

◆ consume()

template<typename Derived, typename Alloc>
char AbstractManglingParser< Derived, Alloc >::consume ( )
inline

Definition at line 2879 of file ItaniumDemangle.h.

References First, and Last.

◆ consumeIf() [1/2]

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::consumeIf ( char C)
inline

Definition at line 2871 of file ItaniumDemangle.h.

References C(), First, and Last.

◆ consumeIf() [2/2]

◆ getDerived()

◆ isTemplateParamDecl()

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::isTemplateParamDecl ( )
inline

Definition at line 2901 of file ItaniumDemangle.h.

References look().

Referenced by parseTemplateArg(), and parseUnnamedTypeName().

◆ look()

◆ make()

◆ makeNodeArray()

template<typename Derived, typename Alloc>
template<class It>
NodeArray AbstractManglingParser< Derived, Alloc >::makeNodeArray ( It begin,
It end )
inline

Definition at line 2847 of file ItaniumDemangle.h.

References ASTAllocator, and data.

Referenced by parseConversionExpr(), and popTrailingNodeArray().

◆ numLeft()

template<typename Derived, typename Alloc>
size_t AbstractManglingParser< Derived, Alloc >::numLeft ( ) const
inline

◆ parse()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parse ( bool ParseParams = true)

Top-level entry point into the parser.

Definition at line 6159 of file ItaniumDemangle.h.

References consumeIf(), First, getDerived(), Last, look(), make(), numLeft(), and parseNumber().

◆ parseAbiTags()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseAbiTags ( Node * N)

Definition at line 3884 of file ItaniumDemangle.h.

References consumeIf(), make(), N, and parseBareSourceName().

◆ parseArrayType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseArrayType ( )

Definition at line 4065 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), look(), make(), and parseNumber().

◆ parseBareSourceName()

template<typename Alloc, typename Derived>
std::string_view AbstractManglingParser< Alloc, Derived >::parseBareSourceName ( )

Definition at line 3924 of file ItaniumDemangle.h.

References First, Int, numLeft(), and parsePositiveInteger().

Referenced by parseAbiTags(), parseQualifiedType(), and parseType().

◆ parseBaseUnresolvedName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseBaseUnresolvedName ( )

Definition at line 3762 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), look(), and make().

◆ parseBinaryExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseBinaryExpr ( std::string_view Kind,
Node::Prec Prec )

Definition at line 4694 of file ItaniumDemangle.h.

References getDerived(), LHS, make(), and RHS.

◆ parseBracedExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseBracedExpr ( )

Definition at line 4918 of file ItaniumDemangle.h.

References First, getDerived(), look(), and make().

◆ parseCallOffset()

template<typename Alloc, typename Derived>
bool AbstractManglingParser< Alloc, Derived >::parseCallOffset ( )

Definition at line 5472 of file ItaniumDemangle.h.

References consumeIf(), and parseNumber().

Referenced by parseSpecialName().

◆ parseClassEnumType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseClassEnumType ( )

Definition at line 4111 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), and make().

◆ parseConstraintExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseConstraintExpr ( )

Definition at line 5060 of file ItaniumDemangle.h.

References getDerived(), and HasIncompleteTemplateParameterTracking.

◆ parseConversionExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseConversionExpr ( )

◆ parseCtorDtorName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseCtorDtorName ( Node *& SoFar,
NameState * State )

Definition at line 3546 of file ItaniumDemangle.h.

References consumeIf(), First, getDerived(), Node::getKind(), look(), make(), and parseName().

◆ parseCVQualifiers()

template<typename Alloc, typename Derived>
Qualifiers AbstractManglingParser< Alloc, Derived >::parseCVQualifiers ( )

◆ parseDecltype()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseDecltype ( )

Definition at line 4049 of file ItaniumDemangle.h.

References consumeIf(), E(), getDerived(), and make().

◆ parseDestructorName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseDestructorName ( )

Definition at line 3721 of file ItaniumDemangle.h.

References getDerived(), look(), and make().

◆ parseEncoding()

◆ parseExpr()

◆ parseExprPrimary()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseExprPrimary ( )

◆ parseFloatingLiteral()

template<typename Alloc, typename Derived>
template<class Float>
Node * AbstractManglingParser< Alloc, Derived >::parseFloatingLiteral ( )

Definition at line 5783 of file ItaniumDemangle.h.

References C(), consumeIf(), First, make(), N, and numLeft().

Referenced by parseExprPrimary().

◆ parseFoldExpr()

◆ parseFunctionParam()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseFunctionParam ( )

Definition at line 4733 of file ItaniumDemangle.h.

References consumeIf(), make(), parseCVQualifiers(), and parseNumber().

◆ parseFunctionType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseFunctionType ( )

◆ parseIntegerLiteral()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseIntegerLiteral ( std::string_view Lit)

Definition at line 4706 of file ItaniumDemangle.h.

References consumeIf(), make(), and parseNumber().

◆ parseLocalName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseLocalName ( NameState * State)

◆ parseModuleNameOpt()

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::parseModuleNameOpt ( ModuleName *& Module)

Definition at line 3231 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), make(), Module, and Subs.

Referenced by parseSpecialName(), and parseUnqualifiedName().

◆ parseName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseName ( NameState * State = nullptr)

Parse the <name> production>

Definition at line 3063 of file ItaniumDemangle.h.

References getDerived(), look(), make(), and Subs.

Referenced by parseCtorDtorName().

◆ parseNestedName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseNestedName ( NameState * State)

◆ parseNumber()

template<typename Alloc, typename Derived>
std::string_view AbstractManglingParser< Alloc, Derived >::parseNumber ( bool AllowNegative = false)

◆ parseOperatorEncoding()

template<typename Derived, typename Alloc>
const AbstractManglingParser< Derived, Alloc >::OperatorInfo * AbstractManglingParser< Derived, Alloc >::parseOperatorEncoding ( )

Definition at line 3457 of file ItaniumDemangle.h.

References First, numLeft(), NumOps, and Ops.

Referenced by parseExpr(), parseFoldExpr(), and parseOperatorName().

◆ parseOperatorName()

◆ parsePointerToMemberConversionExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parsePointerToMemberConversionExpr ( Node::Prec Prec)

Definition at line 5018 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), and make().

Referenced by parseExpr().

◆ parsePointerToMemberType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parsePointerToMemberType ( )

Definition at line 4094 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), and make().

◆ parsePositiveInteger()

template<typename Alloc, typename Derived>
bool AbstractManglingParser< Alloc, Derived >::parsePositiveInteger ( size_t * Out)

Definition at line 3912 of file ItaniumDemangle.h.

References consume(), and look().

Referenced by parseBareSourceName(), parseSourceName(), and parseTemplateParam().

◆ parsePrefixExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parsePrefixExpr ( std::string_view Kind,
Node::Prec Prec )

Definition at line 4684 of file ItaniumDemangle.h.

References E(), getDerived(), and make().

◆ parseQualifiedType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseQualifiedType ( )

◆ parseRequiresExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseRequiresExpr ( )

Definition at line 5069 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), make(), Names, popTrailingNodeArray(), and Type.

Referenced by parseExpr().

◆ parseSeqId()

template<typename Alloc, typename Derived>
bool AbstractManglingParser< Alloc, Derived >::parseSeqId ( size_t * Out)

Definition at line 5799 of file ItaniumDemangle.h.

References First, and look().

Referenced by parseSpecialName(), and parseSubstitution().

◆ parseSimpleId()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseSimpleId ( )

Definition at line 3705 of file ItaniumDemangle.h.

References getDerived(), look(), and make().

◆ parseSourceName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseSourceName ( NameState * State)

Definition at line 3351 of file ItaniumDemangle.h.

References First, make(), numLeft(), parsePositiveInteger(), and starts_with().

◆ parseSpecialName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseSpecialName ( )

◆ parseSubobjectExpr()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseSubobjectExpr ( )

Definition at line 5037 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), make(), Names, parseNumber(), and popTrailingNodeArray().

Referenced by parseExpr().

◆ parseSubstitution()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseSubstitution ( )

◆ parseTemplateArg()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseTemplateArg ( )

◆ parseTemplateArgs()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseTemplateArgs ( bool TagTemplates = false)

◆ parseTemplateParam()

◆ parseTemplateParamDecl()

◆ parseType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseType ( )

◆ parseUnnamedTypeName()

◆ parseUnqualifiedName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseUnqualifiedName ( NameState * State,
Node * Scope,
ModuleName * Module )

◆ parseUnresolvedName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseUnresolvedName ( bool Global)

Parse the <unresolved-name> production.

Definition at line 3796 of file ItaniumDemangle.h.

References consumeIf(), DEMANGLE_ASSERT, getDerived(), look(), and make().

◆ parseUnresolvedType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseUnresolvedType ( )

Definition at line 3736 of file ItaniumDemangle.h.

References getDerived(), look(), and Subs.

◆ parseUnscopedName()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseUnscopedName ( NameState * State,
bool * isSubstName )

Definition at line 3140 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), Node::getKind(), look(), make(), and Module.

◆ parseVectorType()

template<typename Derived, typename Alloc>
Node * AbstractManglingParser< Derived, Alloc >::parseVectorType ( )

Definition at line 4012 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), look(), make(), and parseNumber().

◆ popTrailingNodeArray()

◆ reset()

template<typename Derived, typename Alloc>
void AbstractManglingParser< Derived, Alloc >::reset ( const char * First_,
const char * Last_ )
inline

◆ resolveForwardTemplateRefs()

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::resolveForwardTemplateRefs ( NameState & State)
inline

Definition at line 2950 of file ItaniumDemangle.h.

References E(), ForwardTemplateRefs, I, and TemplateParams.

Referenced by parseEncoding().

Member Data Documentation

◆ ASTAllocator

template<typename Derived, typename Alloc>
Alloc AbstractManglingParser< Derived, Alloc >::ASTAllocator

Definition at line 2822 of file ItaniumDemangle.h.

Referenced by make(), makeNodeArray(), and reset().

◆ First

◆ ForwardTemplateRefs

template<typename Derived, typename Alloc>
PODSmallVector<ForwardTemplateReference *, 4> AbstractManglingParser< Derived, Alloc >::ForwardTemplateRefs

◆ HasIncompleteTemplateParameterTracking

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::HasIncompleteTemplateParameterTracking = false

◆ Last

template<typename Derived, typename Alloc>
const char* AbstractManglingParser< Derived, Alloc >::Last

◆ Names

◆ NumOps

template<typename Derived, typename Alloc>
const size_t AbstractManglingParser< Derived, Alloc >::NumOps
static

Definition at line 3038 of file ItaniumDemangle.h.

Referenced by parseOperatorEncoding().

◆ NumSyntheticTemplateParameters

template<typename Derived, typename Alloc>
unsigned AbstractManglingParser< Derived, Alloc >::NumSyntheticTemplateParameters[3] = {}

Definition at line 2820 of file ItaniumDemangle.h.

Referenced by parseTemplateParamDecl(), and reset().

◆ Ops

template<typename Derived, typename Alloc>
const OperatorInfo AbstractManglingParser< Derived, Alloc >::Ops[]
static

Definition at line 3037 of file ItaniumDemangle.h.

Referenced by parseOperatorEncoding().

◆ OuterTemplateParams

template<typename Derived, typename Alloc>
TemplateParamList AbstractManglingParser< Derived, Alloc >::OuterTemplateParams

Definition at line 2784 of file ItaniumDemangle.h.

Referenced by parseTemplateArgs().

◆ ParsingLambdaParamsAtLevel

template<typename Derived, typename Alloc>
size_t AbstractManglingParser< Derived, Alloc >::ParsingLambdaParamsAtLevel = (size_t)-1

Definition at line 2818 of file ItaniumDemangle.h.

Referenced by parseTemplateParam(), parseUnnamedTypeName(), and reset().

◆ PermitForwardTemplateReferences

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::PermitForwardTemplateReferences = false

Definition at line 2816 of file ItaniumDemangle.h.

Referenced by parseOperatorName(), parseTemplateParam(), and reset().

◆ Subs

template<typename Derived, typename Alloc>
PODSmallVector<Node *, 32> AbstractManglingParser< Derived, Alloc >::Subs

◆ TemplateParams

◆ TryToParseTemplateArgs

template<typename Derived, typename Alloc>
bool AbstractManglingParser< Derived, Alloc >::TryToParseTemplateArgs = true

The documentation for this struct was generated from the following file: