Merge pull request #5714 from alexischr/update_bockbuild
[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                 }
25
26                 public TypeDef this[string full_name] {
27                         get {
28                                 return (TypeDef) type_table[full_name];
29                         }
30                         set {
31                                 type_table[full_name] = value;
32                         }
33                 }
34
35                 public PEAPI.Type GetPeapiType (string full_name)
36                 {
37                         TypeDef type_def = (TypeDef) type_table[full_name];
38
39                         if (type_def == null)
40                                 return null;
41
42                         if (!type_def.IsDefined)
43                                 type_def.Define (code_gen);
44
45                         return type_def.PeapiType;
46                 }
47
48                 public void DefineAll ()
49                 {
50                         ArrayList type_list = new ArrayList (type_table.Values);
51                         type_list.Sort ();
52                         foreach (TypeDef typedef in type_list) {
53                                 typedef.Define (code_gen);
54                         }
55                 }
56
57         }
58
59 }
60