LLVM: ForwardTemplateReference Struct Reference (original) (raw)

A forward-reference to a template argument that was not known at the point where the template parameter name was parsed in a mangling. More...

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

Public Member Functions
ForwardTemplateReference (size_t Index_)
template
void match (Fn F) const =delete
bool hasRHSComponentSlow (OutputBuffer &OB) const override
bool hasArraySlow (OutputBuffer &OB) const override
bool hasFunctionSlow (OutputBuffer &OB) const override
const Node * getSyntaxNode (OutputBuffer &OB) const override
void printLeft (OutputBuffer &OB) const override
void printRight (OutputBuffer &OB) const override
- Public Member Functions inherited from Node
Node (Kind K_, Prec Precedence_=Prec::Primary, Cache RHSComponentCache_=Cache::No, Cache ArrayCache_=Cache::No, Cache FunctionCache_=Cache::No)
Node (Kind K_, Cache RHSComponentCache_, Cache ArrayCache_=Cache::No, Cache FunctionCache_=Cache::No)
template
void visit (Fn F) const
Visit the most-derived object corresponding to this object.
bool hasRHSComponent (OutputBuffer &OB) const
bool hasArray (OutputBuffer &OB) const
bool hasFunction (OutputBuffer &OB) const
Kind getKind () const
Prec getPrecedence () const
Cache getRHSComponentCache () const
Cache getArrayCache () const
Cache getFunctionCache () const
virtual bool hasRHSComponentSlow (OutputBuffer &) const
virtual bool hasArraySlow (OutputBuffer &) const
virtual bool hasFunctionSlow (OutputBuffer &) const
virtual const Node * getSyntaxNode (OutputBuffer &) const
void printAsOperand (OutputBuffer &OB, Prec P=Prec::Default, bool StrictlyWorse=false) const
void print (OutputBuffer &OB) const
virtual void printLeft (OutputBuffer &) const =0
virtual void printRight (OutputBuffer &) const
virtual bool printInitListAsType (OutputBuffer &, const NodeArray &) const
virtual std::string_view getBaseName () const
virtual ~Node ()=default
DEMANGLE_DUMP_METHOD void dump () const
Public Attributes
size_t Index
Node * Ref = nullptr
bool Printing = false
Additional Inherited Members
- Public Types inherited from Node
enum Kind : unsigned char
enum class Cache : unsigned char { Yes, No, Unknown }
Three-way bool to track a cached value. More...
enum class Prec { Primary, Postfix, Unary, Cast, PtrMem, Multiplicative, Additive, Shift, Spaceship, Relational, Equality, And, Xor, Ior, AndIf, OrIf, Conditional, Assign, Comma, Default }
Operator precedence for expression nodes. More...
- Protected Attributes inherited from Node
Cache RHSComponentCache: 2
Tracks if this node has a component on its right side, in which case we need to call printRight.
Cache ArrayCache: 2
Track if this node is a (possibly qualified) array type.
Cache FunctionCache: 2
Track if this node is a (possibly qualified) function type.

A forward-reference to a template argument that was not known at the point where the template parameter name was parsed in a mangling.

This is created when demangling the name of a specialization of a conversion function template:

struct A {

template operator T*();

};

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

When demangling a specialization of the conversion function template, we encounter the name of the template (including the T) before we reach the template argument list, so we cannot substitute the parameter name for the corresponding argument while parsing. Instead, we create a [ForwardTemplateReference](structForwardTemplateReference.html "A forward-reference to a template argument that was not known at the point where the template paramet...") node that is resolved after we parse the template arguments.

Definition at line 1563 of file ItaniumDemangle.h.

ForwardTemplateReference::ForwardTemplateReference ( size_t Index_) inline

getSyntaxNode()

hasArraySlow()

bool ForwardTemplateReference::hasArraySlow ( OutputBuffer & OB) const inlineoverridevirtual

hasFunctionSlow()

bool ForwardTemplateReference::hasFunctionSlow ( OutputBuffer & OB) const inlineoverridevirtual

hasRHSComponentSlow()

bool ForwardTemplateReference::hasRHSComponentSlow ( OutputBuffer & OB) const inlineoverridevirtual

match()

template

void ForwardTemplateReference::match ( Fn F) const delete

printLeft()

void ForwardTemplateReference::printLeft ( OutputBuffer & OB) const inlineoverridevirtual

printRight()

void ForwardTemplateReference::printRight ( OutputBuffer & OB) const inlineoverridevirtual

Index

size_t ForwardTemplateReference::Index

Printing

bool ForwardTemplateReference::Printing = false mutable

Ref

Node* ForwardTemplateReference::Ref = nullptr


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