2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / ilasm / codegen / TypeManager.cs
1 //
2 // Mono.ILASM.TypeManager.cs
3 //
4 // Author(s):
5 //  Jackson Harper (Jackson@LatitudeGeo.com)
6 //
7 // (C) 2003 Jackson Harper, All rights reserved
8 //
9
10 using System;
11 using System.Collections;
12
13 namespace Mono.ILASM {
14
15         public class TypeManager {
16
17                 private Hashtable type_table;
18                 private CodeGen code_gen;
19
20                 public TypeManager (CodeGen code_gen)
21                 {
22                         this.code_gen = code_gen;
23                         type_table = new Hashtable ();
24                         Hashtable t = type_table;
25                 }
26
27                 public TypeDef this[string full_name] {
28                         get {
29                                 return (TypeDef) type_table[full_name];
30                         }
31                         set {
32                                 type_table[full_name] = value;
33                         }
34                 }
35
36                 public PEAPI.Type GetPeapiType (string full_name)
37                 {
38                         TypeDef type_def = (TypeDef) type_table[full_name];
39
40                         if (type_def == null)
41                                 return null;
42
43                         if (!type_def.IsDefined)
44                                 type_def.Define (code_gen);
45
46                         return type_def.PeapiType;
47                 }
48
49                 public void DefineAll ()
50                 {
51                         foreach (TypeDef typedef in type_table.Values) {
52                                 typedef.Define (code_gen);
53                         }
54                 }
55
56         }
57
58 }
59