aboutsummaryrefslogtreecommitdiffstats
path: root/tools/glib-errors-enum-header-gen.py
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-11-22 00:23:11 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-11-22 00:23:11 +0800
commitabb968c6cdc50023b248b328a403444e644619bc (patch)
tree677efd848554bd613de1f09f01d3146d1c911288 /tools/glib-errors-enum-header-gen.py
parent52bc77159e915ea52e32b4d7873aa644f885a859 (diff)
downloadgsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar.gz
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar.bz2
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar.lz
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar.xz
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.tar.zst
gsoc2013-empathy-abb968c6cdc50023b248b328a403444e644619bc.zip
Update tools to latest version of tp-glib and include a gitignore
svn path=/trunk/; revision=1883
Diffstat (limited to 'tools/glib-errors-enum-header-gen.py')
-rw-r--r--tools/glib-errors-enum-header-gen.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/tools/glib-errors-enum-header-gen.py b/tools/glib-errors-enum-header-gen.py
new file mode 100644
index 000000000..64939b414
--- /dev/null
+++ b/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]))()