[Telepathy-commits] [telepathy-spec/master] Implement Flags using the same code as Enums

Davyd Madeley davyd at madeley.id.au
Mon Mar 23 12:29:22 PDT 2009


---
 tools/specparser.py |   29 ++++++++++++++++++++---------
 1 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/tools/specparser.py b/tools/specparser.py
index 995cad9..f4c0971 100644
--- a/tools/specparser.py
+++ b/tools/specparser.py
@@ -321,10 +321,14 @@ class Struct (DBusType):
 
         return str
 
-class Enum (DBusType):
+class EnumLike (DBusType):
+    """Base class for all D-Bus types that look kind of like Enums
+
+       Don't instantiate this class directly.
+    """
     class EnumValue (base):
         def __init__ (self, parent, namespace, dom):
-            super (Enum.EnumValue, self).__init__ (parent, namespace, dom)
+            super (EnumLike.EnumValue, self).__init__ (parent, namespace, dom)
 
             # rewrite self.name
             self.short_name = dom.getAttribute ('suffix')
@@ -332,12 +336,6 @@ class Enum (DBusType):
 
             self.value = dom.getAttribute ('value')
 
-    def __init__ (self, parent, namespace, dom):
-        super (Enum, self).__init__ (parent, namespace, dom)
-        
-        self.values = build_list (self, Enum.EnumValue, self.name,
-                        dom.getElementsByTagNameNS (XMLNS_TP, 'enumvalue'))
-    
     def get_breakdown (self):
         str = ''
         str += '<ul>\n'
@@ -349,7 +347,20 @@ class Enum (DBusType):
 
         return str
 
-class Flags (DBusType): pass
+class Enum (EnumLike):
+    def __init__ (self, parent, namespace, dom):
+        super (Enum, self).__init__ (parent, namespace, dom)
+        
+        self.values = build_list (self, EnumLike.EnumValue, self.name,
+                        dom.getElementsByTagNameNS (XMLNS_TP, 'enumvalue'))
+    
+class Flags (EnumLike):
+    def __init__ (self, parent, namespace, dom):
+        super (Flags, self).__init__ (parent, namespace, dom)
+        
+        self.values = build_list (self, EnumLike.EnumValue, self.name,
+                        dom.getElementsByTagNameNS (XMLNS_TP, 'flag'))
+        self.flags = self.values # in case you're looking for it
 
 class Spec (object):
     def __init__ (self, dom):
-- 
1.5.6.5




More information about the telepathy-commits mailing list