Author: toshok
Date: 2007-12-09 19:14:12 -0500 (Sun, 09 Dec 2007)
New Revision: 91023

Modified:
   trunk/mono-tools/gui-compare/CecilMetadata.cs
   trunk/mono-tools/gui-compare/CompareContext.cs
   trunk/mono-tools/gui-compare/CompareWindow.cs
   trunk/mono-tools/gui-compare/Comparison.cs
   trunk/mono-tools/gui-compare/MasterMetadata.cs
   trunk/mono-tools/gui-compare/Masterinfo.cs
   trunk/mono-tools/gui-compare/Metadata.cs
Log:
more stuff, including the counts in the treeview.



Modified: trunk/mono-tools/gui-compare/CecilMetadata.cs
===================================================================
--- trunk/mono-tools/gui-compare/CecilMetadata.cs       2007-12-10 00:13:10 UTC 
(rev 91022)
+++ trunk/mono-tools/gui-compare/CecilMetadata.cs       2007-12-10 00:14:12 UTC 
(rev 91023)
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Text;
 using System.Threading;
 using System.Xml;
 using Mono.Cecil;
@@ -68,8 +69,29 @@
                        : base (name)
                {
                        class_list = new List<CompClass>();
+//                     enum_list = new List<CompEnum>();
+//                     delegate_list = new List<CompDelegate>();
+                       interface_list = new List<CompInterface>();
+                       struct_list = new List<CompClass>();
+
                        foreach (string cls_name in class_mapping.Keys) {
-                               class_list.Add (new CecilClass 
(class_mapping[cls_name]));
+                               TypeDefinition type_def = 
class_mapping[cls_name];
+                               if (type_def.IsNotPublic)
+                                       continue;
+                               if (type_def.IsValueType) {
+                                       if (type_def.IsEnum) {
+                                               Console.WriteLine ("enum -> 
{0}", type_def.FullName);
+                                       }
+                                       else {
+                                               struct_list.Add (new CecilClass 
(class_mapping[cls_name]));
+                                       }
+                               }
+                               else if (type_def.IsInterface) {
+                                       interface_list.Add (new CecilInterface 
(class_mapping[cls_name]));
+                               }
+                               else {
+                                       class_list.Add (new CecilClass 
(class_mapping[cls_name]));
+                               }
                        }
 
                        class_list.Sort (delegate (CompClass x, CompClass y) { 
return String.Compare (x.Name, y.Name); });
@@ -80,9 +102,31 @@
                        return class_list;
                }
 
+               public override List<CompInterface> GetInterfaces ()
+               {
+                       return interface_list;
+               }
+
+               public override List<CompClass> GetStructs ()
+               {
+                       return struct_list;
+               }
+
                List<CompClass> class_list;
+               List<CompInterface> interface_list;
+               List<CompClass> struct_list;
        }
 
+       public class CecilInterface : CompInterface {
+               public CecilInterface (TypeReference type_ref)
+                       : base (type_ref.FullName)
+               {
+                       this.type_ref = type_ref;
+               }
+
+               TypeReference type_ref;
+       }
+
        public class CecilClass : CompClass {
                public CecilClass (TypeDefinition type_def)
                        : base (type_def.Name)
@@ -90,11 +134,26 @@
                        this.type_def = type_def;
                }
 
+               public override List<CompInterface> GetInterfaces ()
+               {
+                       List<CompInterface> rv = new List<CompInterface>();
+
+                       foreach (TypeReference md in type_def.Interfaces) {
+                               rv.Add (new CecilInterface (md));
+                       }
+
+                       rv.Sort (delegate (CompInterface x, CompInterface y) { 
return String.Compare (x.Name, y.Name); });
+
+                       return rv;
+               }
+
                public override List<CompMethod> GetMethods ()
                {
                        List<CompMethod> rv = new List<CompMethod>();
 
                        foreach (MethodDefinition md in type_def.Methods) {
+                               if (md.IsSpecialName)
+                                       continue;
                                rv.Add (new CecilMethod (md));
                        }
 
@@ -125,11 +184,28 @@
 
        public class CecilMethod : CompMethod {
                public CecilMethod (MethodDefinition method_def)
-                       : base (method_def.Name)
+                       : base (MasterinfoFormattedName (method_def))
                {
                        this.method_def = method_def;
                }
 
+               static string MasterinfoFormattedName (MethodDefinition 
method_def)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (method_def.Name);
+                       sb.Append ('(');
+                       bool comma = false;
+                       foreach (ParameterDefinition p in 
method_def.Parameters) {
+                               if (comma)
+                                       sb.Append (", ");
+                               sb.Append (p.ParameterType.FullName);
+                               comma = true;
+                       }
+                       sb.Append (')');
+
+                       return sb.ToString();
+               }
+
                MethodDefinition method_def;
        }
 }

Modified: trunk/mono-tools/gui-compare/CompareContext.cs
===================================================================
--- trunk/mono-tools/gui-compare/CompareContext.cs      2007-12-10 00:13:10 UTC 
(rev 91022)
+++ trunk/mono-tools/gui-compare/CompareContext.cs      2007-12-10 00:14:12 UTC 
(rev 91023)
@@ -115,7 +115,7 @@
                                        ProgressOnGuiThread (0.0, String.Format 
("Comparing namespace {0}", master_namespaces[m].Name));
 
                                        /* the names match, further 
investigation is required */
-                                       Console.WriteLine ("namespace {0} is in 
both, doing more comparisons", master_namespaces[m].Name);
+//                                     Console.WriteLine ("namespace {0} is in 
both, doing more comparisons", master_namespaces[m].Name);
                                        NamespaceComparison comparison = new 
NamespaceComparison (master_namespaces[m].Name);
                                        parent.AddChild (comparison);
                                        CompareTypes (comparison, 
master_namespaces[m], assembly_namespaces[a]);
@@ -155,9 +155,9 @@
 
                                if (c == 0) {
                                        /* the names match, further 
investigation is required */
-                                       Console.WriteLine ("type {0} is in 
both, doing more comparisons", master_types[m].Name);
                                        ClassComparison comparison = new 
ClassComparison (master_types[m].Name);
                                        parent.AddChild (comparison);
+                                       CompareInterfaces (comparison, 
master_types[m], assembly_types[a]);
                                        CompareMethods (comparison, 
master_types[m], assembly_types[a]);
                                        // XXX more comparison stuff here
                                        CompareClassLists (comparison,
@@ -184,8 +184,102 @@
                {
                        CompareClassLists (parent,
                                           master_namespace.GetClasses(), 
assembly_namespace.GetClasses());
+                       CompareStructs (parent,
+                                       master_namespace, assembly_namespace);
                }
 
+               void CompareStructs (ComparisonNode parent,
+                                    CompNamespace master_namespace, 
CompNamespace assembly_namespace)
+               {
+                       List<CompClass> assembly_structs = 
assembly_namespace.GetStructs();
+                       List<CompClass> master_structs = 
master_namespace.GetStructs();
+
+                       int m = 0, a = 0;
+                       while (m < master_structs.Count || a < 
assembly_structs.Count) {
+                               if (m == master_structs.Count) {
+                                       Console.WriteLine ("{0}", 
assembly_namespace.Name);
+                                       AddExtraStruct (parent, 
assembly_structs[a]);
+                                       a++;
+                                       continue;
+                               }
+                               else if (a == assembly_structs.Count) {
+                                       Console.WriteLine ("{0}", 
master_namespace.Name);
+                                       AddMissingStruct (parent, 
master_structs[m]);
+                                       m++;
+                                       continue;
+                               }
+
+                               int c = String.Compare (master_structs[m].Name, 
assembly_structs[a].Name);
+
+                               if (c == 0) {
+                                       /* the names match, further 
investigation is required */
+                                       Console.WriteLine ("struct {0} is in 
both, doing more comparisons", master_structs[m].Name);
+                                       StructComparison comparison = new 
StructComparison (master_structs[m].Name);
+                                       parent.AddChild (comparison);
+                                       m++;
+                                       a++;
+                               }
+                               else if (c < 0) {
+                                       Console.WriteLine ("{0}", 
master_namespace.Name);
+                                       /* master name is before assembly name, 
master name is missing from assembly */
+                                       AddMissingStruct (parent, 
master_structs[m]);
+                                       m++;
+                               }
+                               else {
+                                       Console.WriteLine ("{0}", 
assembly_namespace.Name);
+                                       /* master name is after assembly name, 
assembly name is extra */
+                                       AddExtraStruct (parent, 
assembly_structs[a]);
+                                       a++;
+                               }
+                       }
+               }
+
+               void CompareInterfaces (ComparisonNode parent,
+                                       CompClass master_class, CompClass 
assembly_class)
+               {
+                       List<CompInterface> assembly_interfaces = 
assembly_class.GetInterfaces();
+                       List<CompInterface> master_interfaces = 
master_class.GetInterfaces();
+
+                       int m = 0, a = 0;
+                       while (m < master_interfaces.Count || a < 
assembly_interfaces.Count) {
+                               if (m == master_interfaces.Count) {
+                                       Console.WriteLine ("{0}", 
assembly_class.Name);
+                                       AddExtraInterface (parent, 
assembly_interfaces[a]);
+                                       a++;
+                                       continue;
+                               }
+                               else if (a == assembly_interfaces.Count) {
+                                       Console.WriteLine ("{0}", 
master_class.Name);
+                                       AddMissingInterface (parent, 
master_interfaces[m]);
+                                       m++;
+                                       continue;
+                               }
+
+                               int c = String.Compare 
(master_interfaces[m].Name, assembly_interfaces[a].Name);
+
+                               if (c == 0) {
+                                       /* the names match, further 
investigation is required */
+                                       Console.WriteLine ("interface {0} is in 
both, doing more comparisons", master_interfaces[m].Name);
+                                       InterfaceComparison comparison = new 
InterfaceComparison (master_interfaces[m].Name);
+                                       parent.AddChild (comparison);
+                                       m++;
+                                       a++;
+                               }
+                               else if (c < 0) {
+                                       Console.WriteLine ("{0}", 
master_class.Name);
+                                       /* master name is before assembly name, 
master name is missing from assembly */
+                                       AddMissingInterface (parent, 
master_interfaces[m]);
+                                       m++;
+                               }
+                               else {
+                                       Console.WriteLine ("{0}", 
assembly_class.Name);
+                                       /* master name is after assembly name, 
assembly name is extra */
+                                       AddExtraInterface (parent, 
assembly_interfaces[a]);
+                                       a++;
+                               }
+                       }
+               }
+
                void CompareMethods (ComparisonNode parent,
                                     CompClass master_class, CompClass 
assembly_class)
                {
@@ -209,7 +303,7 @@
 
                                if (c == 0) {
                                        /* the names match, further 
investigation is required */
-                                       Console.WriteLine ("method {0} is in 
both, doing more comparisons", master_methods[m].Name);
+//                                     Console.WriteLine ("method {0} is in 
both, doing more comparisons", master_methods[m].Name);
                                        MethodComparison comparison = new 
MethodComparison (master_methods[m].Name);
                                        parent.AddChild (comparison);
                                        //CompareParameters (comparison, 
master_methods[m], assembly_namespace [assembly_methods[a]]);
@@ -265,6 +359,36 @@
                        comparison.status = ComparisonStatus.Missing;
                }
 
+               void AddExtraStruct (ComparisonNode parent, CompClass cls)
+               {
+                       StructComparison comparison = new StructComparison 
(cls.Name);
+                       parent.AddChild (comparison);
+                       comparison.status = ComparisonStatus.Extra;
+               }
+
+               void AddMissingStruct (ComparisonNode parent, CompClass cls)
+               {
+                       StructComparison comparison = new StructComparison 
(cls.Name);
+                       parent.AddChild (comparison);
+                       comparison.status = ComparisonStatus.Missing;
+               }
+
+               void AddExtraInterface (ComparisonNode parent, CompInterface 
cls)
+               {
+                       Console.WriteLine ("extra interface {0}", cls.Name);
+                       InterfaceComparison comparison = new 
InterfaceComparison (cls.Name);
+                       parent.AddChild (comparison);
+                       comparison.status = ComparisonStatus.Extra;
+               }
+
+               void AddMissingInterface (ComparisonNode parent, CompInterface 
cls)
+               {
+                       Console.WriteLine ("missing interface {0}", cls.Name);
+                       InterfaceComparison comparison = new 
InterfaceComparison (cls.Name);
+                       parent.AddChild (comparison);
+                       comparison.status = ComparisonStatus.Missing;
+               }
+
                void AddExtraMethod (ComparisonNode parent, CompMethod extra)
                {
                        ComparisonNode method_node = new MethodComparison 
(extra.Name);

Modified: trunk/mono-tools/gui-compare/CompareWindow.cs
===================================================================
--- trunk/mono-tools/gui-compare/CompareWindow.cs       2007-12-10 00:13:10 UTC 
(rev 91022)
+++ trunk/mono-tools/gui-compare/CompareWindow.cs       2007-12-10 00:14:12 UTC 
(rev 91023)
@@ -53,14 +53,17 @@
                        vbox = new Gtk.VBox ();
                        tree = new Gtk.TreeView ();
 
-                       treeStore = new Gtk.TreeStore (typeof (string), typeof 
(Gdk.Pixbuf), typeof (Gdk.Pixbuf));
+                       treeStore = new Gtk.TreeStore (typeof (string), typeof 
(Gdk.Pixbuf), typeof (Gdk.Pixbuf),
+                                                      typeof (Gdk.Pixbuf), 
typeof (string),
+                                                      typeof (Gdk.Pixbuf), 
typeof (string),
+                                                      typeof (Gdk.Pixbuf), 
typeof (string));
 
                        tree.Model = treeStore;
 
                        // Create a column for the node name
                        Gtk.TreeViewColumn nameColumn = new Gtk.TreeViewColumn 
();
                        nameColumn.Title = "Name";
- 
+
                        Gtk.CellRendererText nameCell = new 
Gtk.CellRendererText ();
                        Gtk.CellRendererPixbuf typeCell = new 
Gtk.CellRendererPixbuf ();
                        Gtk.CellRendererPixbuf statusCell = new 
Gtk.CellRendererPixbuf ();
@@ -75,6 +78,34 @@
                        nameColumn.AddAttribute (typeCell, "pixbuf", 1);
                        nameColumn.AddAttribute (statusCell, "pixbuf", 2);
 
+                       // Create a column for the status counts
+                       Gtk.TreeViewColumn countsColumn = new 
Gtk.TreeViewColumn ();
+                       countsColumn.Title = "Counts";
+
+                       Gtk.CellRendererPixbuf missingPixbufCell = new 
Gtk.CellRendererPixbuf ();
+                       Gtk.CellRendererText missingTextCell = new 
Gtk.CellRendererText ();
+                       Gtk.CellRendererPixbuf extraPixbufCell = new 
Gtk.CellRendererPixbuf ();
+                       Gtk.CellRendererText extraTextCell = new 
Gtk.CellRendererText ();
+                       Gtk.CellRendererPixbuf errorPixbufCell = new 
Gtk.CellRendererPixbuf ();
+                       Gtk.CellRendererText errorTextCell = new 
Gtk.CellRendererText ();
+
+                       countsColumn.PackStart (missingPixbufCell, false);
+                       countsColumn.PackStart (missingTextCell, false);
+                       countsColumn.PackStart (extraPixbufCell, false);
+                       countsColumn.PackStart (extraTextCell, false);
+                       countsColumn.PackStart (errorPixbufCell, false);
+                       countsColumn.PackStart (errorTextCell, false);
+
+                       tree.AppendColumn (countsColumn);
+
+                       countsColumn.AddAttribute (missingPixbufCell, "pixbuf", 
3);
+                       countsColumn.AddAttribute (missingTextCell, "text", 4);
+                       countsColumn.AddAttribute (extraPixbufCell, "pixbuf", 
5);
+                       countsColumn.AddAttribute (extraTextCell, "text", 6);
+                       countsColumn.AddAttribute (errorPixbufCell, "pixbuf", 
7);
+                       countsColumn.AddAttribute (errorTextCell, "text", 8);
+
+                       
                        scroll = new Gtk.ScrolledWindow ();
 
                        scroll.HscrollbarPolicy = scroll.VscrollbarPolicy = 
PolicyType.Automatic;
@@ -133,6 +164,7 @@
                                status.Pop (0);
                                status.Push (0, String.Format ("Comparison 
completed at {0}", DateTime.Now));
                                Title = IOPath.GetFileName (assemblyPath);
+                               context.Comparison.PropagateCounts ();
                                PopulateTreeFromComparison (context.Comparison);
                                progressbar.Fraction = 0.0;
                        };
@@ -145,6 +177,7 @@
                        case ComparisonNodeType.Assembly: return assemblyPixbuf;
                        case ComparisonNodeType.Namespace: return 
namespacePixbuf;
                        case ComparisonNodeType.Attribute: return 
attributePixbuf;
+                       case ComparisonNodeType.Interface: return 
interfacePixbuf;
                        case ComparisonNodeType.Class: return classPixbuf;
                        case ComparisonNodeType.Struct: return structPixbuf;
                        case ComparisonNodeType.Enum: return enumPixbuf;
@@ -169,9 +202,17 @@
 
                void PopulateTreeFromComparison (ComparisonNode root)
                {
-                       Gtk.TreeIter iter = treeStore.AppendValues (root.name,
-                                                                   
TypePixbufFromComparisonNode (root),
-                                                                   
StatusPixbufFromComparisonNode (root));
+                       Gtk.TreeIter iter =
+                               treeStore.AppendValues (root.name,
+                                                       
TypePixbufFromComparisonNode (root),
+                                                       
StatusPixbufFromComparisonNode (root),
+                                                       root.Missing == 0 ? 
null : missingPixbuf,
+                                                       root.Missing == 0 ? 
null : String.Format (": {0}", root.Missing),
+                                                       root.Extra == 0 ? null 
: extraPixbuf,
+                                                       root.Extra == 0 ? null 
: String.Format (": {0}", root.Extra),
+                                                       root.Warning == 0 ? 
null : errorPixbuf,
+                                                       root.Warning == 0 ? 
null : String.Format (": {0}", root.Warning));
+
                        Gtk.TreePath path = treeStore.GetPath (iter);
 
                        foreach (ComparisonNode n in root.children)
@@ -182,10 +223,18 @@
 
                void PopulateTreeFromComparison (Gtk.TreeIter iter, 
ComparisonNode node)
                {
-                       Gtk.TreeIter citer = treeStore.AppendValues (iter,
-                                                                    node.name,
-                                                                    
TypePixbufFromComparisonNode (node),
-                                                                    
StatusPixbufFromComparisonNode (node));
+                       Gtk.TreeIter citer = 
+                               treeStore.AppendValues (iter,
+                                                       node.name,
+                                                       
TypePixbufFromComparisonNode (node),
+                                                       
StatusPixbufFromComparisonNode (node),
+                                                       node.Missing == 0 ? 
null : missingPixbuf,
+                                                       node.Missing == 0 ? 
null : String.Format (": {0}", node.Missing),
+                                                       node.Extra == 0 ? null 
: extraPixbuf,
+                                                       node.Extra == 0 ? null 
: String.Format (": {0}", node.Extra),
+                                                       node.Warning == 0 ? 
null : errorPixbuf,
+                                                       node.Warning == 0 ? 
null : String.Format (": {0}", node.Warning));
+
                        foreach (ComparisonNode n in node.children)
                                PopulateTreeFromComparison (citer, n);
                }

Modified: trunk/mono-tools/gui-compare/Comparison.cs
===================================================================
--- trunk/mono-tools/gui-compare/Comparison.cs  2007-12-10 00:13:10 UTC (rev 
91022)
+++ trunk/mono-tools/gui-compare/Comparison.cs  2007-12-10 00:14:12 UTC (rev 
91023)
@@ -12,6 +12,7 @@
                Assembly,
                Namespace,
                Attribute,
+               Interface,
                Class,
                Struct,
                Enum,
@@ -43,6 +44,19 @@
                        node.parent = this;
                }
 
+               public void PropagateCounts ()
+               {
+                       foreach (ComparisonNode n in children) {
+                               n.PropagateCounts ();
+                               Extra += n.Extra + (n.status == 
ComparisonStatus.Extra ? 1 : 0);
+                               Missing += n.Missing + (n.status == 
ComparisonStatus.Missing ? 1 : 0);
+                               Present += n.Present; // XXX
+                               Todo += n.Todo + (n.status == 
ComparisonStatus.Todo ? 1 : 0);
+                               Warning += n.Warning; // XXX
+                       }
+               }
+
+
                public ComparisonStatus status;
                public ComparisonNodeType type;
 
@@ -50,18 +64,11 @@
 
                public string name;
 
+               public int Extra;
+               public int Missing;
                public int Present;
-               public int PresentTotal;
-               public int Missing;
-               public int MissingTotal;
                public int Todo;
-               public int TodoTotal;
-
-               public int Extra;
-               public int ExtraTotal;
                public int Warning;
-               public int WarningTotal;
-               public int ErrorTotal;
 
                public List<ComparisonNode> children;
        }
@@ -88,6 +95,13 @@
                }
        }
 
+       public class InterfaceComparison : ComparisonNode {
+               public InterfaceComparison (string name)
+                       : base (ComparisonNodeType.Interface, name)
+               {
+               }
+       }
+
        public class StructComparison : ComparisonNode {
                public StructComparison (string name)
                        : base (ComparisonNodeType.Struct, name)

Modified: trunk/mono-tools/gui-compare/MasterMetadata.cs
===================================================================
--- trunk/mono-tools/gui-compare/MasterMetadata.cs      2007-12-10 00:13:10 UTC 
(rev 91022)
+++ trunk/mono-tools/gui-compare/MasterMetadata.cs      2007-12-10 00:14:12 UTC 
(rev 91023)
@@ -46,9 +46,26 @@
                        return classes;
                }
 
+               public override List<CompInterface> GetInterfaces ()
+               {
+                       return new List<CompInterface>();
+               }
+
+               public override List<CompClass> GetStructs ()
+               {
+                       return new List<CompClass>();
+               }
+
                XMLNamespace ns;
        }
 
+       public class MasterInterface : CompInterface {
+               public MasterInterface (string name)
+                       : base (name)
+               {
+               }
+       }
+
        public class MasterClass : CompClass {
                public MasterClass (XMLClass cls)
                        : base (cls.name)
@@ -56,9 +73,32 @@
                        xml_cls = cls;
                }
 
+               public override List<CompInterface> GetInterfaces ()
+               {
+                       List<CompInterface> rv = new List<CompInterface>();
+
+                       if (xml_cls.interfaces != null) {
+                               foreach (object i in 
xml_cls.interfaces.keys.Keys) {
+                                       rv.Add (new MasterInterface 
((string)xml_cls.interfaces.keys[i]));
+                               }
+                       }
+                                       
+
+                       return rv;
+               }
+
                public override List<CompMethod> GetMethods()
                {
-                       return new List<CompMethod>();
+                       List<CompMethod> rv = new List<CompMethod>();
+                       if (xml_cls.methods != null) {
+                               foreach (object key in 
xml_cls.methods.keys.Keys) {
+                                       rv.Add (new MasterMethod 
((string)xml_cls.methods.keys[key]));
+                               }
+                       }
+
+                       rv.Sort (delegate (CompMethod x, CompMethod y) { return 
String.Compare (x.Name, y.Name); });
+
+                       return rv;
                }
 
                public override List<CompMethod> GetConstructors()
@@ -81,4 +121,12 @@
 
                XMLClass xml_cls;
        }
+
+       // XXX more stuff is needed here besides the name
+       public class MasterMethod : CompMethod {
+               public MasterMethod (string name)
+                       : base (name)
+               {
+               }
+       }
 }

Modified: trunk/mono-tools/gui-compare/Masterinfo.cs
===================================================================
--- trunk/mono-tools/gui-compare/Masterinfo.cs  2007-12-10 00:13:10 UTC (rev 
91022)
+++ trunk/mono-tools/gui-compare/Masterinfo.cs  2007-12-10 00:14:12 UTC (rev 
91023)
@@ -273,7 +273,7 @@
        public abstract class XMLNameGroup : XMLData
        {
                protected XmlNode group;
-               protected Hashtable keys;
+               public Hashtable keys;
 
                public override void LoadData (XmlNode node)
                {
@@ -636,7 +636,7 @@
                string charSet;
                string layout;
                XMLAttributes attributes;
-               XMLInterfaces interfaces;
+               public XMLInterfaces interfaces;
                XMLGenericTypeConstraints genericConstraints;
                XMLFields fields;
                XMLConstructors constructors;

Modified: trunk/mono-tools/gui-compare/Metadata.cs
===================================================================
--- trunk/mono-tools/gui-compare/Metadata.cs    2007-12-10 00:13:10 UTC (rev 
91022)
+++ trunk/mono-tools/gui-compare/Metadata.cs    2007-12-10 00:14:12 UTC (rev 
91023)
@@ -9,72 +9,76 @@
 
 namespace GuiCompare {
 
-       public abstract class CompAssembly {
-               public CompAssembly (string name)
+       public abstract class CompNamed {
+               public CompNamed ()
                {
+               }
+
+               public CompNamed (string name)
+               {
                        this.name = name;
                }
 
                public string Name {
+                       set { name = value; }
                        get { return name; }
                }
 
-               public abstract List<CompNamespace> GetNamespaces();
-
                string name;
        }
 
-       public abstract class CompNamespace {
-               string name;
+       public abstract class CompAssembly : CompNamed {
+               public CompAssembly (string name)
+                       : base (name)
+               {
+               }
 
+               public abstract List<CompNamespace> GetNamespaces();
+       }
+
+       public abstract class CompNamespace : CompNamed {
                public CompNamespace (string name)
+                       : base (name)
                {
-                       this.name = name;
                }
 
-               public string Name {
-                       get { return name; }
-               }
-
                public abstract List<CompClass> GetClasses();
+               public abstract List<CompInterface> GetInterfaces ();
+               public abstract List<CompClass> GetStructs ();
        }
 
-       public abstract class CompAttributeContainer
+       public interface ICompAttributeContainer
        {
 //             public List<CompAttribute> GetAttributes ();
        }
 
-       public abstract class CompClass : CompAttributeContainer {
-               string name;
+       public abstract class CompInterface : CompNamed, 
ICompAttributeContainer {
+               public CompInterface (string name)
+                       : base (name)
+               {
+               }
+       }
 
+       public abstract class CompClass : CompNamed, ICompAttributeContainer {
                public CompClass (string name)
+                       : base (name)
                {
-                       this.name = name;
                }
 
-               public string Name {
-                       get { return name; }
-               }
+               public abstract List<CompInterface> GetInterfaces ();
+               public abstract List<CompMethod>    GetConstructors();
+               public abstract List<CompMethod>    GetMethods();
+//             public abstract List<CompProperty>  GetProperties();
+//             public abstract List<CompField>     GetFields();
+//             public abstract List<CompEvent>     GetEvents();
 
-               public abstract List<CompMethod>   GetConstructors();
-               public abstract List<CompMethod>   GetMethods();
-//             public abstract List<CompProperty> GetProperties();
-//             public abstract List<CompField>    GetFields();
-//             public abstract List<CompEvent>    GetEvents();
-
                public abstract List<CompClass>  GetNestedClasses();
        }
 
-       public abstract class CompMethod : CompAttributeContainer {
+       public abstract class CompMethod : CompNamed, ICompAttributeContainer {
                public CompMethod (string name)
+                       : base (name)
                {
-                       this.name = name;
                }
-
-               public string Name {
-                       get { return name; }
-               }
-
-               string name;
        }
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to