LLVM  16.0.0git
Public Member Functions | Public Attributes | List of all members
ForwardTemplateReference Struct Reference

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"

Inheritance diagram for ForwardTemplateReference:
Inheritance graph
[legend]
Collaboration diagram for ForwardTemplateReference:
Collaboration graph
[legend]

Public Member Functions

 ForwardTemplateReference (size_t Index_)
 
template<typename Fn >
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 NodegetSyntaxNode (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<typename Fn >
void visit (Fn F) const
 Visit the most-derived object corresponding to this object. More...
 
bool hasRHSComponent (OutputBuffer &OB) const
 
bool hasArray (OutputBuffer &OB) const
 
bool hasFunction (OutputBuffer &OB) const
 
Kind getKind () const
 
Prec getPrecedence () const
 
void printAsOperand (OutputBuffer &OB, Prec P=Prec::Default, bool StrictlyWorse=false) const
 
void print (OutputBuffer &OB) const
 
virtual StringView getBaseName () const
 
virtual ~Node ()=default
 
DEMANGLE_DUMP_METHOD void dump () const
 

Public Attributes

size_t Index
 
NodeRef = nullptr
 
bool Printing = false
 
- Public 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. More...
 
Cache ArrayCache: 2
 Track if this node is a (possibly qualified) array type. More...
 
Cache FunctionCache: 2
 Track if this node is a (possibly qualified) function type. More...
 

Additional Inherited Members

- Public Types inherited from Node
enum  Kind : unsigned char
 
enum  Cache : unsigned char { Cache::Yes, Cache::No, Cache::Unknown }
 Three-way bool to track a cached value. More...
 
enum  Prec {
  Prec::Primary, Prec::Postfix, Prec::Unary, Prec::Cast,
  Prec::PtrMem, Prec::Multiplicative, Prec::Additive, Prec::Shift,
  Prec::Spaceship, Prec::Relational, Prec::Equality, Prec::And,
  Prec::Xor, Prec::Ior, Prec::AndIf, Prec::OrIf,
  Prec::Conditional, Prec::Assign, Prec::Comma, Prec::Default
}
 Operator precedence for expression nodes. More...
 

Detailed Description

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<typename T> operator T*();
};

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 node that is resolved after we parse the template arguments.

Definition at line 1419 of file ItaniumDemangle.h.

Constructor & Destructor Documentation

◆ ForwardTemplateReference()

ForwardTemplateReference::ForwardTemplateReference ( size_t  Index_)
inline

Definition at line 1429 of file ItaniumDemangle.h.

Member Function Documentation

◆ getSyntaxNode()

const Node* ForwardTemplateReference::getSyntaxNode ( OutputBuffer OB) const
inlineoverridevirtual

Reimplemented from Node.

Definition at line 1457 of file ItaniumDemangle.h.

References Node::getSyntaxNode(), llvm::X86II::OB, Printing, and Ref.

◆ hasArraySlow()

bool ForwardTemplateReference::hasArraySlow ( OutputBuffer OB) const
inlineoverridevirtual

Reimplemented from Node.

Definition at line 1445 of file ItaniumDemangle.h.

References Node::hasArray(), llvm::X86II::OB, Printing, and Ref.

◆ hasFunctionSlow()

bool ForwardTemplateReference::hasFunctionSlow ( OutputBuffer OB) const
inlineoverridevirtual

Reimplemented from Node.

Definition at line 1451 of file ItaniumDemangle.h.

References Node::hasFunction(), llvm::X86II::OB, Printing, and Ref.

◆ hasRHSComponentSlow()

bool ForwardTemplateReference::hasRHSComponentSlow ( OutputBuffer OB) const
inlineoverridevirtual

Reimplemented from Node.

Definition at line 1439 of file ItaniumDemangle.h.

References Node::hasRHSComponent(), llvm::X86II::OB, Printing, and Ref.

◆ match()

template<typename Fn >
void ForwardTemplateReference::match ( Fn  F) const
delete

◆ printLeft()

void ForwardTemplateReference::printLeft ( OutputBuffer OB) const
inlineoverridevirtual

Implements Node.

Definition at line 1464 of file ItaniumDemangle.h.

References llvm::X86II::OB, Printing, Node::printLeft(), and Ref.

◆ printRight()

void ForwardTemplateReference::printRight ( OutputBuffer OB) const
inlineoverridevirtual

Reimplemented from Node.

Definition at line 1470 of file ItaniumDemangle.h.

References llvm::X86II::OB, Printing, Node::printRight(), and Ref.

Member Data Documentation

◆ Index

size_t ForwardTemplateReference::Index

Definition at line 1420 of file ItaniumDemangle.h.

◆ Printing

bool ForwardTemplateReference::Printing = false
mutable

◆ Ref

Node* ForwardTemplateReference::Ref = nullptr

The documentation for this struct was generated from the following file:
T
#define T
Definition: Mips16ISelLowering.cpp:341
A
* A
Definition: README_ALTIVEC.txt:89