2010-06-03 Jb Evain <jbevain@novell.com>
[mcs.git] / ilasm / codegen / GenericMethodSig.cs
blobe8c74bec130a96f1542b8da63ca148d29fa16576
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 //
10 using System;
11 using System.Collections;
13 namespace Mono.ILASM {
15 public class GenericMethodSig {
17 private GenericArguments gen_args;
18 private bool is_resolved;
19 private PEAPI.GenericMethodSig sig;
21 private static Hashtable sig_table;
23 public GenericMethodSig (GenericArguments gen_args)
25 this.gen_args = gen_args;
26 is_resolved = false;
29 public PEAPI.GenericMethodSig Sig {
30 get { return sig; }
33 public PEAPI.GenericMethodSig Resolve (CodeGen code_gen)
35 if (is_resolved)
36 return sig;
38 sig = new PEAPI.GenericMethodSig (gen_args.Resolve (code_gen));
39 is_resolved = true;
41 return sig;
44 public static GenericMethodSig GetInstance (GenericArguments gen_args)
46 GenericMethodSig sig = null;
48 if (sig_table == null)
49 sig_table = new Hashtable ();
50 else
51 sig = (GenericMethodSig) sig_table [gen_args.ToString ()];
53 if (sig == null) {
54 sig = new GenericMethodSig (gen_args);
55 sig_table [gen_args.ToString ()] = sig;
58 return sig;