forked from Mirror/Ryujinx
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 ad5eb5787c
.
* Small changes
* Revert external enum renaming
* Changes from feedback
* Apply previous refactorings to the merged code
113 lines
No EOL
2.5 KiB
C#
113 lines
No EOL
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();
|
|
}
|
|
}
|
|
} |