summaryrefslogtreecommitdiff
path: root/tools/glib-errors-str-gen.py
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2009-05-26 15:38:59 +0100
committerWill Thompson <will.thompson@collabora.co.uk>2009-05-26 15:38:59 +0100
commit5ef917be668821c1a166f43ae24ad3eb37d25bf3 (patch)
treef687b2fca21f39219660315342d9fa795b6520e8 /tools/glib-errors-str-gen.py
parent6f6e11e59cb341d487247e76382c7b6770448fea (diff)
downloadtelepathy-glib-5ef917be668821c1a166f43ae24ad3eb37d25bf3.tar.gz
Generate error-str.c as well as error-str.h
This adapts glib-errors-str-gen.py to follow a similar pattern to that used in glib-ginterface-gen.py: it accepts a basename on the command line, and writes to <basename>.[ch].
Diffstat (limited to 'tools/glib-errors-str-gen.py')
-rw-r--r--tools/glib-errors-str-gen.py40
1 files changed, 28 insertions, 12 deletions
diff --git a/tools/glib-errors-str-gen.py b/tools/glib-errors-str-gen.py
index bf0beb4e7..ab7e87388 100644
--- a/tools/glib-errors-str-gen.py
+++ b/tools/glib-errors-str-gen.py
@@ -6,28 +6,44 @@ import xml.dom.minidom
from libglibcodegen import NS_TP, camelcase_to_upper, get_docstring, xml_escape
class Generator(object):
- def __init__(self, dom):
+ def __init__(self, dom, basename):
self.dom = dom
self.errors = self.dom.getElementsByTagNameNS(NS_TP, 'errors')[0]
+ self.basename = basename
+
+ self.__header = []
+ self.__body = []
+
+ def h(self, s):
+ self.__header.append(s)
+
+ def b(self, s):
+ self.__body.append(s)
def __call__(self):
+ errors = self.errors.getElementsByTagNameNS(NS_TP, 'error')
- for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'):
+ for error in errors:
ns = error.parentNode.getAttribute('namespace')
nick = error.getAttribute('name').replace(' ', '')
name = 'TP_ERROR_STR_' + camelcase_to_upper(nick.replace('.', ''))
error_name = '%s.%s' % (ns, nick)
- print ''
- print '/**'
- print ' * %s:' % name
- print ' *'
- print ' * The D-Bus error name %s' % error_name
- print ' *'
- print ' * %s' % xml_escape(get_docstring(error))
- print ' */'
- print '#define %s "%s"' % (name, error_name)
+ self.h('')
+ self.h('/**')
+ self.h(' * %s:' % name)
+ self.h(' *')
+ self.h(' * The D-Bus error name %s' % error_name)
+ self.h(' *')
+ self.h(' * %s' % xml_escape(get_docstring(error)))
+ self.h(' */')
+ self.h('#define %s "%s"' % (name, error_name))
+
+ open(self.basename + '.h', 'w').write('\n'.join(self.__header))
+ open(self.basename + '.c', 'w').write('\n'.join(self.__body))
if __name__ == '__main__':
argv = sys.argv[1:]
- Generator(xml.dom.minidom.parse(argv[0]))()
+ basename = argv[0]
+
+ Generator(xml.dom.minidom.parse(argv[1]), basename)()