tag a couple of obsolete members
[mcs.git] / ilasm / codegen / GenericArguments.cs
blobafefa3958483ed24dfd6af99b51cfedc8e0d81f4
1 //
2 // Mono.ILASM.GenericArguments
3 //
4 // Author(s):
5 // Ankit Jain <jankit@novell.com>
6 //
7 // Copyright 2005 Novell, Inc (http://www.novell.com)
8 //
10 using System;
11 using System.Collections;
12 using System.Text;
14 namespace Mono.ILASM {
16 public class GenericArguments {
17 ArrayList type_list;
18 string type_str;
19 BaseTypeRef [] type_arr;
20 bool is_resolved;
21 PEAPI.Type [] p_type_list;
23 public GenericArguments ()
25 type_list = null;
26 type_arr = null;
27 type_str = null;
28 is_resolved = false;
29 p_type_list = null;
32 public int Count {
33 get { return type_list.Count; }
36 public void Add (BaseTypeRef type)
38 if (type == null)
39 throw new InternalErrorException ();
41 if (type_list == null)
42 type_list = new ArrayList ();
43 type_list.Add (type);
44 type_str = null;
45 type_arr = null;
48 public BaseTypeRef [] ToArray ()
50 if (type_list == null)
51 return null;
52 if (type_arr == null)
53 type_arr = (BaseTypeRef []) type_list.ToArray (typeof (BaseTypeRef));
55 return type_arr;
58 public PEAPI.Type [] Resolve (CodeGen code_gen)
60 if (is_resolved)
61 return p_type_list;
63 int i = 0;
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;
69 is_resolved = true;
70 type_str = null;
71 return p_type_list;
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;
78 if (gtr != null)
79 gtr.Resolve (type_gen_params, method_gen_params);
81 /* Reset, might have changed (think GenericParamRef) */
82 type_str = null;
85 private void MakeString ()
87 //Build full_name (foo < , >)
88 StringBuilder sb = new StringBuilder ();
89 sb.Append ("<");
90 foreach (BaseTypeRef tr in type_list)
91 sb.AppendFormat ("{0}, ", tr.FullName);
92 //Remove the extra ', ' at the end
93 sb.Length -= 2;
94 sb.Append (">");
95 type_str = sb.ToString ();
98 public override string ToString ()
100 if (type_str == null)
101 MakeString ();
102 return type_str;