internal RuntimeAssembly(uint* pointer) { this.assemblyStruct = (MetadataAssemblyStruct*)pointer; this.fullName = x86Runtime.InitializeMetadataString(this.assemblyStruct->Name); uint typeCount = (*this.assemblyStruct).NumberOfTypes; for (uint i = 0; i < typeCount; i++) { RuntimeTypeHandle handle = new RuntimeTypeHandle(); ((uint**)&handle)[0] = (uint*)MetadataAssemblyStruct.GetTypeDefinitionAddress(assemblyStruct, i); if (this.typeHandles.Contains(handle)) continue; this.ProcessType(handle); } }
internal RuntimeAssembly(uint *pointer) { this.assemblyStruct = (MetadataAssemblyStruct *)pointer; this.fullName = x86Runtime.InitializeMetadataString(this.assemblyStruct->Name); uint typeCount = (*this.assemblyStruct).NumberOfTypes; for (uint i = 0; i < typeCount; i++) { RuntimeTypeHandle handle = new RuntimeTypeHandle(); ((uint **)&handle)[0] = (uint *)MetadataAssemblyStruct.GetTypeDefinitionAddress(assemblyStruct, i); if (this.typeHandles.Contains(handle)) { continue; } this.ProcessType(handle); } }
public static MetadataTypeStruct *GetTypeDefinitionAddress(MetadataAssemblyStruct *data, uint slot) { return((MetadataTypeStruct *)*((uint *)data + MetadataAssemblyStruct.TypesOffset + slot)); }