//
// 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);
}
}