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 Attributes | |
---|---|
size_t | Index |
Node * | Ref = nullptr |
bool | Printing = false |
Additional Inherited Members | |
---|---|
![]() |
|
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... | |
![]() |
|
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:
- include/llvm/Demangle/ItaniumDemangle.h