LLVM
8.0.1
|
#include "llvm/Demangle/ItaniumDemangle.h"
Inherited by llvm::itanium_demangle::AbiTagAttr, llvm::itanium_demangle::ArraySubscriptExpr, llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::BinaryExpr, llvm::itanium_demangle::BoolExpr, llvm::itanium_demangle::BracedExpr, llvm::itanium_demangle::BracedRangeExpr, llvm::itanium_demangle::CallExpr, llvm::itanium_demangle::CastExpr, llvm::itanium_demangle::ClosureTypeName, llvm::itanium_demangle::ConditionalExpr, llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::ConversionOperatorType, llvm::itanium_demangle::CtorDtorName, llvm::itanium_demangle::CtorVtableSpecialName, llvm::itanium_demangle::DeleteExpr, llvm::itanium_demangle::DotSuffix, llvm::itanium_demangle::DtorName, llvm::itanium_demangle::DynamicExceptionSpec, llvm::itanium_demangle::ElaboratedTypeSpefType, llvm::itanium_demangle::EnableIfAttr, llvm::itanium_demangle::EnclosingExpr, llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::FloatLiteralImpl< Float >, llvm::itanium_demangle::FoldExpr, llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::FunctionParam, llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::InitListExpr, llvm::itanium_demangle::IntegerCastExpr, llvm::itanium_demangle::IntegerLiteral, llvm::itanium_demangle::LiteralOperator, llvm::itanium_demangle::LocalName, llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::NameType, llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::NestedName, llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::NodeArrayNode, llvm::itanium_demangle::NoexceptSpec, llvm::itanium_demangle::ObjCProtoName, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::ParameterPackExpansion, llvm::itanium_demangle::PixelVectorType, llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::PointerType, llvm::itanium_demangle::PostfixExpr, llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::PrefixExpr, llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::QualType, llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::SizeofParamPackExpr, llvm::itanium_demangle::SpecialName, llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::StdQualifiedName, llvm::itanium_demangle::StructuredBindingName, llvm::itanium_demangle::TemplateArgs, llvm::itanium_demangle::TemplateArgumentPack, llvm::itanium_demangle::ThrowExpr, llvm::itanium_demangle::UnnamedTypeName, llvm::itanium_demangle::VectorType, and llvm::itanium_demangle::VendorExtQualType.
Public Types | |
enum | Kind : unsigned char |
enum | Cache : unsigned char { Cache::Yes, Cache::No, Cache::Unknown } |
Three-way bool to track a cached value. More... | |
Public Member Functions | |
Node (Kind K_, Cache RHSComponentCache_=Cache::No, Cache ArrayCache_=Cache::No, Cache FunctionCache_=Cache::No) | |
template<typename Fn > | |
void | visit (Fn F) const |
Visit the most-derived object corresponding to this object. More... | |
bool | hasRHSComponent (OutputStream &S) const |
bool | hasArray (OutputStream &S) const |
bool | hasFunction (OutputStream &S) const |
Kind | getKind () const |
virtual bool | hasRHSComponentSlow (OutputStream &) const |
virtual bool | hasArraySlow (OutputStream &) const |
virtual bool | hasFunctionSlow (OutputStream &) const |
virtual const Node * | getSyntaxNode (OutputStream &) const |
void | print (OutputStream &S) const |
virtual void | printLeft (OutputStream &) const =0 |
virtual void | printRight (OutputStream &) const |
virtual StringView | getBaseName () const |
virtual | ~Node ()=default |
LLVM_DUMP_METHOD void | dump () const |
Public Attributes | |
Cache | RHSComponentCache |
Tracks if this node has a component on its right side, in which case we need to call printRight. More... | |
Cache | ArrayCache |
Track if this node is a (possibly qualified) array type. More... | |
Cache | FunctionCache |
Track if this node is a (possibly qualified) function type. More... | |
Definition at line 102 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 112 of file ItaniumDemangle.h.
Definition at line 104 of file ItaniumDemangle.h.
|
inline |
Definition at line 132 of file ItaniumDemangle.h.
|
virtualdefault |
Referenced by getBaseName().
void itanium_demangle::Node::dump | ( | ) | const |
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::StdQualifiedName, llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::NestedName, and llvm::itanium_demangle::NameType.
Definition at line 191 of file ItaniumDemangle.h.
References dump(), LLVM_DUMP_METHOD, and ~Node().
Referenced by llvm::itanium_demangle::NestedName::getBaseName(), llvm::itanium_demangle::QualifiedName::getBaseName(), llvm::itanium_demangle::NameWithTemplateArgs::getBaseName(), and llvm::itanium_demangle::StdQualifiedName::getBaseName().
|
inline |
Definition at line 164 of file ItaniumDemangle.h.
Referenced by llvm::ItaniumPartialDemangler::getFunctionBaseName(), llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), llvm::ItaniumPartialDemangler::isCtorOrDtor(), llvm::itanium_demangle::ObjCProtoName::isObjCObject(), llvm::itanium_demangle::AbstractManglingParser< ManglingParser< Alloc >, Alloc >::parseCtorDtorName(), llvm::itanium_demangle::AbstractManglingParser< ManglingParser< Alloc >, Alloc >::parseTemplateArgs(), llvm::itanium_demangle::AbstractManglingParser< ManglingParser< Alloc >, Alloc >::parseTemplateParam(), llvm::itanium_demangle::BracedExpr::printLeft(), and llvm::itanium_demangle::BracedRangeExpr::printLeft().
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::ForwardTemplateReference, and llvm::itanium_demangle::ParameterPack.
Definition at line 172 of file ItaniumDemangle.h.
Referenced by llvm::itanium_demangle::ForwardTemplateReference::getSyntaxNode().
|
inline |
Definition at line 152 of file ItaniumDemangle.h.
References hasArraySlow(), Unknown, and Yes.
Referenced by llvm::itanium_demangle::QualType::hasArraySlow(), llvm::itanium_demangle::ForwardTemplateReference::hasArraySlow(), llvm::itanium_demangle::PointerToMemberType::printLeft(), and llvm::itanium_demangle::PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::ArrayType, and llvm::itanium_demangle::QualType.
Definition at line 167 of file ItaniumDemangle.h.
Referenced by hasArray().
|
inline |
Definition at line 158 of file ItaniumDemangle.h.
References hasFunctionSlow(), Unknown, and Yes.
Referenced by llvm::itanium_demangle::QualType::hasFunctionSlow(), llvm::itanium_demangle::ForwardTemplateReference::hasFunctionSlow(), llvm::itanium_demangle::PointerToMemberType::printLeft(), and llvm::itanium_demangle::PointerToMemberType::printRight().
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::FunctionType, and llvm::itanium_demangle::QualType.
Definition at line 168 of file ItaniumDemangle.h.
Referenced by hasFunction().
|
inline |
Definition at line 146 of file ItaniumDemangle.h.
References hasRHSComponentSlow(), Unknown, and Yes.
Referenced by llvm::itanium_demangle::QualType::hasRHSComponentSlow(), llvm::itanium_demangle::ReferenceType::hasRHSComponentSlow(), llvm::itanium_demangle::PointerToMemberType::hasRHSComponentSlow(), and llvm::itanium_demangle::ForwardTemplateReference::hasRHSComponentSlow().
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::PointerType, and llvm::itanium_demangle::QualType.
Definition at line 166 of file ItaniumDemangle.h.
Referenced by hasRHSComponent().
|
inline |
Definition at line 176 of file ItaniumDemangle.h.
References No, printLeft(), and printRight().
Referenced by llvm::ItaniumPartialDemangler::getFunctionDeclContextName(), llvm::itaniumDemangle(), llvm::itanium_demangle::ElaboratedTypeSpefType::printLeft(), llvm::itanium_demangle::ObjCProtoName::printLeft(), llvm::itanium_demangle::NoexceptSpec::printLeft(), llvm::itanium_demangle::FunctionEncoding::printLeft(), llvm::itanium_demangle::LiteralOperator::printLeft(), llvm::itanium_demangle::SpecialName::printLeft(), llvm::itanium_demangle::CtorVtableSpecialName::printLeft(), llvm::itanium_demangle::NestedName::printLeft(), llvm::itanium_demangle::LocalName::printLeft(), llvm::itanium_demangle::QualifiedName::printLeft(), llvm::itanium_demangle::VectorType::printLeft(), llvm::itanium_demangle::NameWithTemplateArgs::printLeft(), llvm::itanium_demangle::StdQualifiedName::printLeft(), llvm::itanium_demangle::BinaryExpr::printLeft(), llvm::itanium_demangle::ArraySubscriptExpr::printLeft(), llvm::itanium_demangle::PostfixExpr::printLeft(), llvm::itanium_demangle::ConditionalExpr::printLeft(), llvm::itanium_demangle::MemberExpr::printLeft(), llvm::itanium_demangle::EnclosingExpr::printLeft(), llvm::itanium_demangle::CallExpr::printLeft(), llvm::itanium_demangle::NewExpr::printLeft(), llvm::itanium_demangle::DeleteExpr::printLeft(), llvm::itanium_demangle::PrefixExpr::printLeft(), llvm::itanium_demangle::ConversionExpr::printLeft(), llvm::itanium_demangle::InitListExpr::printLeft(), llvm::itanium_demangle::BracedExpr::printLeft(), llvm::itanium_demangle::BracedRangeExpr::printLeft(), llvm::itanium_demangle::FoldExpr::printLeft(), llvm::itanium_demangle::ThrowExpr::printLeft(), llvm::itanium_demangle::IntegerCastExpr::printLeft(), printNode(), llvm::itanium_demangle::ArrayType::printRight(), llvm::itanium_demangle::FunctionType::printRight(), llvm::itanium_demangle::FunctionEncoding::printRight(), and llvm::itanium_demangle::NodeArray::printWithComma().
|
pure virtual |
Implemented in llvm::itanium_demangle::FloatLiteralImpl< Float >, llvm::itanium_demangle::IntegerLiteral, llvm::itanium_demangle::IntegerCastExpr, llvm::itanium_demangle::BoolExpr, llvm::itanium_demangle::ThrowExpr, llvm::itanium_demangle::FoldExpr, llvm::itanium_demangle::BracedRangeExpr, llvm::itanium_demangle::BracedExpr, llvm::itanium_demangle::InitListExpr, llvm::itanium_demangle::ConversionExpr, llvm::itanium_demangle::FunctionParam, llvm::itanium_demangle::PrefixExpr, llvm::itanium_demangle::DeleteExpr, llvm::itanium_demangle::NewExpr, llvm::itanium_demangle::CallExpr, llvm::itanium_demangle::SizeofParamPackExpr, llvm::itanium_demangle::CastExpr, llvm::itanium_demangle::EnclosingExpr, llvm::itanium_demangle::MemberExpr, llvm::itanium_demangle::ConditionalExpr, llvm::itanium_demangle::PostfixExpr, llvm::itanium_demangle::ArraySubscriptExpr, llvm::itanium_demangle::BinaryExpr, llvm::itanium_demangle::StructuredBindingName, llvm::itanium_demangle::ClosureTypeName, llvm::itanium_demangle::UnnamedTypeName, llvm::itanium_demangle::DtorName, llvm::itanium_demangle::CtorDtorName, llvm::itanium_demangle::SpecialSubstitution, llvm::itanium_demangle::ExpandedSpecialSubstitution, llvm::itanium_demangle::StdQualifiedName, llvm::itanium_demangle::GlobalQualifiedName, llvm::itanium_demangle::NameWithTemplateArgs, llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::TemplateArgs, llvm::itanium_demangle::ParameterPackExpansion, llvm::itanium_demangle::TemplateArgumentPack, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::PixelVectorType, llvm::itanium_demangle::VectorType, llvm::itanium_demangle::QualifiedName, llvm::itanium_demangle::LocalName, llvm::itanium_demangle::NestedName, llvm::itanium_demangle::CtorVtableSpecialName, llvm::itanium_demangle::SpecialName, llvm::itanium_demangle::LiteralOperator, llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::DynamicExceptionSpec, llvm::itanium_demangle::NoexceptSpec, llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::PointerType, llvm::itanium_demangle::ObjCProtoName, llvm::itanium_demangle::EnableIfAttr, llvm::itanium_demangle::AbiTagAttr, llvm::itanium_demangle::ElaboratedTypeSpefType, llvm::itanium_demangle::NameType, llvm::itanium_demangle::PostfixQualifiedType, llvm::itanium_demangle::ConversionOperatorType, llvm::itanium_demangle::QualType, llvm::itanium_demangle::VendorExtQualType, llvm::itanium_demangle::DotSuffix, and llvm::itanium_demangle::NodeArrayNode.
Referenced by print(), llvm::itanium_demangle::QualType::printLeft(), llvm::itanium_demangle::AbiTagAttr::printLeft(), llvm::itanium_demangle::PointerToMemberType::printLeft(), llvm::itanium_demangle::ParameterPack::printLeft(), llvm::itanium_demangle::ForwardTemplateReference::printLeft(), llvm::itanium_demangle::DtorName::printLeft(), and llvm::itanium_demangle::CastExpr::printLeft().
|
inlinevirtual |
Reimplemented in llvm::itanium_demangle::ForwardTemplateReference, llvm::itanium_demangle::ParameterPack, llvm::itanium_demangle::FunctionEncoding, llvm::itanium_demangle::FunctionType, llvm::itanium_demangle::ArrayType, llvm::itanium_demangle::PointerToMemberType, llvm::itanium_demangle::ReferenceType, llvm::itanium_demangle::PointerType, and llvm::itanium_demangle::QualType.
Definition at line 189 of file ItaniumDemangle.h.
Referenced by print(), llvm::itanium_demangle::QualType::printRight(), llvm::itanium_demangle::PointerToMemberType::printRight(), llvm::itanium_demangle::ParameterPack::printRight(), and llvm::itanium_demangle::ForwardTemplateReference::printRight().
void llvm::itanium_demangle::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 1997 of file ItaniumDemangle.h.
References assert(), CASE, and FOR_EACH_NODE_KIND.
Referenced by Node(), and llvm::itanium_demangle::parse_discriminator().
Cache llvm::itanium_demangle::Node::ArrayCache |
Track if this node is a (possibly qualified) array type.
This can affect how we format the output string.
Definition at line 125 of file ItaniumDemangle.h.
Referenced by llvm::itanium_demangle::ParameterPack::ParameterPack().
Cache llvm::itanium_demangle::Node::FunctionCache |
Track if this node is a (possibly qualified) function type.
This can affect how we format the output string.
Definition at line 129 of file ItaniumDemangle.h.
Referenced by llvm::itanium_demangle::ParameterPack::ParameterPack().
Cache llvm::itanium_demangle::Node::RHSComponentCache |
Tracks if this node has a component on its right side, in which case we need to call printRight.
Definition at line 121 of file ItaniumDemangle.h.
Referenced by llvm::itanium_demangle::ParameterPack::ParameterPack().