public static unsafe TypeDefRow ResolveTypeRef (AssemblyMetadata assembly, TypeRefRow row, out AssemblyMetadata destAssembly) { uint token; return ResolveTypeRef (assembly, row, out destAssembly, out token); }
public static unsafe TypeDefRow ResolveTypeRef (AssemblyMetadata assembly, TypeRefRow row, out AssemblyMetadata destAssembly, out uint typeDefToken) { CString8 *typeName = GetString (assembly, row.Name); CString8 *typeNamespace = GetString (assembly, row.Namespace); TokenType resScopeType; uint resScopeRID; TypeDefRow result = null; Diagnostics.Assert (assembly != null, "Runtime.ResolveTypeDef(): parameter `assembly' is null"); Diagnostics.Assert (row != null, "Runtime.ResolveTypeDef(): parameter `row' is null"); MetadataToken.Decode (row.ResolutionScope, out resScopeType, out resScopeRID); Diagnostics.Assert (resScopeType == TokenType.Assembly || resScopeType == TokenType.Module || resScopeType == TokenType.AssemblyRef || resScopeType == TokenType.ModuleRef, "Runtime.ResolveTypeRef(): resolution scope token is of an invalid type"); destAssembly = null; typeDefToken = 0; if (resScopeType == TokenType.Assembly || resScopeType == TokenType.Module || resScopeType == TokenType.ModuleRef) { Diagnostics.Assert (resScopeRID == 0, "Runtime.ResolveTypeRef(): resolution scope of Assembly must be zero!"); destAssembly = assembly; return GetType (assembly, typeName, typeNamespace); } else if (resScopeType == TokenType.AssemblyRef) { Diagnostics.Assert (resScopeRID < assembly.AssemblyRef.Length, "Runtime.ResolveTypeRef(): AssemblyRef metadata token out of range"); AssemblyMetadata assembly2 = ResolveAssemblyRef (assembly, assembly.AssemblyRef [resScopeRID]); destAssembly = assembly2; return GetType (assembly2, typeName, typeNamespace); } MemoryManager.Free (typeName); MemoryManager.Free (typeNamespace); return result; }
public static TypeDefRow ResolveTypeRef (AssemblyMetadata assembly, TypeRefRow row) { AssemblyMetadata dest; return ResolveTypeRef (assembly, row, out dest); }
public unsafe static void PrintTypeName (AssemblyMetadata assembly, TypeRefRow type) { CString8 *name, ns; name = GetString (assembly, type.Name); ns = GetString (assembly, type.Namespace); Debug.COM1.Write (ns); Debug.COM1.Write ("."); Debug.COM1.Write (name); MemoryManager.Free (name); MemoryManager.Free (ns); }