struct ForwardTemplateReference

Declaration

struct ForwardTemplateReference : public Node { /* full declaration omitted */ };

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: When demangling a specialization of the conversion function template, we encounter the name of the template (including the \c 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\c ForwardTemplateReference node that is resolved after we parse the template arguments.

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1231

Inherits from: Node

Member Variables

public size_t Index
public llvm::itanium_demangle::Node* Ref = nullptr
public bool Printing = false

Inherited from Node:

public RHSComponentCache
public ArrayCache
public FunctionCache

Method Overview

  • public ForwardTemplateReference(size_t Index_)
  • public const llvm::itanium_demangle::Node * getSyntaxNode(llvm::itanium_demangle::OutputStream & S) const
  • public bool hasArraySlow(llvm::itanium_demangle::OutputStream & S) const
  • public bool hasFunctionSlow(llvm::itanium_demangle::OutputStream & S) const
  • public bool hasRHSComponentSlow(llvm::itanium_demangle::OutputStream & S) const
  • public template <typename Fn>void match(Fn F) const
  • public void printLeft(llvm::itanium_demangle::OutputStream & S) const
  • public void printRight(llvm::itanium_demangle::OutputStream & S) const

Inherited from Node:

Methods

ForwardTemplateReference(size_t Index_)

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1241

Parameters

size_t Index_

const llvm::itanium_demangle::Node* getSyntaxNode(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1269

Parameters

llvm::itanium_demangle::OutputStream& S

bool hasArraySlow(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1257

Parameters

llvm::itanium_demangle::OutputStream& S

bool hasFunctionSlow(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1263

Parameters

llvm::itanium_demangle::OutputStream& S

bool hasRHSComponentSlow(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1251

Parameters

llvm::itanium_demangle::OutputStream& S

template <typename Fn>
void match(Fn F) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1249

Templates

Fn

Parameters

Fn F

void printLeft(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1276

Parameters

llvm::itanium_demangle::OutputStream& S

void printRight(
    llvm::itanium_demangle::OutputStream& S) const

Declared at: llvm/include/llvm/Demangle/ItaniumDemangle.h:1282

Parameters

llvm::itanium_demangle::OutputStream& S