unify logic for getting element type index
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using VersionedSerialization;
|
||||||
using VersionedSerialization.Attributes;
|
using VersionedSerialization.Attributes;
|
||||||
|
|
||||||
namespace Il2CppInspector.Next.Metadata;
|
namespace Il2CppInspector.Next.Metadata;
|
||||||
@@ -82,4 +83,9 @@ public partial record struct Il2CppTypeDefinition
|
|||||||
public uint Token { get; private set; }
|
public uint Token { get; private set; }
|
||||||
|
|
||||||
public readonly bool IsValid => NameIndex != 0;
|
public readonly bool IsValid => NameIndex != 0;
|
||||||
|
|
||||||
|
public int GetEnumElementTypeIndex(StructVersion version)
|
||||||
|
=> version >= MetadataVersions.V350
|
||||||
|
? ParentIndex
|
||||||
|
: ElementTypeIndex;
|
||||||
}
|
}
|
||||||
@@ -786,10 +786,7 @@ namespace Il2CppInspector.Reflection
|
|||||||
if (Definition.Bitfield.EnumType) {
|
if (Definition.Bitfield.EnumType) {
|
||||||
IsEnum = true;
|
IsEnum = true;
|
||||||
|
|
||||||
var enumUnderlyingTypeIndex = Assembly.Model.Package.Version >= MetadataVersions.V350
|
var enumUnderlyingTypeIndex = Definition.GetEnumElementTypeIndex(Assembly.Model.Package.Version);
|
||||||
? Definition.ParentIndex
|
|
||||||
: Definition.ElementTypeIndex;
|
|
||||||
|
|
||||||
enumUnderlyingTypeReference = TypeRef.FromReferenceIndex(Assembly.Model, enumUnderlyingTypeIndex);
|
enumUnderlyingTypeReference = TypeRef.FromReferenceIndex(Assembly.Model, enumUnderlyingTypeIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,9 +163,7 @@ public static class BlobReader
|
|||||||
var typeHandle = inspector.TypeReferences[typeIndex].Data.KlassIndex;
|
var typeHandle = inspector.TypeReferences[typeIndex].Data.KlassIndex;
|
||||||
enumType = inspector.TypeDefinitions[typeHandle];
|
enumType = inspector.TypeDefinitions[typeHandle];
|
||||||
|
|
||||||
var elementTypeIndex = inspector.Version >= MetadataVersions.V350
|
var elementTypeIndex = enumType.GetEnumElementTypeIndex(inspector.Version);
|
||||||
? enumType.ParentIndex
|
|
||||||
: enumType.ElementTypeIndex;
|
|
||||||
|
|
||||||
var elementTypeHandle = inspector.TypeReferences[elementTypeIndex].Data.KlassIndex;
|
var elementTypeHandle = inspector.TypeReferences[elementTypeIndex].Data.KlassIndex;
|
||||||
var elementType = inspector.TypeDefinitions[elementTypeHandle];
|
var elementType = inspector.TypeDefinitions[elementTypeHandle];
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<AnalyzerRoslynVersion>4.10</AnalyzerRoslynVersion>
|
<AnalyzerRoslynVersion>4.10</AnalyzerRoslynVersion>
|
||||||
<RoslynApiVersion>4.10.0</RoslynApiVersion>
|
<RoslynApiVersion>4.10.0</RoslynApiVersion>
|
||||||
|
|||||||
Reference in New Issue
Block a user