LLVM: AbstractManglingParser< Derived, Alloc > Struct Template Reference (original) (raw)

#include "[llvm/Demangle/ItaniumDemangle.h](ItaniumDemangle%5F8h%5Fsource.html)"

Classes
struct NameState
Holds some extra information about a that is being parsed. More...
struct OperatorInfo
class SaveTemplateParams
class ScopedTemplateParamList
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>
Node * make (Args &&... args)
template
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)
Node * parseSubstitution ()
Node * parseTemplateParam ()
Node * parseTemplateParamDecl (TemplateParamList *Params)
Node * parseTemplateArgs (bool TagTemplates=false)
Node * parseTemplateArg ()
bool isTemplateParamDecl ()
Node * parseExpr ()
Parse the production.
Node * parsePrefixExpr (std::string_view Kind, Node::Prec Prec)
Node * parseBinaryExpr (std::string_view Kind, Node::Prec Prec)
Node * parseIntegerLiteral (std::string_view Lit)
Node * parseExprPrimary ()
template<class Float>
Node * parseFloatingLiteral ()
Node * parseFunctionParam ()
Node * parseConversionExpr ()
Node * parseBracedExpr ()
Node * parseFoldExpr ()
Node * parsePointerToMemberConversionExpr (Node::Prec Prec)
Node * parseSubobjectExpr ()
Node * parseConstraintExpr ()
Node * parseRequiresExpr ()
Node * parseType ()
Parse the production.
Node * parseFunctionType ()
Node * parseVectorType ()
Node * parseDecltype ()
Node * parseArrayType ()
Node * parsePointerToMemberType ()
Node * parseClassEnumType ()
Node * parseQualifiedType ()
Node * parseEncoding (bool ParseParams=true)
bool parseCallOffset ()
Node * parseSpecialName ()
bool resolveForwardTemplateRefs (NameState &State)
Node * parseName (NameState *State=nullptr)
Parse the production>
Node * parseLocalName (NameState *State)
Node * parseOperatorName (NameState *State)
bool parseModuleNameOpt (ModuleName *&Module)
Node * parseUnqualifiedName (NameState *State, Node *Scope, ModuleName *Module)
Node * parseUnnamedTypeName (NameState *State)
Node * parseSourceName (NameState *State)
Node * parseUnscopedName (NameState *State, bool *isSubstName)
Node * parseNestedName (NameState *State)
Node * parseCtorDtorName (Node *&SoFar, NameState *State)
Node * parseAbiTags (Node *N)
const OperatorInfo * parseOperatorEncoding ()
Node * parseUnresolvedName (bool Global)
Parse the production.
Node * parseSimpleId ()
Node * parseBaseUnresolvedName ()
Node * parseUnresolvedType ()
Node * parseDestructorName ()
Node * parse (bool ParseParams=true)
Top-level entry point into the parser.
Public Attributes
const char * First
const char * Last
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

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

Definition at line 2746 of file ItaniumDemangle.h.

TemplateParamList

template<typename Derived, typename Alloc>

template<typename Derived, typename Alloc>

consume()

template<typename Derived, typename Alloc>

consumeIf() [1/2]

template<typename Derived, typename Alloc>

consumeIf() [2/2]

template<typename Derived, typename Alloc>

Definition at line 2865 of file ItaniumDemangle.h.

References First, Last, and starts_with().

Referenced by parse(), parseAbiTags(), parseArrayType(), parseBaseUnresolvedName(), parseCallOffset(), parseClassEnumType(), parseConversionExpr(), parseCtorDtorName(), parseCVQualifiers(), parseDecltype(), parseEncoding(), parseExpr(), parseExprPrimary(), parseFloatingLiteral(), parseFoldExpr(), parseFunctionParam(), parseFunctionType(), parseIntegerLiteral(), parseLocalName(), parseModuleNameOpt(), parseNestedName(), parseNumber(), parseOperatorName(), parsePointerToMemberConversionExpr(), parsePointerToMemberType(), parseQualifiedType(), parseRequiresExpr(), parseSpecialName(), parseSubobjectExpr(), parseSubstitution(), parseTemplateArg(), parseTemplateArgs(), parseTemplateParam(), parseTemplateParamDecl(), parseType(), parseUnnamedTypeName(), parseUnqualifiedName(), parseUnresolvedName(), parseUnscopedName(), and parseVectorType().

getDerived()

template<typename Derived, typename Alloc>

Definition at line 2829 of file ItaniumDemangle.h.

Referenced by parse(), parseArrayType(), parseBaseUnresolvedName(), parseBinaryExpr(), parseBracedExpr(), parseClassEnumType(), parseConstraintExpr(), parseConversionExpr(), parseCtorDtorName(), parseDecltype(), parseDestructorName(), parseEncoding(), parseExpr(), parseExprPrimary(), parseFoldExpr(), parseFunctionType(), parseLocalName(), parseModuleNameOpt(), parseName(), parseNestedName(), parseOperatorName(), parsePointerToMemberConversionExpr(), parsePointerToMemberType(), parsePrefixExpr(), parseQualifiedType(), parseRequiresExpr(), parseSimpleId(), parseSpecialName(), parseSubobjectExpr(), parseSubstitution(), parseTemplateArg(), parseTemplateArgs(), parseTemplateParamDecl(), parseType(), parseUnnamedTypeName(), parseUnqualifiedName(), parseUnresolvedName(), parseUnresolvedType(), parseUnscopedName(), and parseVectorType().

isTemplateParamDecl()

template<typename Derived, typename Alloc>

look()

template<typename Derived, typename Alloc>

Definition at line 2883 of file ItaniumDemangle.h.

References First, and Last.

Referenced by isTemplateParamDecl(), parse(), parseArrayType(), parseBaseUnresolvedName(), parseBracedExpr(), parseCtorDtorName(), parseDestructorName(), parseEncoding(), parseExpr(), parseExprPrimary(), parseFoldExpr(), parseName(), parseNestedName(), parseOperatorName(), parsePositiveInteger(), parseQualifiedType(), parseSeqId(), parseSimpleId(), parseSpecialName(), parseSubstitution(), parseTemplateArg(), parseType(), parseUnnamedTypeName(), parseUnqualifiedName(), parseUnresolvedName(), parseUnresolvedType(), parseUnscopedName(), and parseVectorType().

make()

template<typename Derived, typename Alloc>

template<class T, class... Args>

Definition at line 2845 of file ItaniumDemangle.h.

References args, ASTAllocator, and T.

Referenced by parse(), parseAbiTags(), parseArrayType(), parseBaseUnresolvedName(), parseBinaryExpr(), parseBracedExpr(), parseClassEnumType(), parseConversionExpr(), parseCtorDtorName(), parseDecltype(), parseDestructorName(), parseEncoding(), parseExpr(), parseExprPrimary(), parseFloatingLiteral(), parseFoldExpr(), parseFunctionParam(), parseFunctionType(), parseIntegerLiteral(), parseLocalName(), parseModuleNameOpt(), parseName(), parseNestedName(), parseOperatorName(), parsePointerToMemberConversionExpr(), parsePointerToMemberType(), parsePrefixExpr(), parseQualifiedType(), parseRequiresExpr(), parseSimpleId(), parseSourceName(), parseSpecialName(), parseSubobjectExpr(), parseSubstitution(), parseTemplateArg(), parseTemplateArgs(), parseTemplateParam(), parseTemplateParamDecl(), parseType(), parseUnnamedTypeName(), parseUnqualifiedName(), parseUnresolvedName(), parseUnscopedName(), and parseVectorType().

makeNodeArray()

template<typename Derived, typename Alloc>

template

numLeft()

template<typename Derived, typename Alloc>

parse()

parseAbiTags()

parseArrayType()

parseBareSourceName()

parseBaseUnresolvedName()

parseBinaryExpr()

template<typename Derived, typename Alloc>

parseBracedExpr()

parseCallOffset()

parseClassEnumType()

parseConstraintExpr()

parseConversionExpr()

parseCtorDtorName()

template<typename Derived, typename Alloc>

parseCVQualifiers()

parseDecltype()

parseDestructorName()

parseEncoding()

Definition at line 5652 of file ItaniumDemangle.h.

References consume(), consumeIf(), AbstractManglingParser< Derived, Alloc >::NameState::CtorDtorConversion, AbstractManglingParser< Derived, Alloc >::NameState::CVQualifiers, AbstractManglingParser< Derived, Alloc >::NameState::EndsWithTemplateArgs, getDerived(), AbstractManglingParser< Derived, Alloc >::NameState::HasExplicitObjectParameter, look(), make(), Names, numLeft(), popTrailingNodeArray(), AbstractManglingParser< Derived, Alloc >::NameState::ReferenceQualifier, and resolveForwardTemplateRefs().

parseExpr()

Parse the production.

Definition at line 5177 of file ItaniumDemangle.h.

References AbstractManglingParser< Derived, Alloc >::OperatorInfo::Array, AbstractManglingParser< Derived, Alloc >::OperatorInfo::Binary, AbstractManglingParser< Derived, Alloc >::OperatorInfo::Call, AbstractManglingParser< Derived, Alloc >::OperatorInfo::CCast, Cond, AbstractManglingParser< Derived, Alloc >::OperatorInfo::Conditional, consumeIf(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::Del, DEMANGLE_UNREACHABLE, E(), FP, getDerived(), LHS, look(), make(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::Member, AbstractManglingParser< Derived, Alloc >::OperatorInfo::NamedCast, AbstractManglingParser< Derived, Alloc >::OperatorInfo::NameOnly, Names, AbstractManglingParser< Derived, Alloc >::OperatorInfo::New, numLeft(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::OfIdOp, parseOperatorEncoding(), parsePointerToMemberConversionExpr(), parseRequiresExpr(), parseSubobjectExpr(), popTrailingNodeArray(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::Postfix, Node::Postfix, AbstractManglingParser< Derived, Alloc >::OperatorInfo::Prefix, RHS, NodeArray::size(), TryToParseTemplateArgs, and Node::Unary.

parseExprPrimary()

parseFloatingLiteral()

parseFoldExpr()

Definition at line 4967 of file ItaniumDemangle.h.

References AbstractManglingParser< Derived, Alloc >::OperatorInfo::Binary, consumeIf(), First, getDerived(), look(), make(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::Member, parseOperatorEncoding(), and std::swap().

parseFunctionParam()

parseFunctionType()

Definition at line 3944 of file ItaniumDemangle.h.

References consumeIf(), E(), FrefQualLValue, FrefQualNone, FrefQualRValue, getDerived(), make(), Names, parseCVQualifiers(), popTrailingNodeArray(), and T.

parseIntegerLiteral()

parseLocalName()

parseModuleNameOpt()

parseName()

parseNestedName()

Definition at line 3605 of file ItaniumDemangle.h.

References consumeIf(), First, FrefQualLValue, FrefQualNone, FrefQualRValue, getDerived(), Node::getKind(), look(), make(), Module, parseCVQualifiers(), and Subs.

parseNumber()

Definition at line 3901 of file ItaniumDemangle.h.

References consumeIf(), First, and numLeft().

Referenced by parse(), parseArrayType(), parseCallOffset(), parseExprPrimary(), parseFunctionParam(), parseIntegerLiteral(), parseLocalName(), parseSpecialName(), parseSubobjectExpr(), parseType(), parseUnnamedTypeName(), and parseVectorType().

parseOperatorEncoding()

parseOperatorName()

Definition at line 3485 of file ItaniumDemangle.h.

References AbstractManglingParser< Derived, Alloc >::OperatorInfo::CCast, consumeIf(), First, getDerived(), look(), make(), AbstractManglingParser< Derived, Alloc >::OperatorInfo::Member, parseOperatorEncoding(), PermitForwardTemplateReferences, TryToParseTemplateArgs, and AbstractManglingParser< Derived, Alloc >::OperatorInfo::Unnameable.

parsePointerToMemberConversionExpr()

parsePointerToMemberType()

parsePositiveInteger()

parsePrefixExpr()

template<typename Derived, typename Alloc>

parseQualifiedType()

parseRequiresExpr()

parseSeqId()

parseSimpleId()

parseSourceName()

parseSpecialName()

parseSubobjectExpr()

parseSubstitution()

Definition at line 5834 of file ItaniumDemangle.h.

References allocator, basic_string, consumeIf(), First, getDerived(), iostream, istream, look(), make(), ostream, parseSeqId(), string, and Subs.

parseTemplateArg()

parseTemplateArgs()

parseTemplateParam()

Definition at line 5900 of file ItaniumDemangle.h.

References consumeIf(), DEMANGLE_ASSERT, First, ForwardTemplateRefs, Node::getKind(), HasIncompleteTemplateParameterTracking, make(), parsePositiveInteger(), ParsingLambdaParamsAtLevel, PermitForwardTemplateReferences, and TemplateParams.

parseTemplateParamDecl()

Definition at line 5970 of file ItaniumDemangle.h.

References consumeIf(), getDerived(), HasIncompleteTemplateParameterTracking, make(), N, Names, NonType, NumSyntheticTemplateParameters, P, AbstractManglingParser< Derived, Alloc >::ScopedTemplateParamList::params(), parseTemplateParamDecl(), parseType(), popTrailingNodeArray(), PODSmallVector< T, N >::push_back(), Template, and Type.

Referenced by parseTemplateParamDecl().

parseType()

Parse the production.

Definition at line 4203 of file ItaniumDemangle.h.

References consumeIf(), DEMANGLE_FALLTHROUGH, First, getDerived(), look(), LValue, make(), P, parseBareSourceName(), parseNumber(), parseType(), RValue, Signed, Size, Subs, and TryToParseTemplateArgs.

Referenced by parseTemplateParamDecl(), and parseType().

parseUnnamedTypeName()

Definition at line 3257 of file ItaniumDemangle.h.

References consumeIf(), NodeArray::empty(), getDerived(), isTemplateParamDecl(), look(), make(), Names, P, AbstractManglingParser< Derived, Alloc >::ScopedTemplateParamList::params(), parseNumber(), ParsingLambdaParamsAtLevel, popTrailingNodeArray(), T, and TemplateParams.

Referenced by parseExprPrimary().

parseUnqualifiedName()

parseUnresolvedName()

parseUnresolvedType()

parseUnscopedName()

template<typename Derived, typename Alloc>

parseVectorType()

popTrailingNodeArray()

template<typename Derived, typename Alloc>

Definition at line 2857 of file ItaniumDemangle.h.

References DEMANGLE_ASSERT, makeNodeArray(), and Names.

Referenced by parseConversionExpr(), parseEncoding(), parseExpr(), parseFunctionType(), parseRequiresExpr(), parseSubobjectExpr(), parseTemplateArg(), parseTemplateArgs(), parseTemplateParamDecl(), parseUnnamedTypeName(), and parseUnqualifiedName().

reset()

template<typename Derived, typename Alloc>

Definition at line 2831 of file ItaniumDemangle.h.

References ASTAllocator, First, I, Last, Names, NumSyntheticTemplateParameters, ParsingLambdaParamsAtLevel, PermitForwardTemplateReferences, Subs, TemplateParams, and TryToParseTemplateArgs.

resolveForwardTemplateRefs()

template<typename Derived, typename Alloc>

ASTAllocator

template<typename Derived, typename Alloc>

First

template<typename Derived, typename Alloc>

Definition at line 2747 of file ItaniumDemangle.h.

Referenced by AbstractManglingParser(), consume(), consumeIf(), consumeIf(), look(), numLeft(), parse(), parseBareSourceName(), parseBracedExpr(), parseCtorDtorName(), parseExprPrimary(), parseFloatingLiteral(), parseFoldExpr(), parseLocalName(), parseNestedName(), parseNumber(), parseOperatorEncoding(), parseOperatorName(), parseQualifiedType(), parseSeqId(), parseSourceName(), parseSpecialName(), parseSubstitution(), parseTemplateArg(), parseTemplateParam(), parseType(), and reset().

ForwardTemplateRefs

template<typename Derived, typename Alloc>

HasIncompleteTemplateParameterTracking

template<typename Derived, typename Alloc>

Last

template<typename Derived, typename Alloc>

Names

template<typename Derived, typename Alloc>

Definition at line 2753 of file ItaniumDemangle.h.

Referenced by parseConversionExpr(), parseEncoding(), parseExpr(), parseFunctionType(), parseRequiresExpr(), parseSubobjectExpr(), parseTemplateArg(), parseTemplateArgs(), parseTemplateParamDecl(), parseUnnamedTypeName(), parseUnqualifiedName(), popTrailingNodeArray(), and reset().

NumOps

template<typename Derived, typename Alloc>

NumSyntheticTemplateParameters

template<typename Derived, typename Alloc>

Ops

template<typename Derived, typename Alloc>

OuterTemplateParams

template<typename Derived, typename Alloc>

ParsingLambdaParamsAtLevel

template<typename Derived, typename Alloc>

PermitForwardTemplateReferences

template<typename Derived, typename Alloc>

Subs

template<typename Derived, typename Alloc>

TemplateParams

template<typename Derived, typename Alloc>

TryToParseTemplateArgs

template<typename Derived, typename Alloc>


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