public ScriptExportType RetrieveType(TypeReference type) { if (type.IsArray) { return(RetrieveArray(type)); } if (type.IsGenericInstance) { return(RetrieveGeneric(type)); } if (type.Module != null) { TypeDefinition definition = type.Resolve(); if (definition != null) { if (definition.IsEnum) { return(RetrieveEnum(definition)); } if (ScriptExportMonoDelegate.IsDelegate(definition)) { return(RetrieveDelegate(definition)); } } } string fullname = ScriptExportMonoType.ToFullName(type); if (m_types.TryGetValue(fullname, out ScriptExportType exportType)) { return(exportType); } return(CreateType(type)); }
private ScriptExportType CreateType(TypeReference type) { ScriptExportType exportType = new ScriptExportMonoType(type); m_types.Add(exportType.FullName, exportType); exportType.Init(this); return(exportType); }
public ScriptExportDelegate RetrieveDelegate(TypeDefinition @delegate) { string fullname = ScriptExportMonoType.GetFullName(@delegate); if (m_delegates.TryGetValue(fullname, out ScriptExportDelegate exportDelegate)) { return(exportDelegate); } return(CreateDelegate(@delegate)); }
public ScriptExportEnum RetrieveEnum(TypeDefinition @enum) { string fullname = ScriptExportMonoType.GetFullName(@enum); if (m_enums.TryGetValue(fullname, out ScriptExportEnum exportEnum)) { return(exportEnum); } return(CreateEnum(@enum)); }
public ScriptExportGeneric RetrieveGeneric(TypeReference generic) { string fullname = ScriptExportMonoType.GetFullName(generic); if (m_generic.TryGetValue(fullname, out ScriptExportGeneric exportGeneric)) { return(exportGeneric); } return(CreateGeneric(generic)); }
public ScriptExportArray RetrieveArray(TypeReference array) { string fullname = ScriptExportMonoType.GetFullName(array); if (m_arrays.TryGetValue(fullname, out ScriptExportArray exportArray)) { return(exportArray); } return(CreateArray(array)); }
public ScriptExportPointer RetrievePointer(TypeReference pointer) { string fullname = ScriptExportMonoType.GetFullName(pointer); if (m_pointers.TryGetValue(fullname, out ScriptExportPointer exportArray)) { return(exportArray); } return(CreatePointer(pointer)); }
private ScriptExportType CreateType(TypeReference type, bool isUnique = true) { ScriptExportType exportType = new ScriptExportMonoType(type); if (isUnique) { m_types.Add(exportType.FullName, exportType); } exportType.Init(this); return(exportType); }