2 // tree.cs: keeps a tree representation of the generated code
4 // Author: Miguel de Icaza (miguel@gnu.org)
6 // Licensed under the terms of the GNU GPL
8 // (C) 2001 Ximian, Inc (http://www.ximian.com)
13 using System.Collections;
14 using System.Reflection;
15 using System.Reflection.Emit;
21 public interface ITreeDump {
22 int Dump (Tree tree, StreamWriter output);
23 void ParseOptions (string options);
28 // We store here all the toplevel types that we have parsed,
29 // this is the root of all information we have parsed.
34 TypeContainer root_types;
37 // Keeps track of the interfaces defined in the source code
42 // Keeps track of the structs defined in the source code
47 // Keeps track of the classes defined in the source code
52 // Keeps track of namespaces defined in the source code
58 public Tree (RootContext rc)
60 root_types = new TypeContainer (rc, null, "", new Location (-1));
65 public void RecordInterface (string name, Interface iface)
68 ifaces = new Hashtable ();
70 ifaces.Add (name, iface);
73 public void RecordStruct (string name, Struct s)
76 structs = new Hashtable ();
78 structs.Add (name, s);
81 public void RecordClass (string name, Class c)
84 classes = new Hashtable ();
86 classes.Add (name, c);
89 public void RecordNamespace (string name, Namespace ns)
91 if (namespaces == null)
92 namespaces = new Hashtable ();
94 namespaces.Add (name, ns);
98 public TypeContainer Types {
104 public Hashtable Interfaces {
110 public Hashtable Classes {
116 public Hashtable Structs {
122 public Hashtable Namespaces {