fb1d9493a3
* Rename enum fields * Naming conventions * Remove unneeded ".this" * Remove unneeded semicolons * Remove unused Usings * Don't use var * Remove unneeded enum underlying types * Explicitly label class visibility * Remove unneeded @ prefixes * Remove unneeded commas * Remove unneeded if expressions * Method doesn't use unsafe code * Remove unneeded casts * Initialized objects don't need an empty constructor * Remove settings from DotSettings * Revert "Explicitly label class visibility" This reverts commit ad5eb5787cc5b27a4631cd46ef5f551c4ae95e51. * Small changes * Revert external enum renaming * Changes from feedback * Apply previous refactorings to the merged code
113 lines
2.5 KiB
C#
113 lines
2.5 KiB
C#
using System.IO;
|
|
|
|
namespace Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast
|
|
{
|
|
public enum NodeType
|
|
{
|
|
CvQualifierType,
|
|
SimpleReferenceType,
|
|
NameType,
|
|
EncodedFunction,
|
|
NestedName,
|
|
SpecialName,
|
|
LiteralOperator,
|
|
NodeArray,
|
|
ElaboratedType,
|
|
PostfixQualifiedType,
|
|
SpecialSubstitution,
|
|
ExpandedSpecialSubstitution,
|
|
CtorDtorNameType,
|
|
EnclosedExpression,
|
|
ForwardTemplateReference,
|
|
NameTypeWithTemplateArguments,
|
|
PackedTemplateArgument,
|
|
TemplateArguments,
|
|
BooleanExpression,
|
|
CastExpression,
|
|
CallExpression,
|
|
IntegerCastExpression,
|
|
PackedTemplateParameter,
|
|
PackedTemplateParameterExpansion,
|
|
IntegerLiteral,
|
|
DeleteExpression,
|
|
MemberExpression,
|
|
ArraySubscriptingExpression,
|
|
InitListExpression,
|
|
PostfixExpression,
|
|
ConditionalExpression,
|
|
ThrowExpression,
|
|
FunctionParameter,
|
|
ConversionExpression,
|
|
BinaryExpression,
|
|
PrefixExpression,
|
|
BracedExpression,
|
|
BracedRangeExpression,
|
|
NewExpression,
|
|
QualifiedName,
|
|
StdQualifiedName,
|
|
DtOrName,
|
|
GlobalQualifiedName,
|
|
NoexceptSpec,
|
|
DynamicExceptionSpec,
|
|
FunctionType,
|
|
PointerType,
|
|
ReferenceType,
|
|
ConversionOperatorType,
|
|
LocalName,
|
|
CtorVtableSpecialName,
|
|
ArrayType
|
|
}
|
|
|
|
public abstract class BaseNode
|
|
{
|
|
public NodeType Type { get; protected set; }
|
|
|
|
public BaseNode(NodeType type)
|
|
{
|
|
Type = type;
|
|
}
|
|
|
|
public virtual void Print(TextWriter writer)
|
|
{
|
|
PrintLeft(writer);
|
|
|
|
if (HasRightPart())
|
|
{
|
|
PrintRight(writer);
|
|
}
|
|
}
|
|
|
|
public abstract void PrintLeft(TextWriter writer);
|
|
|
|
public virtual bool HasRightPart()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public virtual bool IsArray()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public virtual bool HasFunctions()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public virtual string GetName()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public virtual void PrintRight(TextWriter writer) {}
|
|
|
|
public override string ToString()
|
|
{
|
|
StringWriter writer = new StringWriter();
|
|
|
|
Print(writer);
|
|
|
|
return writer.ToString();
|
|
}
|
|
}
|
|
} |