merge 100015:100420
[mono.git] / mcs / ilasm / codegen / GenericMethodSig.cs
1 //
2 // Mono.ILASM.GenericMethodSig
3 //
4 // Author(s):
5 //  Jackson Harper (jackson@ximian.com)
6 //
7 // (C) 2003 Ximian, Inc (http://www.ximian.com)
8 //
9
10 using System;
11 using System.Collections;
12
13 namespace Mono.ILASM {
14
15         public class GenericMethodSig {
16
17                 private GenericArguments gen_args;
18                 private bool is_resolved;
19                 private PEAPI.GenericMethodSig sig;
20
21                 private static Hashtable sig_table;
22
23                 public GenericMethodSig (GenericArguments gen_args)
24                 {
25                         this.gen_args = gen_args;
26                         is_resolved = false;
27                 }
28
29                 public PEAPI.GenericMethodSig Sig {
30                         get { return sig; }
31                 }
32
33                 public PEAPI.GenericMethodSig Resolve (CodeGen code_gen)
34                 {
35                         if (is_resolved)
36                                 return sig;
37
38                         sig = new PEAPI.GenericMethodSig (gen_args.Resolve (code_gen));
39                         is_resolved = true;
40
41                         return sig;
42                 }
43
44                 public static GenericMethodSig GetInstance (GenericArguments gen_args)
45                 {
46                         GenericMethodSig sig = null;
47
48                         if (sig_table == null)
49                                 sig_table = new Hashtable ();
50                         else
51                                 sig = (GenericMethodSig) sig_table [gen_args.ToString ()];
52
53                         if (sig == null) {
54                                 sig = new GenericMethodSig (gen_args);
55                                 sig_table [gen_args.ToString ()] = sig;
56                         }
57                         
58                         return sig;
59                 }
60         }
61
62 }
63
64