aboutsummaryrefslogtreecommitdiffstats
path: root/gnome-2-26/tools/glib-errors-enum-header-gen.py
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2009-03-17 02:34:54 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2009-03-17 02:34:54 +0800
commit2baaa7ae3c3ac983a8019cd93a73426c7e081735 (patch)
tree482c49b5b4f5b3d6b4427642ba8609114503fade /gnome-2-26/tools/glib-errors-enum-header-gen.py
parentbbacde3ff32a1983e7f37eea2986ccfe8f660f3f (diff)
downloadgsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.gz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.bz2
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.lz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.xz
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.tar.zst
gsoc2013-empathy-2baaa7ae3c3ac983a8019cd93a73426c7e081735.zip
Tagged for release 2.26.0.
svn path=/tags/EMPATHY_2_26_0/; revision=2700
Diffstat (limited to 'gnome-2-26/tools/glib-errors-enum-header-gen.py')
-rw-r--r--gnome-2-26/tools/glib-errors-enum-header-gen.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/gnome-2-26/tools/glib-errors-enum-header-gen.py b/gnome-2-26/tools/glib-errors-enum-header-gen.py
new file mode 100644
index 000000000..64939b414
--- /dev/null
+++ b/gnome-2-26/tools/glib-errors-enum-header-gen.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+
+import sys
+import xml.dom.minidom
+
+from libglibcodegen import NS_TP, camelcase_to_upper, get_docstring, \
+ get_descendant_text
+
+class Generator(object):
+ def __init__(self, dom):
+ self.dom = dom
+ self.errors = self.dom.getElementsByTagNameNS(NS_TP, 'errors')[0]
+
+ def do_header(self):
+ print '/* Generated from the Telepathy spec\n'
+ copyrights = self.errors.getElementsByTagNameNS(NS_TP, 'copyright')
+ for copyright in copyrights:
+ print get_descendant_text(copyright)
+ license = self.errors.getElementsByTagNameNS(NS_TP, 'license')[0]
+ print '\n' + get_descendant_text(license) + '\n*/'
+
+ def do_gtkdoc(self):
+ for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'):
+ ns = error.parentNode.getAttribute('namespace')
+ nick = error.getAttribute('name').replace(' ', '')
+ enum = 'TP_ERROR_' + camelcase_to_upper(nick.replace('.', ''))
+ print ' * @' + enum + ': ' + ns + '.' + nick + ':'
+ print ' * ' + get_docstring(error) + ' '
+
+ def do_enumnames(self):
+ for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'):
+ nick = error.getAttribute('name').replace(' ', '')
+ enum = 'TP_ERROR_' + camelcase_to_upper(nick.replace('.', ''))
+ print ' ' + enum + ','
+
+ def do_get_type(self):
+ print """
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+GType tp_error_get_type (void);
+
+/**
+ * TP_TYPE_ERROR:
+ *
+ * The GType of the Telepathy error enumeration.
+ */
+#define TP_TYPE_ERROR (tp_error_get_type())
+"""
+
+ def do_enum(self):
+ print """\
+/**
+ * TpError:"""
+ self.do_gtkdoc()
+ print """\
+ *
+ * Enumerated type representing the Telepathy D-Bus errors.
+ */
+typedef enum {"""
+ self.do_enumnames()
+ print """\
+} TpError;
+
+G_END_DECLS"""
+
+ def __call__(self):
+ self.do_header()
+ self.do_get_type()
+ self.do_enum()
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+ Generator(xml.dom.minidom.parse(argv[0]))()