Go to the documentation of this file.
13 #ifndef LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
14 #define LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
22 namespace itanium_demangle {
27 using llvm::itanium_demangle::OutputBuffer;
28 using llvm::itanium_demangle::StringView;
31 namespace ms_demangle {
260 virtual ~Node() =
default;
273 struct PrimitiveTypeNode;
274 struct FunctionSignatureNode;
275 struct IdentifierNode;
276 struct NamedIdentifierNode;
277 struct VcallThunkIdentifierNode;
278 struct IntrinsicFunctionIdentifierNode;
279 struct LiteralOperatorIdentifierNode;
280 struct ConversionOperatorIdentifierNode;
281 struct StructorIdentifierNode;
282 struct ThunkSignatureNode;
283 struct PointerTypeNode;
284 struct ArrayTypeNode;
287 struct QualifiedNameNode;
288 struct TemplateParameterReferenceNode;
289 struct EncodedStringLiteralNode;
290 struct IntegerLiteralNode;
291 struct RttiBaseClassDescriptorNode;
292 struct LocalStaticGuardVariableNode;
294 struct FunctionSymbolNode;
295 struct VariableSymbolNode;
296 struct SpecialTableSymbolNode;
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
This is an optimization pass for GlobalISel generic memory operations.
This is a utility class that provides an abstraction for the common functionality between Instruction...
@ RttiClassHierarchyDescriptor
NodeArrayNode * Components
QualifiedNameNode * TargetName
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
IdentifierNode(NodeKind K)
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
@ LiteralOperatorIdentifier
ConversionOperatorIdentifierNode()
LocalStaticGuardVariableNode()
FunctionSignatureNode * Signature
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
The instances of the Type class are immutable: once they are created, they are never changed.
VariableSymbolNode * Variable
void outputTemplateParameters(OutputBuffer &OB, OutputFlags Flags) const
@ EHVectorVbaseCopyCtorIter
NodeArrayNode * Dimensions
Class to represent array types.
@ ManVectorVbaseCopyCtorIter
virtual void output(OutputBuffer &OB, OutputFlags Flags) const =0
RttiBaseClassDescriptorNode()
LiteralOperatorIdentifierNode()
EncodedStringLiteralNode()
void output(OutputBuffer &OB, OutputFlags Flags) const override
@ LocalStaticGuardIdentifier
virtual void outputPost(OutputBuffer &OB, OutputFlags Flags) const =0
void output(OutputBuffer &OB, OutputFlags Flags) const override
FunctionSignatureNode(NodeKind K)
CallingConv CallConvention
IdentifierNode * getUnqualifiedIdentifier()
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputDimensionsImpl(OutputBuffer &OB, OutputFlags Flags) const
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
StructorIdentifierNode(bool IsDestructor)
DynamicStructorIdentifierNode()
FunctionRefQualifier RefQualifier
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputOneDimension(OutputBuffer &OB, OutputFlags Flags, Node *N) const
@ IntrinsicFunctionIdentifier
void output(OutputBuffer &OB, OutputFlags Flags) const override
Class to represent pointers.
IdentifierNode * Identifier
std::string toString(OutputFlags Flags=OF_Default) const
IntrinsicFunctionKind Operator
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
NodeArrayNode * TemplateParams
std::array< int64_t, 3 > ThunkOffsets
@ VectorVbaseCopyCtorIter
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
TemplateParameterReferenceNode()
@ DynamicAtexitDestructor
@ RttiBaseClassDescriptor
void output(OutputBuffer &OB, OutputFlags Flags) const override
IntegerLiteralNode(uint64_t Value, bool IsNegative)
PrimitiveTypeNode(PrimitiveKind K)
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Determine the kind of a node from its type.
void output(OutputBuffer &OB, OutputFlags Flags) const override
@ LocalVftableCtorClosure
LocalStaticGuardIdentifierNode()
virtual void outputPre(OutputBuffer &OB, OutputFlags Flags) const =0
@ DynamicStructorIdentifier
IntrinsicFunctionIdentifierNode(IntrinsicFunctionKind Operator)
@ LocalStaticGuardVariable
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
@ ConversionOperatorIdentifier
QualifiedNameNode * ClassParent
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
void output(OutputBuffer &OB, OutputFlags Flags) const override
@ TemplateParameterReference
@ RttiBaseClassDescriptor
void output(OutputBuffer &OB, OutputFlags Flags) const override
LLVM Value Representation.
void output(OutputBuffer &OB, OutputFlags Flags) const override
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
VcallThunkIdentifierNode()