From 621bbbb8631f4b149d0478a3423687e4e973b04f Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 1 Feb 2011 13:47:58 +0000 Subject: Update tools from telepathy-glib --- tools/glib-errors-check-gen.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tools/glib-errors-check-gen.py (limited to 'tools/glib-errors-check-gen.py') diff --git a/tools/glib-errors-check-gen.py b/tools/glib-errors-check-gen.py new file mode 100644 index 000000000..553fc9caf --- /dev/null +++ b/tools/glib-errors-check-gen.py @@ -0,0 +1,58 @@ +#!/usr/bin/python + +import sys +import xml.dom.minidom + +from libglibcodegen import NS_TP, 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 __call__(self): + + print '{' + print ' GEnumClass *klass;' + print ' GEnumValue *value_by_name;' + print ' GEnumValue *value_by_nick;' + print '' + print ' g_type_init ();' + print ' klass = g_type_class_ref (TP_TYPE_ERROR);' + + for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'): + ns = error.parentNode.getAttribute('namespace') + nick = error.getAttribute('name').replace(' ', '') + enum = ('TP_ERROR_' + + error.getAttribute('name').replace(' ', '_').replace('.', '_').upper()) + s = ('TP_ERROR_STR_' + + error.getAttribute('name').replace(' ', '_').replace('.', '_').upper()) + + print '' + print ' /* %s.%s */' % (ns, nick) + print (' value_by_name = g_enum_get_value_by_name (klass, "%s");' + % enum) + print (' value_by_nick = g_enum_get_value_by_nick (klass, "%s");' + % nick) + print (' g_assert (value_by_name != NULL);') + print (' g_assert (value_by_nick != NULL);') + print (' g_assert_cmpint (value_by_name->value, ==, %s);' + % enum) + print (' g_assert_cmpint (value_by_nick->value, ==, %s);' + % enum) + print (' g_assert_cmpstr (value_by_name->value_name, ==, "%s");' + % enum) + print (' g_assert_cmpstr (value_by_nick->value_name, ==, "%s");' + % enum) + print (' g_assert_cmpstr (value_by_name->value_nick, ==, "%s");' + % nick) + print (' g_assert_cmpstr (value_by_nick->value_nick, ==, "%s");' + % nick) + print (' g_assert_cmpstr (%s, ==, TP_ERROR_PREFIX ".%s");' + % (s, nick)) + + print '}' + +if __name__ == '__main__': + argv = sys.argv[1:] + Generator(xml.dom.minidom.parse(argv[0]))() -- cgit v1.2.3