aboutsummaryrefslogtreecommitdiffstats
path: root/tools/glib-errors-enum-body-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-body-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-body-gen.py')
-rw-r--r--tools/glib-errors-enum-body-gen.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/glib-errors-enum-body-gen.py b/tools/glib-errors-enum-body-gen.py
new file mode 100644
index 000000000..44863ee4c
--- /dev/null
+++ b/tools/glib-errors-enum-body-gen.py
@@ -0,0 +1,62 @@
+#!/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_enum_values(self):
+ for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'):
+ print ''
+ nick = error.getAttribute('name').replace(' ', '')
+ name = camelcase_to_upper(nick.replace('.', ''))
+ ns = error.parentNode.getAttribute('namespace')
+ enum = 'TP_ERROR_' + name
+ print ' /* ' + ns + '.' + name
+ print ' ' + get_docstring(error)
+ print ' */'
+ print ' { %s, "%s", "%s" },' % (enum, enum, nick)
+
+
+ def do_get_type(self):
+ print """
+#include <_gen/telepathy-errors.h>
+
+GType
+tp_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY (etype == 0))
+ {
+ static const GEnumValue values[] = {"""
+ self.do_enum_values()
+ print """\
+ };
+
+ etype = g_enum_register_static ("TpError", values);
+ }
+ return etype;
+}
+"""
+
+ def __call__(self):
+ self.do_header()
+ self.do_get_type()
+
+if __name__ == '__main__':
+ argv = sys.argv[1:]
+ Generator(xml.dom.minidom.parse(argv[0]))()