[telepathy-glib/master] glib-client-gen.py: add support for deprecating or not generating _run_ methods
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Jun 10 06:34:11 PDT 2009
---
examples/extensions/Makefile.am | 3 ++-
telepathy-glib/Makefile.am | 10 ++++++++++
tools/glib-client-gen.py | 31 +++++++++++++++++++++++++------
3 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/examples/extensions/Makefile.am b/examples/extensions/Makefile.am
index 0bd2e37..2053010 100644
--- a/examples/extensions/Makefile.am
+++ b/examples/extensions/Makefile.am
@@ -116,13 +116,14 @@ _gen/connection.xml: connection.xml $(wildcard *.xml) $(tools_dir)/xincludator.p
$(QUIET_GEN)$(PYTHON) $(tools_dir)/xincludator.py $< > $@
_gen/cli-connection-body.h _gen/cli-connection.h: _gen/connection.xml \
- $(tools_dir)/glib-client-gen.py
+ $(tools_dir)/glib-client-gen.py Makefile.am
$(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \
--group=connection \
--subclass=TpConnection \
--subclass-assert=TP_IS_CONNECTION \
--iface-quark-prefix=EXAMPLE_IFACE_QUARK \
--tp-proxy-api=0.7.6 \
+ --generate-reentrant \
$< Example_Cli _gen/cli-connection
_gen/svc-connection.c _gen/svc-connection.h: _gen/connection.xml \
diff --git a/telepathy-glib/Makefile.am b/telepathy-glib/Makefile.am
index a1b5147..5b167c8 100644
--- a/telepathy-glib/Makefile.am
+++ b/telepathy-glib/Makefile.am
@@ -362,29 +362,38 @@ _gen/tp-cli-%-body.h _gen/tp-cli-%.h: _gen/tp-spec-%.xml \
subclass= ; \
subclass_assert= ; \
case $* in \
+ generic) \
+ maybe_reentrant=--generate-reentrant; \
+ ;; \
channel) \
subclass=--subclass=TpChannel; \
subclass_assert=--subclass-assert=TP_IS_CHANNEL; \
+ maybe_reentrant=--generate-reentrant; \
;; \
connection-manager) \
subclass=--subclass=TpConnectionManager; \
subclass_assert=--subclass-assert=TP_IS_CONNECTION_MANAGER \
+ maybe_reentrant=--generate-reentrant; \
;; \
connection) \
subclass=--subclass=TpConnection; \
subclass_assert=--subclass-assert=TP_IS_CONNECTION; \
+ maybe_reentrant=--generate-reentrant; \
;; \
media-session-handler) \
subclass=--subclass=TpMediaSessionHandler; \
subclass_assert=--subclass-assert=TP_IS_MEDIA_SESSION_HANDLER; \
+ maybe_reentrant=--generate-reentrant; \
;; \
media-stream-handler) \
subclass=--subclass=TpMediaStreamHandler; \
subclass_assert=--subclass-assert=TP_IS_MEDIA_STREAM_HANDLER; \
+ maybe_reentrant=--generate-reentrant; \
;; \
dbus-daemon) \
subclass=--subclass=TpDBusDaemon; \
subclass_assert=--subclass-assert=TP_IS_DBUS_DAEMON; \
+ maybe_reentrant=--generate-reentrant; \
;; \
esac; \
$(PYTHON) $(tools_dir)/glib-client-gen.py \
@@ -392,4 +401,5 @@ _gen/tp-cli-%-body.h _gen/tp-cli-%.h: _gen/tp-spec-%.xml \
--group `echo $* | tr - _` \
--iface-quark-prefix=TP_IFACE_QUARK \
--tp-proxy-api=0.7.6 \
+ $$maybe_reentrant \
$< Tp_Cli _gen/tp-cli-$*
diff --git a/tools/glib-client-gen.py b/tools/glib-client-gen.py
index a3714f1..6988596 100644
--- a/tools/glib-client-gen.py
+++ b/tools/glib-client-gen.py
@@ -55,6 +55,9 @@ class Generator(object):
% opts.get('--subclass', 'TpProxy'))
if self.proxy_arg == 'void *':
self.proxy_arg = 'gpointer '
+ self.generate_reentrant = ('--generate-reentrant' in opts or
+ '--deprecate-reentrant' in opts)
+ self.deprecate_reentrant = opts.get('--deprecate-reentrant', None)
def h(self, s):
if isinstance(s, unicode):
@@ -801,6 +804,16 @@ class Generator(object):
self.b('}')
self.b('')
+ if self.generate_reentrant:
+ self.do_method_reentrant(method, iface_lc, member, member_lc,
+ in_args, out_args, collect_callback)
+
+ # leave a gap for the end of the method
+ self.b('')
+ self.h('')
+
+ def do_method_reentrant(self, method, iface_lc, member, member_lc, in_args,
+ out_args, collect_callback):
# Reentrant blocking calls
# Example:
# gboolean tp_cli_properties_interface_run_get_properties
@@ -885,6 +898,9 @@ class Generator(object):
self.b('}')
self.b('')
+ if self.deprecate_reentrant:
+ self.h('#ifndef %s' % self.deprecate_reentrant)
+
self.h('gboolean %s_%s_run_%s (%sproxy,'
% (self.prefix_lc, iface_lc, member_lc, self.proxy_arg))
self.h(' gint timeout_ms,')
@@ -948,7 +964,13 @@ class Generator(object):
self.b(' %s*%s,' % (ctype, name))
self.h(' GError **error,')
- self.h(' GMainLoop **loop);')
+
+ if self.deprecate_reentrant:
+ self.h(' GMainLoop **loop) G_GNUC_DEPRECATED;')
+ self.h('#endif /* not %s */' % self.deprecate_reentrant)
+ else:
+ self.h(' GMainLoop **loop);')
+
self.h('')
self.b(' GError **error,')
@@ -1020,10 +1042,6 @@ class Generator(object):
self.b('}')
self.b('')
- # leave a gap for the end of the method
- self.b('')
- self.h('')
-
def do_signal_add(self, signal):
marshaller_items = []
gtypes = []
@@ -1153,7 +1171,8 @@ def types_to_gtypes(types):
if __name__ == '__main__':
options, argv = gnu_getopt(sys.argv[1:], '',
['group=', 'subclass=', 'subclass-assert=',
- 'iface-quark-prefix=', 'tp-proxy-api='])
+ 'iface-quark-prefix=', 'tp-proxy-api=',
+ 'generate-reentrant', 'deprecate-reentrant='])
opts = {}
--
1.5.6.5
More information about the telepathy-commits
mailing list