Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions Cpp2IL.Core/Model/Contexts/ArrayTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using Cpp2IL.Core.Utils;
using LibCpp2IL.BinaryStructures;

Expand All @@ -11,9 +12,15 @@ public ArrayTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext refe
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_ARRAY;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_ARRAY;

public override string DefaultName => $"{ElementType.Name}[{Rank}]";
public sealed override string DefaultName => $"{ElementType.DefaultName}[{Rank}]";

public sealed override string? OverrideName
{
get => $"{ElementType.Name}[{Rank}]";
set => throw new NotSupportedException();
}

public sealed override bool IsValueType => false;

Expand Down
10 changes: 8 additions & 2 deletions Cpp2IL.Core/Model/Contexts/BoxedTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,15 @@ public BoxedTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext refe
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_BOXED;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_BOXED;

public override string DefaultName => ElementType.Name;
public sealed override string DefaultName => ElementType.DefaultName;

public sealed override string? OverrideName
{
get => ElementType.OverrideName;
set => ElementType.OverrideName = value;
}

public sealed override bool IsValueType => false;
}
11 changes: 9 additions & 2 deletions Cpp2IL.Core/Model/Contexts/ByRefTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using LibCpp2IL.BinaryStructures;

namespace Cpp2IL.Core.Model.Contexts;
Expand All @@ -10,9 +11,15 @@ public ByRefTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext refe
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_BYREF;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_BYREF;

public override string DefaultName => $"{ElementType.Name}&";
public sealed override string DefaultName => $"{ElementType.DefaultName}&";

public sealed override string? OverrideName
{
get => $"{ElementType.Name}&";
set => throw new NotSupportedException();
}

public sealed override bool IsValueType => false;

Expand Down
17 changes: 13 additions & 4 deletions Cpp2IL.Core/Model/Contexts/CustomModifierTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using LibCpp2IL.BinaryStructures;

namespace Cpp2IL.Core.Model.Contexts;
Expand All @@ -9,11 +10,19 @@ public class CustomModifierTypeAnalysisContext(TypeAnalysisContext elementType,

public bool Required { get; } = required;

public override Il2CppTypeEnum Type => Required ? Il2CppTypeEnum.IL2CPP_TYPE_CMOD_REQD : Il2CppTypeEnum.IL2CPP_TYPE_CMOD_OPT;
public sealed override Il2CppTypeEnum Type => Required ? Il2CppTypeEnum.IL2CPP_TYPE_CMOD_REQD : Il2CppTypeEnum.IL2CPP_TYPE_CMOD_OPT;

public override string DefaultName => Required
? $"{ElementType.Name} modreq({ModifierType.Name})"
: $"{ElementType.Name} modopt({ModifierType.Name})";
public sealed override string DefaultName => Required
? $"{ElementType.DefaultName} modreq({ModifierType.DefaultFullName})"
: $"{ElementType.DefaultName} modopt({ModifierType.DefaultFullName})";

public sealed override string? OverrideName
{
get => Required
? $"{ElementType.Name} modreq({ModifierType.FullName})"
: $"{ElementType.Name} modopt({ModifierType.FullName})";
set => throw new NotSupportedException();
}

public sealed override bool IsValueType => ElementType.IsValueType;
}
22 changes: 17 additions & 5 deletions Cpp2IL.Core/Model/Contexts/GenericInstanceTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,27 @@ public class GenericInstanceTypeAnalysisContext : ReferencedTypeAnalysisContext

public List<TypeAnalysisContext> GenericArguments { get; } = [];

public override TypeAttributes DefaultAttributes => GenericType.DefaultAttributes;
public sealed override TypeAttributes DefaultAttributes => GenericType.DefaultAttributes;

public override TypeAttributes? OverrideAttributes { get => GenericType.OverrideAttributes; set => GenericType.OverrideAttributes = value; }
public sealed override TypeAttributes? OverrideAttributes { get => GenericType.OverrideAttributes; set => GenericType.OverrideAttributes = value; }

public override string DefaultName => $"{GenericType.Name}<{string.Join(", ", GenericArguments.Select(a => a.Name))}>";
public sealed override string DefaultName => $"{GenericType.DefaultName}<{string.Join(", ", GenericArguments.Select(a => a.DefaultFullName))}>";

public override string DefaultNamespace => GenericType.Namespace;
public sealed override string? OverrideName
{
get => $"{GenericType.Name}<{string.Join(", ", GenericArguments.Select(a => a.FullName))}>";
set => throw new NotSupportedException();
}

public sealed override string DefaultNamespace => GenericType.DefaultNamespace;

public sealed override string? OverrideNamespace
{
get => GenericType.OverrideNamespace;
set => GenericType.OverrideNamespace = value;
}

public override TypeAnalysisContext? DefaultBaseType { get; }
public sealed override TypeAnalysisContext? DefaultBaseType { get; }

public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_GENERICINST;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,17 @@ public class GenericParameterTypeAnalysisContext : ReferencedTypeAnalysisContext

public sealed override string DefaultNamespace => "";

public sealed override string? OverrideNamespace
{
get => null;
set
{
}
}

public int Index { get; }

public override Il2CppTypeEnum Type { get; }
public sealed override Il2CppTypeEnum Type { get; }

public new GenericParameterAttributes DefaultAttributes { get; }
public new GenericParameterAttributes? OverrideAttributes { get; set; }
Expand Down
10 changes: 8 additions & 2 deletions Cpp2IL.Core/Model/Contexts/PinnedTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,15 @@ public PinnedTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext ref
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_PINNED;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_PINNED;

public override string DefaultName => ElementType.Name;
public sealed override string DefaultName => ElementType.DefaultName;

public sealed override string? OverrideName
{
get => ElementType.OverrideName;
set => ElementType.OverrideName = value;
}

public sealed override bool IsValueType => false;
}
11 changes: 9 additions & 2 deletions Cpp2IL.Core/Model/Contexts/PointerTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using Cpp2IL.Core.Utils;
using LibCpp2IL.BinaryStructures;

Expand All @@ -11,9 +12,15 @@ public PointerTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext re
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_PTR;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_PTR;

public override string DefaultName => $"{ElementType.Name}*";
public sealed override string DefaultName => $"{ElementType.DefaultName}*";

public sealed override string? OverrideName
{
get => $"{ElementType.Name}*";
set => throw new NotSupportedException();
}

public sealed override bool IsValueType => false;
}
5 changes: 0 additions & 5 deletions Cpp2IL.Core/Model/Contexts/ReferencedTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@ public abstract class ReferencedTypeAnalysisContext(AssemblyAnalysisContext refe

public override AssemblyAnalysisContext CustomAttributeAssembly => DeclaringAssembly;

public override string ToString()
{
return DefaultName;
}

public override string GetCSharpSourceString()
{
return Name;
Expand Down
15 changes: 15 additions & 0 deletions Cpp2IL.Core/Model/Contexts/SentinelTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,20 @@ public sealed class SentinelTypeAnalysisContext(AssemblyAnalysisContext referenc
{
public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_SENTINEL;
public override string DefaultName => "<<SENTINEL>>";
public override string? OverrideName
{
get => null;
set
{
}
}
public override string DefaultNamespace => "";
public override string? OverrideNamespace
{
get => null;
set
{
}
}
public override bool IsValueType => false;
}
11 changes: 9 additions & 2 deletions Cpp2IL.Core/Model/Contexts/SzArrayTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using Cpp2IL.Core.Utils;
using LibCpp2IL.BinaryStructures;

Expand All @@ -11,9 +12,15 @@ public SzArrayTypeAnalysisContext(Il2CppType rawType, AssemblyAnalysisContext re
{
}

public override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_SZARRAY;
public sealed override Il2CppTypeEnum Type => Il2CppTypeEnum.IL2CPP_TYPE_SZARRAY;

public override string DefaultName => $"{ElementType.Name}[]";
public sealed override string DefaultName => $"{ElementType.DefaultName}[]";

public sealed override string? OverrideName
{
get => $"{ElementType.Name}[]";
set => throw new NotSupportedException();
}

public sealed override bool IsValueType => false;
}
2 changes: 1 addition & 1 deletion Cpp2IL.Core/Model/Contexts/TypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public class TypeAnalysisContext : HasGenericParameters, ITypeInfoProvider, ICSh

public virtual string DefaultNamespace => Definition?.Namespace ?? throw new("Subclasses of TypeAnalysisContext must override DefaultNs");

public string? OverrideNamespace { get; set; }
public virtual string? OverrideNamespace { get; set; }

public string Namespace
{
Expand Down
8 changes: 7 additions & 1 deletion Cpp2IL.Core/Model/Contexts/WrappedTypeAnalysisContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ public abstract class WrappedTypeAnalysisContext(
{
public virtual TypeAnalysisContext ElementType { get; } = elementType;

public override string DefaultNamespace => ElementType.Namespace;
public sealed override string DefaultNamespace => ElementType.DefaultNamespace;

public sealed override string? OverrideNamespace
{
get => ElementType.OverrideNamespace;
set => ElementType.OverrideNamespace = value;
}

public static WrappedTypeAnalysisContext Create(Il2CppType rawType, AssemblyAnalysisContext referencedFrom)
{
Expand Down
Loading