LLVM 20.0.0git
|
#include "llvm/Demangle/ItaniumDemangle.h"
Inherited by 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 : 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 | |
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. | |
Definition at line 163 of file ItaniumDemangle.h.
|
strong |
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 172 of file ItaniumDemangle.h.
enum Node::Kind : unsigned char |
Definition at line 165 of file ItaniumDemangle.h.
|
strong |
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 176 of file ItaniumDemangle.h.
|
inline |
Definition at line 218 of file ItaniumDemangle.h.
|
inline |
Definition at line 223 of file ItaniumDemangle.h.
|
virtualdefault |
DEMANGLE_DUMP_METHOD void Node::dump | ( | ) | const |
Referenced by llvm::SDValue::dump(), and INITIALIZE_PASS().
|
inline |
Definition at line 259 of file ItaniumDemangle.h.
References ArrayCache.
|
inlinevirtual |
Reimplemented in NameType, AbiTagAttr, NestedName, MemberLikeFriendName, ModuleEntity, QualifiedName, NameWithTemplateArgs, GlobalQualifiedName, ExpandedSpecialSubstitution, and SpecialSubstitution.
Definition at line 305 of file ItaniumDemangle.h.
Referenced by AbiTagAttr::getBaseName(), NestedName::getBaseName(), MemberLikeFriendName::getBaseName(), ModuleEntity::getBaseName(), and NameWithTemplateArgs::getBaseName().
|
inline |
Definition at line 260 of file ItaniumDemangle.h.
References FunctionCache.
|
inline |
Definition at line 255 of file ItaniumDemangle.h.
Referenced by ObjCProtoName::isObjCObject(), AbstractManglingParser< Derived, Alloc >::parseCtorDtorName(), AbstractManglingParser< Derived, Alloc >::parseNestedName(), AbstractManglingParser< Derived, Alloc >::parseTemplateArgs(), AbstractManglingParser< Derived, Alloc >::parseTemplateParam(), AbstractManglingParser< Derived, Alloc >::parseUnscopedName(), NodeArray::printAsString(), BracedExpr::printLeft(), and BracedRangeExpr::printLeft().
|
inline |
Definition at line 257 of file ItaniumDemangle.h.
Referenced by BinaryExpr::match(), ArraySubscriptExpr::match(), PostfixExpr::match(), ConditionalExpr::match(), MemberExpr::match(), EnclosingExpr::match(), CastExpr::match(), CallExpr::match(), NewExpr::match(), DeleteExpr::match(), PrefixExpr::match(), ConversionExpr::match(), PointerToMemberConversionExpr::match(), printAsOperand(), BinaryExpr::printLeft(), ArraySubscriptExpr::printLeft(), PostfixExpr::printLeft(), ConditionalExpr::printLeft(), MemberExpr::printLeft(), and PrefixExpr::printLeft().
|
inline |
Definition at line 258 of file ItaniumDemangle.h.
References RHSComponentCache.
|
inlinevirtual |
Reimplemented in ParameterPack, and ForwardTemplateReference.
Definition at line 268 of file ItaniumDemangle.h.
Referenced by ForwardTemplateReference::getSyntaxNode().
|
inline |
Definition at line 243 of file ItaniumDemangle.h.
References ArrayCache, hasArraySlow(), Unknown, and Yes.
Referenced by QualType::hasArraySlow(), ForwardTemplateReference::hasArraySlow(), PointerToMemberType::printLeft(), and PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in ArrayType, QualType, ParameterPack, and ForwardTemplateReference.
Definition at line 263 of file ItaniumDemangle.h.
Referenced by hasArray().
|
inline |
Definition at line 249 of file ItaniumDemangle.h.
References FunctionCache, hasFunctionSlow(), Unknown, and Yes.
Referenced by QualType::hasFunctionSlow(), ForwardTemplateReference::hasFunctionSlow(), PointerToMemberType::printLeft(), and PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in FunctionType, FunctionEncoding, QualType, ParameterPack, and ForwardTemplateReference.
Definition at line 264 of file ItaniumDemangle.h.
Referenced by hasFunction().
|
inline |
Definition at line 237 of file ItaniumDemangle.h.
References hasRHSComponentSlow(), RHSComponentCache, Unknown, and Yes.
Referenced by QualType::hasRHSComponentSlow(), ReferenceType::hasRHSComponentSlow(), PointerToMemberType::hasRHSComponentSlow(), and ForwardTemplateReference::hasRHSComponentSlow().
|
inlinevirtual |
Reimplemented in ArrayType, FunctionType, FunctionEncoding, QualType, PointerType, ReferenceType, PointerToMemberType, ParameterPack, and ForwardTemplateReference.
Definition at line 262 of file ItaniumDemangle.h.
Referenced by hasRHSComponent().
|
inline |
Definition at line 283 of file ItaniumDemangle.h.
References No, printLeft(), printRight(), and RHSComponentCache.
Referenced by llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), printAsOperand(), ClosureTypeName::printDeclarator(), ElaboratedTypeSpefType::printLeft(), ObjCProtoName::printLeft(), SpecialName::printLeft(), CtorVtableSpecialName::printLeft(), NestedName::printLeft(), MemberLikeFriendName::printLeft(), ModuleName::printLeft(), ModuleEntity::printLeft(), LocalName::printLeft(), TemplateParamQualifiedArg::printLeft(), NameWithTemplateArgs::printLeft(), SubobjectExpr::printLeft(), EnclosingExpr::printLeft(), PointerToMemberConversionExpr::printLeft(), InitListExpr::printLeft(), BracedExpr::printLeft(), BracedRangeExpr::printLeft(), FoldExpr::printLeft(), EnumLiteral::printLeft(), ExprRequirement::printLeft(), NestedRequirement::printLeft(), printNode(), FunctionType::printRight(), FunctionEncoding::printRight(), and TemplateTemplateParamDecl::printRight().
|
inline |
Definition at line 272 of file ItaniumDemangle.h.
References getPrecedence(), P, and print().
Referenced by llvm::DOTGraphTraits< DOTFuncInfo * >::getBBName(), getSimpleNodeName(), llvm::operator<<(), llvm::DOTGraphTraits< DOTFuncInfo * >::printBasicBlock(), NoexceptSpec::printLeft(), ArraySubscriptExpr::printLeft(), PostfixExpr::printLeft(), PrefixExpr::printLeft(), FoldExpr::printLeft(), and llvm::SimpleNodeLabelString().
|
inlinevirtual |
Reimplemented in ArrayType.
Definition at line 301 of file ItaniumDemangle.h.
Referenced by InitListExpr::printLeft().
|
pure virtual |
Implemented in NodeArrayNode, DotSuffix, VendorExtQualType, QualType, ConversionOperatorType, PostfixQualifiedType, NameType, BitIntType, ElaboratedTypeSpefType, TransformedType, AbiTagAttr, EnableIfAttr, ObjCProtoName, PointerType, ReferenceType, PointerToMemberType, ArrayType, FunctionType, NoexceptSpec, DynamicExceptionSpec, ExplicitObjectParameter, FunctionEncoding, LiteralOperator, SpecialName, CtorVtableSpecialName, NestedName, MemberLikeFriendName, ModuleName, ModuleEntity, LocalName, QualifiedName, VectorType, PixelVectorType, BinaryFPType, SyntheticTemplateParamName, TemplateParamQualifiedArg, TypeTemplateParamDecl, ConstrainedTypeTemplateParamDecl, NonTypeTemplateParamDecl, TemplateTemplateParamDecl, TemplateParamPackDecl, ParameterPack, TemplateArgumentPack, ParameterPackExpansion, TemplateArgs, ForwardTemplateReference, NameWithTemplateArgs, GlobalQualifiedName, SpecialSubstitution, CtorDtorName, DtorName, UnnamedTypeName, ClosureTypeName, StructuredBindingName, BinaryExpr, ArraySubscriptExpr, PostfixExpr, ConditionalExpr, MemberExpr, SubobjectExpr, EnclosingExpr, CastExpr, SizeofParamPackExpr, CallExpr, NewExpr, DeleteExpr, PrefixExpr, FunctionParam, ConversionExpr, PointerToMemberConversionExpr, InitListExpr, BracedExpr, BracedRangeExpr, FoldExpr, ThrowExpr, BoolExpr, StringLiteral, LambdaExpr, EnumLiteral, IntegerLiteral, RequiresExpr, ExprRequirement, TypeRequirement, NestedRequirement, and FloatLiteralImpl< Float >.
Referenced by print(), QualType::printLeft(), AbiTagAttr::printLeft(), PointerToMemberType::printLeft(), ForwardTemplateReference::printLeft(), and CastExpr::printLeft().
|
inlinevirtual |
Reimplemented in QualType, PointerType, ReferenceType, PointerToMemberType, ArrayType, FunctionType, FunctionEncoding, TypeTemplateParamDecl, ConstrainedTypeTemplateParamDecl, NonTypeTemplateParamDecl, TemplateTemplateParamDecl, TemplateParamPackDecl, ParameterPack, and ForwardTemplateReference.
Definition at line 296 of file ItaniumDemangle.h.
Referenced by print(), QualType::printRight(), PointerToMemberType::printRight(), and ForwardTemplateReference::printRight().
void Node::visit | ( | Fn | F | ) | const |
Visit the most-derived object corresponding to this object.
Visit the node.
Calls F(P)
, where P
is the node cast to the appropriate derived class.
Definition at line 2621 of file ItaniumDemangle.h.
References DEMANGLE_ASSERT.
|
protected |
Track if this node is a (possibly qualified) array type.
This can affect how we format the output string.
Definition at line 211 of file ItaniumDemangle.h.
Referenced by getArrayCache(), hasArray(), and ParameterPack::ParameterPack().
|
protected |
Track if this node is a (possibly qualified) function type.
This can affect how we format the output string.
Definition at line 215 of file ItaniumDemangle.h.
Referenced by getFunctionCache(), hasFunction(), and ParameterPack::ParameterPack().
|
protected |
Tracks if this node has a component on its right side, in which case we need to call printRight.
Definition at line 207 of file ItaniumDemangle.h.
Referenced by getRHSComponentCache(), hasRHSComponent(), ParameterPack::ParameterPack(), and print().