2 // Mono.ILASM.MethodRef
5 // Jackson Harper (Jackson@LatitudeGeo.com)
7 // (C) 2003 Jackson Harper, All rights reserved
12 using System
.Collections
;
14 namespace Mono
.ILASM
{
16 public class MethodRef
: BaseMethodRef
{
18 public MethodRef (TypeRef owner
, PEAPI
.CallConv call_conv
,
19 BaseTypeRef ret_type
, string name
, BaseTypeRef
[] param
, int gen_param_count
)
20 : base (owner
, call_conv
, ret_type
, name
, param
, gen_param_count
)
24 public override void Resolve (CodeGen code_gen
)
29 owner
.Resolve (code_gen
);
31 TypeDef owner_def
= code_gen
.TypeManager
[owner
.FullName
];
32 if (owner_def
== null)
33 Report
.Error ("Reference to undefined class '" + owner
.FullName
+ "'");
42 if ((call_conv
& PEAPI
.CallConv
.Vararg
) == 0) {
43 peapi_method
= owner_def
.ResolveMethod (ret_type
, call_conv
, name
,
44 param
, gen_param_count
, code_gen
);
46 ArrayList opt_list
= new ArrayList ();
48 foreach (BaseTypeRef type
in param
) {
49 if (type
is SentinelTypeRef
) {
52 type
.Resolve (code_gen
);
53 opt_list
.Add (type
.PeapiType
);
56 peapi_method
= owner_def
.ResolveVarargMethod (
57 ret_type
, call_conv
, name
, param
, gen_param_count
,
58 (PEAPI
.Type
[]) opt_list
.ToArray (typeof (PEAPI
.Type
)),