LLVM  8.0.1
Classes | Public Member Functions | Public Attributes | List of all members
llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc > Struct Template Reference

#include "llvm/Demangle/ItaniumDemangle.h"

Inheritance diagram for llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >:
Inheritance graph
[legend]
Collaboration diagram for llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >:
Collaboration graph
[legend]

Classes

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

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 (StringView S)
 
bool consumeIf (char C)
 
char consume ()
 
char look (unsigned Lookahead=0)
 
size_t numLeft () const
 
StringView parseNumber (bool AllowNegative=false)
 
Qualifiers parseCVQualifiers ()
 
bool parsePositiveInteger (size_t *Out)
 
StringView parseBareSourceName ()
 
bool parseSeqId (size_t *Out)
 
NodeparseSubstitution ()
 
NodeparseTemplateParam ()
 
NodeparseTemplateArgs (bool TagTemplates=false)
 
NodeparseTemplateArg ()
 
NodeparseExpr ()
 Parse the <expr> production. More...
 
NodeparsePrefixExpr (StringView Kind)
 
NodeparseBinaryExpr (StringView Kind)
 
NodeparseIntegerLiteral (StringView Lit)
 
NodeparseExprPrimary ()
 
template<class Float >
NodeparseFloatingLiteral ()
 
NodeparseFunctionParam ()
 
NodeparseNewExpr ()
 
NodeparseConversionExpr ()
 
NodeparseBracedExpr ()
 
NodeparseFoldExpr ()
 
NodeparseType ()
 Parse the <type> production. More...
 
NodeparseFunctionType ()
 
NodeparseVectorType ()
 
NodeparseDecltype ()
 
NodeparseArrayType ()
 
NodeparsePointerToMemberType ()
 
NodeparseClassEnumType ()
 
NodeparseQualifiedType ()
 
NodeparseEncoding ()
 
bool parseCallOffset ()
 
NodeparseSpecialName ()
 
bool resolveForwardTemplateRefs (NameState &State)
 
NodeparseName (NameState *State=nullptr)
 Parse the <name> production> More...
 
NodeparseLocalName (NameState *State)
 
NodeparseOperatorName (NameState *State)
 
NodeparseUnqualifiedName (NameState *State)
 
NodeparseUnnamedTypeName (NameState *State)
 
NodeparseSourceName (NameState *State)
 
NodeparseUnscopedName (NameState *State)
 
NodeparseNestedName (NameState *State)
 
NodeparseCtorDtorName (Node *&SoFar, NameState *State)
 
NodeparseAbiTags (Node *N)
 
NodeparseUnresolvedName ()
 Parse the <unresolved-name> production. More...
 
NodeparseSimpleId ()
 
NodeparseBaseUnresolvedName ()
 
NodeparseUnresolvedType ()
 
NodeparseDestructorName ()
 
Nodeparse ()
 Top-level entry point into the parser. More...
 

Public Attributes

const charFirst
 
const charLast
 
PODSmallVector< Node *, 32 > Names
 
PODSmallVector< Node *, 32 > Subs
 
PODSmallVector< Node *, 8 > TemplateParams
 
PODSmallVector< ForwardTemplateReference *, 4 > ForwardTemplateRefs
 
bool TryToParseTemplateArgs = true
 
bool PermitForwardTemplateReferences = false
 
bool ParsingLambdaParams = false
 
Alloc ASTAllocator
 

Detailed Description

template<typename Derived, typename Alloc>
struct llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >

Definition at line 2137 of file ItaniumDemangle.h.

Constructor & Destructor Documentation

◆ AbstractManglingParser()

template<typename Derived, typename Alloc>
llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::AbstractManglingParser ( const char First_,
const char Last_ 
)
inline

Definition at line 2166 of file ItaniumDemangle.h.

Member Function Documentation

◆ consume()

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

Definition at line 2219 of file ItaniumDemangle.h.

◆ consumeIf() [1/2]

template<typename Derived, typename Alloc>
bool llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::consumeIf ( StringView  S)
inline

Definition at line 2203 of file ItaniumDemangle.h.

◆ consumeIf() [2/2]

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

Definition at line 2211 of file ItaniumDemangle.h.

◆ getDerived()

template<typename Derived, typename Alloc>
Derived& llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::getDerived ( )
inline

Definition at line 2169 of file ItaniumDemangle.h.

◆ look()

template<typename Derived, typename Alloc>
char llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::look ( unsigned  Lookahead = 0)
inline

Definition at line 2221 of file ItaniumDemangle.h.

◆ make()

template<typename Derived, typename Alloc>
template<class T , class... Args>
Node* llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::make ( Args &&...  args)
inline

Definition at line 2183 of file ItaniumDemangle.h.

◆ makeNodeArray()

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

Definition at line 2187 of file ItaniumDemangle.h.

◆ numLeft()

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

Definition at line 2227 of file ItaniumDemangle.h.

◆ parse()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parse ( )

Top-level entry point into the parser.

Definition at line 5141 of file ItaniumDemangle.h.

Referenced by llvm::itaniumDemangle(), and llvm::ItaniumPartialDemangler::partialDemangle().

◆ parseAbiTags()

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

Definition at line 3143 of file ItaniumDemangle.h.

◆ parseArrayType()

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

Definition at line 3322 of file ItaniumDemangle.h.

◆ parseBareSourceName()

template<typename Alloc , typename Derived >
StringView llvm::itanium_demangle::AbstractManglingParser< Alloc, Derived >::parseBareSourceName ( )

Definition at line 3183 of file ItaniumDemangle.h.

◆ parseBaseUnresolvedName()

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

Definition at line 3020 of file ItaniumDemangle.h.

◆ parseBinaryExpr()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseBinaryExpr ( StringView  Kind)

Definition at line 3783 of file ItaniumDemangle.h.

◆ parseBracedExpr()

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

Definition at line 4014 of file ItaniumDemangle.h.

◆ parseCallOffset()

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

Definition at line 4648 of file ItaniumDemangle.h.

◆ parseClassEnumType()

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

Definition at line 3366 of file ItaniumDemangle.h.

◆ parseConversionExpr()

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

Definition at line 3882 of file ItaniumDemangle.h.

◆ parseCtorDtorName()

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

Definition at line 2795 of file ItaniumDemangle.h.

◆ parseCVQualifiers()

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

Definition at line 3804 of file ItaniumDemangle.h.

◆ parseDecltype()

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

Definition at line 3306 of file ItaniumDemangle.h.

◆ parseDestructorName()

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

Definition at line 2979 of file ItaniumDemangle.h.

◆ parseEncoding()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseEncoding ( )

Definition at line 4802 of file ItaniumDemangle.h.

◆ parseExpr()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseExpr ( )

Parse the <expr> production.

Definition at line 4171 of file ItaniumDemangle.h.

◆ parseExprPrimary()

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

Definition at line 3919 of file ItaniumDemangle.h.

◆ parseFloatingLiteral()

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

Definition at line 4900 of file ItaniumDemangle.h.

◆ parseFoldExpr()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseFoldExpr ( )

Definition at line 4061 of file ItaniumDemangle.h.

◆ parseFunctionParam()

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

Definition at line 3820 of file ItaniumDemangle.h.

◆ parseFunctionType()

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

Definition at line 3201 of file ItaniumDemangle.h.

◆ parseIntegerLiteral()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseIntegerLiteral ( StringView  Lit)

Definition at line 3795 of file ItaniumDemangle.h.

◆ parseLocalName()

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

Definition at line 2369 of file ItaniumDemangle.h.

◆ parseName()

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

Parse the <name> production>

Definition at line 2327 of file ItaniumDemangle.h.

◆ parseNestedName()

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

Definition at line 2857 of file ItaniumDemangle.h.

◆ parseNewExpr()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseNewExpr ( )

Definition at line 3848 of file ItaniumDemangle.h.

◆ parseNumber()

template<typename Alloc , typename Derived >
StringView llvm::itanium_demangle::AbstractManglingParser< Alloc, Derived >::parseNumber ( bool  AllowNegative = false)

Definition at line 3158 of file ItaniumDemangle.h.

◆ parseOperatorName()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseOperatorName ( NameState State)

Definition at line 2550 of file ItaniumDemangle.h.

◆ parsePointerToMemberType()

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

Definition at line 3349 of file ItaniumDemangle.h.

◆ parsePositiveInteger()

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

Definition at line 3171 of file ItaniumDemangle.h.

◆ parsePrefixExpr()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parsePrefixExpr ( StringView  Kind)

Definition at line 3775 of file ItaniumDemangle.h.

◆ parseQualifiedType()

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

Definition at line 3389 of file ItaniumDemangle.h.

◆ parseSeqId()

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

Definition at line 4916 of file ItaniumDemangle.h.

◆ parseSimpleId()

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

Definition at line 2963 of file ItaniumDemangle.h.

◆ parseSourceName()

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

Definition at line 2484 of file ItaniumDemangle.h.

◆ parseSpecialName()

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

Definition at line 4678 of file ItaniumDemangle.h.

◆ parseSubstitution()

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

Definition at line 4948 of file ItaniumDemangle.h.

◆ parseTemplateArg()

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

Definition at line 5057 of file ItaniumDemangle.h.

◆ parseTemplateArgs()

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

Definition at line 5099 of file ItaniumDemangle.h.

◆ parseTemplateParam()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseTemplateParam ( )

Definition at line 5015 of file ItaniumDemangle.h.

◆ parseType()

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

Parse the <type> production.

Definition at line 3450 of file ItaniumDemangle.h.

◆ parseUnnamedTypeName()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseUnnamedTypeName ( NameState State)

Definition at line 2454 of file ItaniumDemangle.h.

◆ parseUnqualifiedName()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseUnqualifiedName ( NameState State)

Definition at line 2423 of file ItaniumDemangle.h.

◆ parseUnresolvedName()

template<typename Derived , typename Alloc >
Node * llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::parseUnresolvedName ( )

Parse the <unresolved-name> production.

Definition at line 3053 of file ItaniumDemangle.h.

◆ parseUnresolvedType()

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

Definition at line 2994 of file ItaniumDemangle.h.

◆ parseUnscopedName()

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

Definition at line 2406 of file ItaniumDemangle.h.

◆ parseVectorType()

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

Definition at line 3271 of file ItaniumDemangle.h.

◆ popTrailingNodeArray()

template<typename Derived, typename Alloc>
NodeArray llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::popTrailingNodeArray ( size_t  FromPosition)
inline

Definition at line 2195 of file ItaniumDemangle.h.

◆ reset()

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

Definition at line 2171 of file ItaniumDemangle.h.

Referenced by llvm::ItaniumPartialDemangler::partialDemangle().

◆ resolveForwardTemplateRefs()

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

Definition at line 2280 of file ItaniumDemangle.h.

Member Data Documentation

◆ ASTAllocator

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

Definition at line 2164 of file ItaniumDemangle.h.

◆ First

template<typename Derived, typename Alloc>
const char* llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::First

Definition at line 2138 of file ItaniumDemangle.h.

◆ ForwardTemplateRefs

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

Definition at line 2158 of file ItaniumDemangle.h.

Referenced by llvm::itaniumDemangle().

◆ Last

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

Definition at line 2139 of file ItaniumDemangle.h.

◆ Names

template<typename Derived, typename Alloc>
PODSmallVector<Node *, 32> llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::Names

Definition at line 2144 of file ItaniumDemangle.h.

◆ ParsingLambdaParams

template<typename Derived, typename Alloc>
bool llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::ParsingLambdaParams = false

Definition at line 2162 of file ItaniumDemangle.h.

◆ PermitForwardTemplateReferences

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

Definition at line 2161 of file ItaniumDemangle.h.

◆ Subs

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

Definition at line 2149 of file ItaniumDemangle.h.

◆ TemplateParams

template<typename Derived, typename Alloc>
PODSmallVector<Node *, 8> llvm::itanium_demangle::AbstractManglingParser< Derived, Alloc >::TemplateParams

Definition at line 2154 of file ItaniumDemangle.h.

◆ TryToParseTemplateArgs

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

Definition at line 2160 of file ItaniumDemangle.h.


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