LLVM: Node Class Reference (original) (raw)

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

Inherited by FloatLiteralImpl< float >, FloatLiteralImpl< double >, FloatLiteralImpl< long double >, AbiTagAttr, ArraySubscriptExpr, ArrayType, BinaryExpr, BinaryFPType, BitIntType, BoolExpr, BracedExpr, BracedRangeExpr, CallExpr, CastExpr, ClosureTypeName, ConditionalExpr, ConstrainedTypeTemplateParamDecl, ConversionExpr, ConversionOperatorType, CtorDtorName, CtorVtableSpecialName, DeleteExpr, DotSuffix, DtorName, DynamicExceptionSpec, ElaboratedTypeSpefType, EnableIfAttr, EnclosingExpr, EnumLiteral, ExpandedSpecialSubstitution, ExplicitObjectParameter, ExprRequirement, FloatLiteralImpl< Float >, FoldExpr, ForwardTemplateReference, FunctionEncoding, FunctionParam, FunctionType, GlobalQualifiedName, InitListExpr, IntegerLiteral, LambdaExpr, LiteralOperator, LocalName, MemberExpr, MemberLikeFriendName, ModuleEntity, ModuleName, NameType, NameWithTemplateArgs, NestedName, NestedRequirement, NewExpr, NodeArrayNode, NoexceptSpec, NonTypeTemplateParamDecl, ObjCProtoName, ParameterPack, ParameterPackExpansion, PixelVectorType, PointerToMemberConversionExpr, PointerToMemberType, PointerType, PostfixExpr, PostfixQualifiedType, PrefixExpr, QualType, QualifiedName, ReferenceType, RequiresExpr, SizeofParamPackExpr, SpecialName, StringLiteral, StructuredBindingName, SubobjectExpr, SyntheticTemplateParamName, TemplateArgs, TemplateArgumentPack, TemplateParamPackDecl, TemplateParamQualifiedArg, TemplateTemplateParamDecl, ThrowExpr, TransformedType, TypeRequirement, TypeTemplateParamDecl, UnnamedTypeName, VectorType, and VendorExtQualType.

Public Types
enum Kind : uint8_t
enum class Cache : uint8_t { Yes, No, Unknown }
Three-way bool to track a cached value. More...
enum class Prec : uint8_t { 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...
Public Member Functions
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 bool printInitListAsType (OutputBuffer &, const NodeArray &) const
virtual std::string_view getBaseName () const
virtual ~Node ()=default
DEMANGLE_DUMP_METHOD void dump () const
Protected Attributes
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.
Friends
class OutputBuffer

Definition at line 166 of file ItaniumDemangle.h.

Cache

Three-way bool to track a cached value.

Unknown is possible if this node has an unexpanded parameter pack below it that may affect this cache.

Enumerator
Yes
No
Unknown

Definition at line 175 of file ItaniumDemangle.h.

Kind

Prec

Operator precedence for expression nodes.

Used to determine required parens in expression emission.

Enumerator
Primary
Postfix
Unary
Cast
PtrMem
Multiplicative
Additive
Shift
Spaceship
Relational
Equality
And
Xor
Ior
AndIf
OrIf
Conditional
Assign
Comma
Default

Definition at line 179 of file ItaniumDemangle.h.

Node() [1/2]

Node::Node ( Kind K_, Prec Precedence_ = Prec::Primary, Cache RHSComponentCache_ = Cache::No, Cache ArrayCache_ = Cache::No, Cache FunctionCache_ = Cache::No ) inline

Definition at line 221 of file ItaniumDemangle.h.

References ArrayCache, FunctionCache, No, Primary, and RHSComponentCache.

Referenced by AbiTagAttr::AbiTagAttr(), ArraySubscriptExpr::ArraySubscriptExpr(), ArrayType::ArrayType(), BinaryExpr::BinaryExpr(), BinaryFPType::BinaryFPType(), BitIntType::BitIntType(), BoolExpr::BoolExpr(), BracedExpr::BracedExpr(), BracedRangeExpr::BracedRangeExpr(), CallExpr::CallExpr(), CastExpr::CastExpr(), ClosureTypeName::ClosureTypeName(), ConditionalExpr::ConditionalExpr(), ConstrainedTypeTemplateParamDecl::ConstrainedTypeTemplateParamDecl(), ConversionExpr::ConversionExpr(), ConversionOperatorType::ConversionOperatorType(), CtorDtorName::CtorDtorName(), CtorVtableSpecialName::CtorVtableSpecialName(), DeleteExpr::DeleteExpr(), DotSuffix::DotSuffix(), DtorName::DtorName(), DynamicExceptionSpec::DynamicExceptionSpec(), ElaboratedTypeSpefType::ElaboratedTypeSpefType(), EnableIfAttr::EnableIfAttr(), EnclosingExpr::EnclosingExpr(), EnumLiteral::EnumLiteral(), ExpandedSpecialSubstitution::ExpandedSpecialSubstitution(), ExplicitObjectParameter::ExplicitObjectParameter(), ExprRequirement::ExprRequirement(), FloatLiteralImpl< float >::FloatLiteralImpl(), FoldExpr::FoldExpr(), ForwardTemplateReference::ForwardTemplateReference(), FunctionEncoding::FunctionEncoding(), FunctionParam::FunctionParam(), FunctionType::FunctionType(), TemplateParamQualifiedArg::getArg(), FunctionEncoding::getAttrs(), VectorType::getBaseType(), ParameterPackExpansion::getChild(), QualType::getChild(), VectorType::getDimension(), FunctionEncoding::getName(), PointerType::getPointee(), FunctionEncoding::getRequires(), FunctionEncoding::getReturnType(), ForwardTemplateReference::getSyntaxNode(), getSyntaxNode(), ParameterPack::getSyntaxNode(), VendorExtQualType::getTA(), VendorExtQualType::getTy(), GlobalQualifiedName::GlobalQualifiedName(), InitListExpr::InitListExpr(), IntegerLiteral::IntegerLiteral(), LambdaExpr::LambdaExpr(), LiteralOperator::LiteralOperator(), LocalName::LocalName(), MemberExpr::MemberExpr(), MemberLikeFriendName::MemberLikeFriendName(), ModuleEntity::ModuleEntity(), ModuleName::ModuleName(), NameType::NameType(), NameWithTemplateArgs::NameWithTemplateArgs(), NestedName::NestedName(), NestedRequirement::NestedRequirement(), NewExpr::NewExpr(), Node(), NodeArrayNode::NodeArrayNode(), NoexceptSpec::NoexceptSpec(), NonTypeTemplateParamDecl::NonTypeTemplateParamDecl(), ObjCProtoName::ObjCProtoName(), ParameterPack::ParameterPack(), ParameterPackExpansion::ParameterPackExpansion(), PixelVectorType::PixelVectorType(), PointerToMemberConversionExpr::PointerToMemberConversionExpr(), PointerToMemberType::PointerToMemberType(), PointerType::PointerType(), PostfixExpr::PostfixExpr(), PostfixQualifiedType::PostfixQualifiedType(), PrefixExpr::PrefixExpr(), RequiresExpr::printLeft(), QualifiedName::QualifiedName(), QualType::QualType(), ReferenceType::ReferenceType(), RequiresExpr::RequiresExpr(), SizeofParamPackExpr::SizeofParamPackExpr(), SpecialName::SpecialName(), StringLiteral::StringLiteral(), StructuredBindingName::StructuredBindingName(), SubobjectExpr::SubobjectExpr(), SyntheticTemplateParamName::SyntheticTemplateParamName(), TemplateArgs::TemplateArgs(), TemplateArgumentPack::TemplateArgumentPack(), TemplateParamPackDecl::TemplateParamPackDecl(), TemplateParamQualifiedArg::TemplateParamQualifiedArg(), TemplateTemplateParamDecl::TemplateTemplateParamDecl(), ThrowExpr::ThrowExpr(), TransformedType::TransformedType(), TypeRequirement::TypeRequirement(), TypeTemplateParamDecl::TypeTemplateParamDecl(), UnnamedTypeName::UnnamedTypeName(), VectorType::VectorType(), and VendorExtQualType::VendorExtQualType().

Node() [2/2]

Node::Node ( Kind K_, Cache RHSComponentCache_, Cache ArrayCache_ = Cache::No, Cache FunctionCache_ = Cache::No ) inline
virtual Node::~Node ( ) virtualdefault

dump()

getArrayCache()

Cache Node::getArrayCache ( ) const inline

getBaseName()

virtual std::string_view Node::getBaseName ( ) const inlinevirtual

getFunctionCache()

Cache Node::getFunctionCache ( ) const inline

getKind()

Kind Node::getKind ( ) const inline

Definition at line 258 of file ItaniumDemangle.h.

Referenced by AbstractManglingParser< Derived, Alloc >::parseCtorDtorName(), AbstractManglingParser< Derived, Alloc >::parseNestedName(), AbstractManglingParser< Derived, Alloc >::parseTemplateArgs(), AbstractManglingParser< Derived, Alloc >::parseTemplateParam(), AbstractManglingParser< Derived, Alloc >::parseUnscopedName(), NodeArray::printAsString(), and llvm::msgpack::Document::writeToBlob().

getPrecedence()

Prec Node::getPrecedence ( ) const inline

Definition at line 260 of file ItaniumDemangle.h.

Referenced by ArraySubscriptExpr::match(), BinaryExpr::match(), CallExpr::match(), CastExpr::match(), ConditionalExpr::match(), ConversionExpr::match(), DeleteExpr::match(), EnclosingExpr::match(), MemberExpr::match(), NewExpr::match(), PointerToMemberConversionExpr::match(), PostfixExpr::match(), PrefixExpr::match(), printAsOperand(), ArraySubscriptExpr::printLeft(), BinaryExpr::printLeft(), ConditionalExpr::printLeft(), MemberExpr::printLeft(), PostfixExpr::printLeft(), and PrefixExpr::printLeft().

getRHSComponentCache()

Cache Node::getRHSComponentCache ( ) const inline

getSyntaxNode()

hasArray()

hasArraySlow()

hasFunction()

hasFunctionSlow()

hasRHSComponent()

hasRHSComponentSlow()

print()

printAsOperand()

void Node::printAsOperand ( OutputBuffer & OB, Prec P = Prec::Default, bool StrictlyWorse = false ) const inline

printInitListAsType()

visit()

template

void Node::visit ( Fn F ) const

Visit the most-derived object corresponding to this object.

Visit the node.

Calls [F(P)](MD5%5F8cpp.html#a96d73bbd7af15cb1fc38c3f4a3bd82e9), where P is the node cast to the appropriate derived class.

Definition at line 2639 of file ItaniumDemangle.h.

References DEMANGLE_ASSERT, and F.

OutputBuffer

Definition at line 309 of file ItaniumDemangle.h.

References OutputBuffer.

Referenced by ForwardTemplateReference::getSyntaxNode(), getSyntaxNode(), ParameterPack::getSyntaxNode(), hasArray(), ArrayType::hasArraySlow(), ForwardTemplateReference::hasArraySlow(), hasArraySlow(), ParameterPack::hasArraySlow(), QualType::hasArraySlow(), hasFunction(), ForwardTemplateReference::hasFunctionSlow(), FunctionEncoding::hasFunctionSlow(), FunctionType::hasFunctionSlow(), hasFunctionSlow(), ParameterPack::hasFunctionSlow(), QualType::hasFunctionSlow(), hasRHSComponent(), ArrayType::hasRHSComponentSlow(), ForwardTemplateReference::hasRHSComponentSlow(), FunctionEncoding::hasRHSComponentSlow(), FunctionType::hasRHSComponentSlow(), hasRHSComponentSlow(), ParameterPack::hasRHSComponentSlow(), PointerToMemberType::hasRHSComponentSlow(), PointerType::hasRHSComponentSlow(), QualType::hasRHSComponentSlow(), ReferenceType::hasRHSComponentSlow(), OutputBuffer, print(), printAsOperand(), ClosureTypeName::printDeclarator(), ArrayType::printInitListAsType(), printInitListAsType(), AbiTagAttr::printLeft(), ArraySubscriptExpr::printLeft(), ArrayType::printLeft(), BinaryExpr::printLeft(), BinaryFPType::printLeft(), BitIntType::printLeft(), BoolExpr::printLeft(), BracedExpr::printLeft(), BracedRangeExpr::printLeft(), CallExpr::printLeft(), CastExpr::printLeft(), ClosureTypeName::printLeft(), ConditionalExpr::printLeft(), ConstrainedTypeTemplateParamDecl::printLeft(), ConversionExpr::printLeft(), ConversionOperatorType::printLeft(), CtorDtorName::printLeft(), CtorVtableSpecialName::printLeft(), DeleteExpr::printLeft(), DotSuffix::printLeft(), DtorName::printLeft(), DynamicExceptionSpec::printLeft(), ElaboratedTypeSpefType::printLeft(), EnableIfAttr::printLeft(), EnclosingExpr::printLeft(), EnumLiteral::printLeft(), ExplicitObjectParameter::printLeft(), ExprRequirement::printLeft(), FloatLiteralImpl< float >::printLeft(), FoldExpr::printLeft(), ForwardTemplateReference::printLeft(), FunctionEncoding::printLeft(), FunctionParam::printLeft(), FunctionType::printLeft(), GlobalQualifiedName::printLeft(), InitListExpr::printLeft(), IntegerLiteral::printLeft(), LambdaExpr::printLeft(), LiteralOperator::printLeft(), LocalName::printLeft(), MemberExpr::printLeft(), MemberLikeFriendName::printLeft(), ModuleEntity::printLeft(), ModuleName::printLeft(), NameType::printLeft(), NameWithTemplateArgs::printLeft(), NestedName::printLeft(), NestedRequirement::printLeft(), NewExpr::printLeft(), NodeArrayNode::printLeft(), NoexceptSpec::printLeft(), NonTypeTemplateParamDecl::printLeft(), ObjCProtoName::printLeft(), ParameterPack::printLeft(), ParameterPackExpansion::printLeft(), PixelVectorType::printLeft(), PointerToMemberConversionExpr::printLeft(), PointerToMemberType::printLeft(), PointerType::printLeft(), PostfixExpr::printLeft(), PostfixQualifiedType::printLeft(), PrefixExpr::printLeft(), QualifiedName::printLeft(), QualType::printLeft(), ReferenceType::printLeft(), RequiresExpr::printLeft(), SizeofParamPackExpr::printLeft(), SpecialName::printLeft(), SpecialSubstitution::printLeft(), StringLiteral::printLeft(), StructuredBindingName::printLeft(), SubobjectExpr::printLeft(), SyntheticTemplateParamName::printLeft(), TemplateArgs::printLeft(), TemplateArgumentPack::printLeft(), TemplateParamPackDecl::printLeft(), TemplateParamQualifiedArg::printLeft(), TemplateTemplateParamDecl::printLeft(), ThrowExpr::printLeft(), TransformedType::printLeft(), TypeRequirement::printLeft(), TypeTemplateParamDecl::printLeft(), UnnamedTypeName::printLeft(), VectorType::printLeft(), VendorExtQualType::printLeft(), QualType::printQuals(), ArrayType::printRight(), ConstrainedTypeTemplateParamDecl::printRight(), ForwardTemplateReference::printRight(), FunctionEncoding::printRight(), FunctionType::printRight(), NonTypeTemplateParamDecl::printRight(), ParameterPack::printRight(), PointerToMemberType::printRight(), PointerType::printRight(), QualType::printRight(), ReferenceType::printRight(), TemplateParamPackDecl::printRight(), TemplateTemplateParamDecl::printRight(), and TypeTemplateParamDecl::printRight().

ArrayCache

FunctionCache

Cache Node::FunctionCache protected

RHSComponentCache

Cache Node::RHSComponentCache protected

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