2 // Mono.ILASM.GenericArguments
5 // Ankit Jain <jankit@novell.com>
7 // Copyright 2005 Novell, Inc (http://www.novell.com)
11 using System.Collections;
14 namespace Mono.ILASM {
16 public class GenericArguments {
19 BaseTypeRef [] type_arr;
21 PEAPI.Type [] p_type_list;
23 public GenericArguments ()
33 get { return type_list.Count; }
36 public void Add (BaseTypeRef type)
39 throw new InternalErrorException ();
41 if (type_list == null)
42 type_list = new ArrayList ();
48 public BaseTypeRef [] ToArray ()
50 if (type_list == null)
53 type_arr = (BaseTypeRef []) type_list.ToArray (typeof (BaseTypeRef));
58 public PEAPI.Type [] Resolve (CodeGen code_gen)
64 p_type_list = new PEAPI.Type [type_list.Count];
65 foreach (BaseTypeRef type in type_list) {
66 type.Resolve (code_gen);
67 p_type_list [i ++] = type.PeapiType;
74 public void Resolve (GenericParameters type_gen_params, GenericParameters method_gen_params)
76 foreach (BaseTypeRef type in type_list) {
77 BaseGenericTypeRef gtr = type as BaseGenericTypeRef;
79 gtr.Resolve (type_gen_params, method_gen_params);
81 /* Reset, might have changed (think GenericParamRef) */
85 private void MakeString ()
87 //Build full_name (foo < , >)
88 StringBuilder sb = new StringBuilder ();
90 foreach (BaseTypeRef tr in type_list)
91 sb.AppendFormat ("{0}, ", tr.FullName);
92 //Remove the extra ', ' at the end
95 type_str = sb.ToString ();
98 public override string ToString ()
100 if (type_str == null)