LLVM 17.0.0git
|
#include "llvm/Demangle/ItaniumDemangle.h"
Inherited by AbiTagAttr, ArraySubscriptExpr, ArrayType, BinaryExpr, BinaryFPType, BitIntType, BoolExpr, BracedExpr, BracedRangeExpr, CallExpr, CastExpr, ClosureTypeName, ConditionalExpr, ConversionExpr, ConversionOperatorType, CtorDtorName, CtorVtableSpecialName, DeleteExpr, DotSuffix, DtorName, DynamicExceptionSpec, ElaboratedTypeSpefType, EnableIfAttr, EnclosingExpr, EnumLiteral, ExpandedSpecialSubstitution, FloatLiteralImpl< Float >, FoldExpr, ForwardTemplateReference, FunctionEncoding, FunctionParam, FunctionType, GlobalQualifiedName, InitListExpr, IntegerLiteral, LambdaExpr, LiteralOperator, LocalName, MemberExpr, ModuleEntity, ModuleName, NameType, NameWithTemplateArgs, NestedName, NewExpr, NodeArrayNode, NoexceptSpec, NonTypeTemplateParamDecl, ObjCProtoName, ParameterPack, ParameterPackExpansion, PixelVectorType, PointerToMemberConversionExpr, PointerToMemberType, PointerType, PostfixExpr, PostfixQualifiedType, PrefixExpr, QualType, QualifiedName, ReferenceType, SizeofParamPackExpr, SpecialName, StringLiteral, StructuredBindingName, SubobjectExpr, SyntheticTemplateParamName, TemplateArgs, TemplateArgumentPack, TemplateParamPackDecl, TemplateTemplateParamDecl, ThrowExpr, 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... | |
Public 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 158 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 167 of file ItaniumDemangle.h.
enum Node::Kind : unsigned char |
Definition at line 160 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 171 of file ItaniumDemangle.h.
|
inline |
Definition at line 214 of file ItaniumDemangle.h.
|
inline |
Definition at line 219 of file ItaniumDemangle.h.
|
virtualdefault |
DEMANGLE_DUMP_METHOD void Node::dump | ( | ) | const |
Referenced by llvm::SDValue::dump().
|
inlinevirtual |
Reimplemented in NameType, AbiTagAttr, NestedName, ModuleEntity, QualifiedName, NameWithTemplateArgs, GlobalQualifiedName, ExpandedSpecialSubstitution, and SpecialSubstitution.
Definition at line 291 of file ItaniumDemangle.h.
Referenced by AbiTagAttr::getBaseName(), NestedName::getBaseName(), ModuleEntity::getBaseName(), and NameWithTemplateArgs::getBaseName().
|
inline |
Definition at line 251 of file ItaniumDemangle.h.
Referenced by ObjCProtoName::isObjCObject(), AbstractManglingParser< Derived, Alloc >::parseCtorDtorName(), AbstractManglingParser< Derived, Alloc >::parseNestedName(), AbstractManglingParser< Derived, Alloc >::parseTemplateParam(), AbstractManglingParser< Derived, Alloc >::parseUnscopedName(), BracedExpr::printLeft(), and BracedRangeExpr::printLeft().
|
inline |
Definition at line 253 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().
|
inlinevirtual |
Reimplemented in ParameterPack, and ForwardTemplateReference.
Definition at line 261 of file ItaniumDemangle.h.
Referenced by ForwardTemplateReference::getSyntaxNode().
|
inline |
Definition at line 239 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 256 of file ItaniumDemangle.h.
Referenced by hasArray().
|
inline |
Definition at line 245 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 257 of file ItaniumDemangle.h.
Referenced by hasFunction().
|
inline |
Definition at line 233 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 255 of file ItaniumDemangle.h.
Referenced by hasRHSComponent().
|
inline |
Definition at line 276 of file ItaniumDemangle.h.
References No, printLeft(), printRight(), and RHSComponentCache.
Referenced by llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), printAsOperand(), ElaboratedTypeSpefType::printLeft(), ObjCProtoName::printLeft(), SpecialName::printLeft(), CtorVtableSpecialName::printLeft(), NestedName::printLeft(), ModuleName::printLeft(), ModuleEntity::printLeft(), LocalName::printLeft(), NameWithTemplateArgs::printLeft(), SubobjectExpr::printLeft(), EnclosingExpr::printLeft(), PointerToMemberConversionExpr::printLeft(), InitListExpr::printLeft(), BracedExpr::printLeft(), BracedRangeExpr::printLeft(), FoldExpr::printLeft(), EnumLiteral::printLeft(), printNode(), and FunctionType::printRight().
|
inline |
Definition at line 265 of file ItaniumDemangle.h.
References getPrecedence(), P, and print().
Referenced by llvm::CompleteNodeLabelString(), getSimpleNodeName(), llvm::operator<<(), NoexceptSpec::printLeft(), ArraySubscriptExpr::printLeft(), PostfixExpr::printLeft(), PrefixExpr::printLeft(), FoldExpr::printLeft(), and llvm::SimpleNodeLabelString().
|
pure virtual |
Implemented in NodeArrayNode, DotSuffix, VendorExtQualType, QualType, ConversionOperatorType, PostfixQualifiedType, NameType, BitIntType, ElaboratedTypeSpefType, AbiTagAttr, EnableIfAttr, ObjCProtoName, PointerType, ReferenceType, PointerToMemberType, ArrayType, FunctionType, NoexceptSpec, DynamicExceptionSpec, FunctionEncoding, LiteralOperator, SpecialName, CtorVtableSpecialName, NestedName, ModuleName, ModuleEntity, LocalName, QualifiedName, VectorType, PixelVectorType, BinaryFPType, SyntheticTemplateParamName, TypeTemplateParamDecl, 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, 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, NonTypeTemplateParamDecl, TemplateTemplateParamDecl, TemplateParamPackDecl, ParameterPack, and ForwardTemplateReference.
Definition at line 289 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 2367 of file ItaniumDemangle.h.
References assert().
Cache Node::ArrayCache |
Track if this node is a (possibly qualified) array type.
This can affect how we format the output string.
Definition at line 207 of file ItaniumDemangle.h.
Referenced by hasArray(), and ParameterPack::ParameterPack().
Cache Node::FunctionCache |
Track if this node is a (possibly qualified) function type.
This can affect how we format the output string.
Definition at line 211 of file ItaniumDemangle.h.
Referenced by hasFunction(), and ParameterPack::ParameterPack().
Cache Node::RHSComponentCache |
Tracks if this node has a component on its right side, in which case we need to call printRight.
Definition at line 203 of file ItaniumDemangle.h.
Referenced by hasRHSComponent(), ParameterPack::ParameterPack(), and print().