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 
GenericMethodSig(GenericArguments gen_args)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 
Resolve(CodeGen code_gen)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 
GetInstance(GenericArguments gen_args)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 
65