2 // Mono.ILASM.GenericTypeInst
5 // Jackson Harper (Jackson@LatitudeGeo.com)
7 // (C) 2003 Latitude Geographics Group, All rights reserved
12 using System
.Collections
;
14 namespace Mono
.ILASM
{
16 public class GenericTypeInst
: ModifiableType
, ITypeRef
{
18 private string full_name
;
19 private string sig_mod
;
20 private ITypeRef
[] type_list
;
21 private PEAPI
.Type gen_inst
;
23 private bool is_resolved
;
25 public GenericTypeInst (string full_name
,
28 this.full_name
= full_name
;
29 this.type_list
= type_list
;
30 sig_mod
= String
.Empty
;
34 public string FullName
{
35 get { return full_name + sig_mod; }
38 public override string SigMod
{
39 get { return sig_mod; }
40 set { sig_mod = value; }
43 public PEAPI
.Type PeapiType
{
44 get { return gen_inst; }
47 public void Resolve (CodeGen code_gen
)
52 PEAPI
.Type p_gen_type
;
53 PEAPI
.Type
[] p_type_list
= new PEAPI
.Type
[type_list
.Length
];
55 p_gen_type
= code_gen
.TypeManager
.GetPeapiType (full_name
);
57 for (int i
=0; i
<p_type_list
.Length
; i
++) {
58 type_list
[i
].Resolve (code_gen
);
59 p_type_list
[i
] = type_list
[i
].PeapiType
;
62 gen_inst
= new PEAPI
.GenericTypeInst (p_gen_type
, p_type_list
);
63 gen_inst
= Modify (code_gen
, gen_inst
);
68 public IMethodRef
GetMethodRef (ITypeRef ret_type
, PEAPI
.CallConv call_conv
,
69 string name
, ITypeRef
[] param
)
71 return new TypeSpecMethodRef (this, ret_type
, call_conv
, name
, param
);
74 public IFieldRef
GetFieldRef (ITypeRef ret_type
, string name
)
76 return new TypeSpecFieldRef (this, ret_type
, name
);