// // Mono.ILASM.ITypeRef // // Interface that all Type references must implement // // Author(s): // Jackson Harper (Jackson@LatitudeGeo.com) // // (C) 2003 Jackson Harper, All rights reserved // using System; using System.Collections; namespace Mono.ILASM { public interface ITypeRef { /// /// The full name of the type, . /// ie System.Collections.ArrayList /// string FullName { get; } bool IsPinned { get; } bool IsRef { get; } bool IsArray { get; } bool UseTypeSpec { get; } /// /// The PEAPI.Type of this typeref, this is not guaranteed /// to be correct untill after this is resolved. /// PEAPI.Type PeapiType { get; } /// /// Convert this typeref into a zero based array /// void MakeArray (); /// /// Convert this typeref into a bound array. The ArrayList /// should be in the format Entry (lower_bound, upper_bound) with /// null being used for unset bounds. /// void MakeBoundArray (ArrayList bounds); /// /// Convert this typeref into a reference /// void MakeManagedPointer (); /// /// Convert this typeref into an unmanaged pointer /// void MakeUnmanagedPointer (); /// /// Convert this typeref into a CustomModifiedType /// void MakeCustomModified (CodeGen code_gen, PEAPI.CustomModifier modifier, IClassRef klass); /// /// Make this typeref pinned. /// void MakePinned (); void Resolve (CodeGen code_gen); IMethodRef GetMethodRef (ITypeRef ret_type, PEAPI.CallConv call_conv, string name, ITypeRef[] param, int gen_param_count); IFieldRef GetFieldRef (ITypeRef ret_type, string name); /// /// Convert this typeref to a classref if not possible /// throw an exception /// // IClassRef AsClassRef (CodeGen code_gen); } }