[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