[Telepathy-commits] [telepathy-spec/master] Support Enum type

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


---
 tools/specparser.py |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/tools/specparser.py b/tools/specparser.py
index bd554a6..995cad9 100644
--- a/tools/specparser.py
+++ b/tools/specparser.py
@@ -321,7 +321,33 @@ class Struct (DBusType):
 
         return str
 
-class Enum (DBusType): pass
+class Enum (DBusType):
+    class EnumValue (base):
+        def __init__ (self, parent, namespace, dom):
+            super (Enum.EnumValue, self).__init__ (parent, namespace, dom)
+
+            # rewrite self.name
+            self.short_name = dom.getAttribute ('suffix')
+            self.name = build_name (namespace, self.short_name)
+
+            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'
+        for value in self.values:
+            # attempt to lookup the member.name as a type in the type system
+            str += '<li>%s (%s)</li>\n' % (value.short_name, value.value)
+            str += value.get_docstring ()
+        str += '</ul>\n'
+
+        return str
 
 class Flags (DBusType): pass
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list