13#ifndef LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
14#define LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
23namespace itanium_demangle {
28using llvm::itanium_demangle::OutputBuffer;
31namespace ms_demangle {
344 return N->kind() == NodeKind::PrimitiveType;
358 return N->kind() >= NodeKind::FunctionSignature &&
359 N->kind() <= NodeKind::FunctionSignatureEnd;
378 bool IsVariadic =
false;
384 bool IsNoexcept =
false;
408 return N->kind() == NodeKind::VcallThunkIdentifier;
421 return N->kind() == NodeKind::DynamicStructorIdentifier;
426 bool IsDestructor =
false;
435 return N->kind() == NodeKind::NamedIdentifier;
449 return N->kind() == NodeKind::IntrinsicFunctionIdentifier;
462 return N->kind() == NodeKind::LiteralOperatorIdentifier;
475 return N->kind() == NodeKind::LocalStaticGuardIdentifier;
478 bool IsThread =
false;
489 return N->kind() == NodeKind::ConversionOperatorIdentifier;
500 IsDestructor(IsDestructor) {}
505 return N->kind() == NodeKind::StructorIdentifier;
510 bool IsDestructor =
false;
520 return N->kind() == NodeKind::ThunkSignature;
525 int32_t VBPtrOffset = 0;
526 int32_t VBOffsetOffset = 0;
527 int32_t VtordispOffset = 0;
539 return N->kind() == NodeKind::PointerType;
561 static bool classof(
const Node *
N) {
return N->kind() == NodeKind::TagType; }
577 return N->kind() == NodeKind::ArrayType;
602 static bool classof(
const Node *
N) {
return N->kind() == NodeKind::Custom; }
613 std::string_view Separator)
const;
616 return N->kind() == NodeKind::NodeArray;
629 return N->kind() == NodeKind::QualifiedName;
647 return N->kind() == NodeKind::TemplateParameterReference;
652 int ThunkOffsetCount = 0;
655 bool IsMemberPointer =
false;
666 return N->kind() == NodeKind::IntegerLiteral;
670 bool IsNegative =
false;
680 return N->kind() == NodeKind::RttiBaseClassDescriptor;
684 int32_t VBPtrOffset = 0;
694 return N->kind() >= NodeKind::SymbolStart &&
695 N->kind() <= NodeKind::SymbolEnd;
708 return N->kind() == NodeKind::SpecialTableSymbol;
722 return N->kind() == NodeKind::LocalStaticGuardVariable;
725 bool IsVisible =
false;
734 return N->kind() == NodeKind::EncodedStringLiteral;
738 bool IsTruncated =
false;
748 return N->kind() == NodeKind::VariableSymbol;
761 return N->kind() == NodeKind::FunctionSymbol;
774 static constexpr unsigned NumArgs = 3;
780 return N->kind() == NodeKind::PointerAuthQualifier;
#define DEMANGLE_ABI
DEMANGLE_ABI is the export/visibility macro used to mark symbols delcared in llvm/Demangle as exporte...
Class to represent array types.
This is a utility class that provides an abstraction for the common functionality between Instruction...
Class to represent pointers.
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
@ LiteralOperatorIdentifier
@ LocalStaticGuardVariable
@ DynamicStructorIdentifier
@ LocalStaticGuardIdentifier
@ ConversionOperatorIdentifier
@ TemplateParameterReference
@ IntrinsicFunctionIdentifier
@ ManVectorVbaseCopyCtorIter
@ EHVectorVbaseCopyCtorIter
@ LocalVftableCtorClosure
@ VectorVbaseCopyCtorIter
@ RttiBaseClassDescriptor
@ DynamicAtexitDestructor
@ RttiClassHierarchyDescriptor
This is an optimization pass for GlobalISel generic memory operations.
Determine the kind of a node from its type.
static bool classof(const Node *N)
static bool classof(const Node *N)
ConversionOperatorIdentifierNode()
static bool classof(const Node *N)
static bool classof(const Node *N)
DynamicStructorIdentifierNode()
std::string_view DecodedString
static bool classof(const Node *N)
EncodedStringLiteralNode()
static bool classof(const Node *N)
FunctionSignatureNode(NodeKind K)
static bool classof(const Node *N)
static bool classof(const Node *N)
NodeArrayNode * TemplateParams
DEMANGLE_ABI void outputTemplateParameters(OutputBuffer &OB, OutputFlags Flags) const
IdentifierNode(NodeKind K)
IntegerLiteralNode(uint64_t Value, bool IsNegative)
static bool classof(const Node *N)
IntrinsicFunctionIdentifierNode(IntrinsicFunctionKind Operator)
static bool classof(const Node *N)
IntrinsicFunctionKind Operator
static bool classof(const Node *N)
void output(OutputBuffer &OB, OutputFlags Flags) const override
LiteralOperatorIdentifierNode()
static bool classof(const Node *N)
LocalStaticGuardIdentifierNode()
static bool classof(const Node *N)
static bool classof(const Node *N)
LocalStaticGuardVariableNode()
static bool classof(const Node *N)
static bool classof(const Node *N)
virtual void output(OutputBuffer &OB, OutputFlags Flags) const =0
DEMANGLE_ABI std::string toString(OutputFlags Flags=OF_Default) const
std::array< uint64_t, NumArgs > ArgArray
PointerAuthQualifierNode()
static bool classof(const Node *N)
static bool classof(const Node *N)
static bool classof(const Node *N)
PrimitiveTypeNode(PrimitiveKind K)
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
static bool classof(const Node *N)
IdentifierNode * getUnqualifiedIdentifier()
RttiBaseClassDescriptorNode()
static bool classof(const Node *N)
static bool classof(const Node *N)
StructorIdentifierNode(bool IsDestructor)
static bool classof(const Node *N)
static bool classof(const Node *N)
static bool classof(const Node *N)
static bool classof(const Node *N)
TemplateParameterReferenceNode()
std::array< int64_t, 3 > ThunkOffsets
static bool classof(const Node *N)
void output(OutputBuffer &OB, OutputFlags Flags) const override
virtual void outputPre(OutputBuffer &OB, OutputFlags Flags) const =0
virtual void outputPost(OutputBuffer &OB, OutputFlags Flags) const =0
static bool classof(const Node *N)
static bool classof(const Node *N)
static bool classof(const Node *N)
VcallThunkIdentifierNode()