[telepathy-glib/master] Generate error-str.c as well as error-str.h
Will Thompson
will.thompson at collabora.co.uk
Tue May 26 07:38:59 PDT 2009
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].
---
telepathy-glib/Makefile.am | 7 +++++--
tools/glib-errors-str-gen.py | 40 ++++++++++++++++++++++++++++------------
2 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/telepathy-glib/Makefile.am b/telepathy-glib/Makefile.am
index 3bd3a59..ef026aa 100644
--- a/telepathy-glib/Makefile.am
+++ b/telepathy-glib/Makefile.am
@@ -157,6 +157,7 @@ tpginclude_HEADERS = \
util.h
nodist_libtelepathy_glib_internal_la_SOURCES = \
+ _gen/error-str.c \
_gen/error-str.h \
_gen/signals-marshal.c \
_gen/signals-marshal.h \
@@ -332,9 +333,11 @@ _gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am
$(QUIET_GEN){ echo '#include "_gen/signals-marshal.h"' && \
$(GLIB_GENMARSHAL) --body --prefix=_tp_marshal $< ; } > $@
-_gen/error-str.h: _gen/stable-spec.xml \
+_gen/error-str.h _gen/error-str.c: _gen/stable-spec.xml \
$(tools_dir)/glib-errors-str-gen.py
- $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-errors-str-gen.py $< > $@
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-errors-str-gen.py \
+ _gen/error-str $<
+
# Things generated per interface
_gen/tp-spec-%.xml: %.xml _gen/spec-stamp $(tools_dir)/xincludator.py
diff --git a/tools/glib-errors-str-gen.py b/tools/glib-errors-str-gen.py
index bf0beb4..ab7e873 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)()
--
1.5.6.5
More information about the telepathy-commits
mailing list