[glib] gdbus-codegen: Split C header and code generation
- From: Iñigo Martínez <inigomartinez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gdbus-codegen: Split C header and code generation
- Date: Mon, 15 Jan 2018 15:18:31 +0000 (UTC)
commit 22772acff8fa4bc23b9838c2bc99cefbbbc76230
Author: Iñigo Martínez <inigomartinez gmail com>
Date: Thu Jan 4 09:56:59 2018 +0100
gdbus-codegen: Split C header and code generation
The class that generated both C header and code has been split into
two classes. These clases are now specialized on creating the header
or the body code.
All parameters that do not belong to each class have also been
deleted, so only the necessary parameters still remain. These also
includes the header and code file descriptors, leaving only the
corresponding file descriptor necessary for each class.
https://bugzilla.gnome.org/show_bug.cgi?id=791015
gio/gdbus-2.0/codegen/codegen.py | 4672 +++++++++++++++++----------------
gio/gdbus-2.0/codegen/codegen_main.py | 32 +-
2 files changed, 2360 insertions(+), 2344 deletions(-)
---
diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py
index a517703..543c41e 100644
--- a/gio/gdbus-2.0/codegen/codegen.py
+++ b/gio/gdbus-2.0/codegen/codegen.py
@@ -3,6 +3,7 @@
# GDBus - GLib D-Bus Library
#
# Copyright (C) 2008-2011 Red Hat, Inc.
+# Copyright (C) 2018 Iñigo Martínez <inigomartinez gmail com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -33,81 +34,79 @@ LICENSE_STR = '''/*
* it was derived from.
*/\n'''
-# ----------------------------------------------------------------------------------------------------
+def generate_namespace(namespace):
+ ns = namespace
+ if len(namespace) > 0:
+ if utils.is_ugly_case(namespace):
+ ns = namespace.replace('_', '')
+ ns_upper = namespace.upper() + '_'
+ ns_lower = namespace.lower() + '_'
+ else:
+ ns_upper = utils.camel_case_to_uscore(namespace).upper() + '_'
+ ns_lower = utils.camel_case_to_uscore(namespace).lower() + '_'
+ else:
+ ns_upper = ''
+ ns_lower = ''
-class CodeGenerator:
- def __init__(self, ifaces, namespace, interface_prefix, generate_objmanager,
- generate_autocleanup, docbook_gen, h, c, header_name,
- use_pragma):
- self.docbook_gen = docbook_gen
+ return (ns, ns_upper, ns_lower)
+
+class HeaderCodeGenerator:
+ def __init__(self, ifaces, namespace, generate_objmanager,
+ generate_autocleanup, header_name, use_pragma, outfile):
+ self.ifaces = ifaces
+ self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
self.generate_objmanager = generate_objmanager
self.generate_autocleanup = generate_autocleanup
- self.ifaces = ifaces
- self.h = h
- self.c = c
- self.header_name = header_name
- self.namespace = namespace
- if len(namespace) > 0:
- if utils.is_ugly_case(namespace):
- self.namespace = namespace.replace('_', '')
- self.ns_upper = namespace.upper() + '_'
- self.ns_lower = namespace.lower() + '_'
- else:
- self.ns_upper = utils.camel_case_to_uscore(namespace).upper() + '_'
- self.ns_lower = utils.camel_case_to_uscore(namespace).lower() + '_'
- else:
- self.ns_upper = ''
- self.ns_lower = ''
- self.interface_prefix = interface_prefix
self.header_guard = header_name.upper().replace('.', '_').replace('-', '_').replace('/',
'_').replace(':', '_')
self.use_pragma = use_pragma
+ self.outfile = outfile
# ----------------------------------------------------------------------------------------------------
def generate_header_preamble(self):
- self.h.write(LICENSE_STR.format(config.VERSION))
- self.h.write('\n')
+ self.outfile.write(LICENSE_STR.format(config.VERSION))
+ self.outfile.write('\n')
if self.use_pragma:
- self.h.write('#pragma once\n')
+ self.outfile.write('#pragma once\n')
else:
- self.h.write('#ifndef __{!s}__\n'.format(self.header_guard))
- self.h.write('#define __{!s}__\n'.format(self.header_guard))
+ self.outfile.write('#ifndef __{!s}__\n'.format(self.header_guard))
+ self.outfile.write('#define __{!s}__\n'.format(self.header_guard))
- self.h.write('\n')
- self.h.write('#include <gio/gio.h>\n')
- self.h.write('\n')
- self.h.write('G_BEGIN_DECLS\n')
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('#include <gio/gio.h>\n')
+ self.outfile.write('\n')
+ self.outfile.write('G_BEGIN_DECLS\n')
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
def declare_types(self):
for i in self.ifaces:
- self.h.write('\n')
- self.h.write('/* ------------------------------------------------------------------------ */\n')
- self.h.write('/* Declarations for %s */\n'%i.name)
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ------------------------------------------------------------------------
*/\n')
+ self.outfile.write('/* Declarations for %s */\n'%i.name)
+ self.outfile.write('\n')
# First the GInterface
- self.h.write('#define %sTYPE_%s (%s_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.h.write('#define %s%s(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s, %s))\n'%(i.ns_upper,
i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s))\n'%(i.ns_upper,
i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %s%s_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_%s,
%sIface))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%s;\n'%(i.camel_name))
- self.h.write('typedef struct _%s %s;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sIface %sIface;\n'%(i.camel_name, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sIface\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GTypeInterface parent_iface;\n')
+ self.outfile.write('#define %sTYPE_%s (%s_get_type ())\n'%(i.ns_upper, i.name_upper,
i.name_lower))
+ self.outfile.write('#define %s%s(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s,
%s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_%s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %s%s_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_%s,
%sIface))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%s;\n'%(i.camel_name))
+ self.outfile.write('typedef struct _%s %s;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sIface %sIface;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sIface\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GTypeInterface parent_iface;\n')
function_pointers = {}
# vfuncs for methods
if len(i.methods) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
@@ -125,7 +124,7 @@ class CodeGenerator:
# vfuncs for signals
if len(i.signals) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for s in i.signals:
key = (s.since, '_signal_%s'%s.name_lower)
value = ' void (*%s) (\n'%(s.name_lower)
@@ -137,7 +136,7 @@ class CodeGenerator:
# vfuncs for properties
if len(i.properties) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for p in i.properties:
key = (p.since, '_prop_get_%s'%p.name_lower)
value = ' %s (*get_%s) (%s *object);\n\n'%(p.arg.ctype_in, p.name_lower, i.camel_name)
@@ -153,615 +152,634 @@ class CodeGenerator:
# See https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5
# for discussion
for key in sorted(function_pointers.keys(), key=utils.version_cmp_key):
- self.h.write('%s'%function_pointers[key])
+ self.outfile.write('%s'%function_pointers[key])
- self.h.write('};\n')
- self.h.write('\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
if self.generate_autocleanup == 'all':
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
- self.h.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
- self.h.write('guint %s_override_properties (GObjectClass *klass, guint
property_id_begin);\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
+ self.outfile.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
+ self.outfile.write('guint %s_override_properties (GObjectClass *klass, guint
property_id_begin);\n'%(i.name_lower))
+ self.outfile.write('\n')
# Then method call completion functions
if len(i.methods) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus method call completion functions: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus method call completion functions: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_complete_%s (\n'
- ' %s *object,\n'
- ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower,
i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_complete_%s (\n'
+ ' %s *object,\n'
+ ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower,
i.camel_name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.h.write(',\n %s%s'%(a.ctype_in, a.name))
- self.h.write(');\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n %s%s'%(a.ctype_in, a.name))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then signal emission functions
if len(i.signals) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus signal emissions functions: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus signal emissions functions: */\n')
for s in i.signals:
if s.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_emit_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_emit_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.h.write(');\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then method call declarations
if len(i.methods) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus method calls: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus method calls: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
# async begin
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_call_%s (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_call_%s (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
- self.h.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n')
+ self.outfile.write('\n')
# async finish
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('gboolean %s_call_%s_finish (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('gboolean %s_call_%s_finish (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.h.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList **out_fd_list')
- self.h.write(',\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n')
+ self.outfile.write('\n')
# sync
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('gboolean %s_call_%s_sync (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('gboolean %s_call_%s_sync (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.h.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList **out_fd_list')
- self.h.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then the property accessor declarations
if len(i.properties) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus property accessors: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus property accessors: */\n')
for p in i.properties:
# getter
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s%s_get_%s (%s *object);\n'%(p.arg.ctype_in, i.name_lower, p.name_lower,
i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s%s_get_%s (%s *object);\n'%(p.arg.ctype_in, i.name_lower,
p.name_lower, i.camel_name))
if p.arg.free_func != None:
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s%s_dup_%s (%s *object);\n'%(p.arg.ctype_in_dup, i.name_lower,
p.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s%s_dup_%s (%s *object);\n'%(p.arg.ctype_in_dup, i.name_lower,
p.name_lower, i.camel_name))
# setter
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower, p.name_lower,
i.camel_name, p.arg.ctype_in, ))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower,
p.name_lower, i.camel_name, p.arg.ctype_in, ))
+ self.outfile.write('\n')
# Then the proxy
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_%s_PROXY (%s_proxy_get_type ())\n'%(i.ns_upper, i.name_upper,
i.name_lower))
- self.h.write('#define %s%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_PROXY,
%sProxy))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_PROXY,
%sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_PROXY,
%sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %sIS_%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sProxy %sProxy;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sProxyClass %sProxyClass;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sProxyPrivate %sProxyPrivate;\n'%(i.camel_name, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sProxy\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusProxy parent_instance;\n')
- self.h.write(' %sProxyPrivate *priv;\n'%(i.camel_name))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sProxyClass\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GDBusProxyClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_%s_PROXY (%s_proxy_get_type ())\n'%(i.ns_upper, i.name_upper,
i.name_lower))
+ self.outfile.write('#define %s%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_PROXY,
%sProxy))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_PROXY,
%sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %sIS_%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sProxy %sProxy;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sProxyClass %sProxyClass;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sProxyPrivate %sProxyPrivate;\n'%(i.camel_name,
i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sProxy\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusProxy parent_instance;\n')
+ self.outfile.write(' %sProxyPrivate *priv;\n'%(i.camel_name))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sProxyClass\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusProxyClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' %
(i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_proxy_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_proxy_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_proxy_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_proxy_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
# Then the skeleton
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_%s_SKELETON (%s_skeleton_get_type ())\n'%(i.ns_upper, i.name_upper,
i.name_lower))
- self.h.write('#define %s%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_SKELETON,
%sSkeleton))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_SKELETON,
%sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %sIS_%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sSkeleton %sSkeleton;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sSkeletonClass %sSkeletonClass;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sSkeletonPrivate %sSkeletonPrivate;\n'%(i.camel_name,
i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sSkeleton\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusInterfaceSkeleton parent_instance;\n')
- self.h.write(' %sSkeletonPrivate *priv;\n'%(i.camel_name))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sSkeletonClass\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GDBusInterfaceSkeletonClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_%s_SKELETON (%s_skeleton_get_type ())\n'%(i.ns_upper,
i.name_upper, i.name_lower))
+ self.outfile.write('#define %s%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_%s_SKELETON, %sSkeleton))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %sIS_%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sSkeleton %sSkeleton;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sSkeletonClass %sSkeletonClass;\n'%(i.camel_name,
i.camel_name))
+ self.outfile.write('typedef struct _%sSkeletonPrivate %sSkeletonPrivate;\n'%(i.camel_name,
i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sSkeleton\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusInterfaceSkeleton parent_instance;\n')
+ self.outfile.write(' %sSkeletonPrivate *priv;\n'%(i.camel_name))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sSkeletonClass\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusInterfaceSkeletonClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' %
(i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
# Finally, the Object, ObjectProxy, ObjectSkeleton and ObjectManagerClient
if self.generate_objmanager:
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT (%sobject_get_type ())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT,
%sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sOBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_OBJECT,
%sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObject;\n'%(self.namespace))
- self.h.write('typedef struct _%sObject %sObject;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectIface %sObjectIface;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectIface\n'%(self.namespace))
- self.h.write('{\n'
- ' GTypeInterface parent_iface;\n'
- '};\n'
- '\n')
- self.h.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
- '\n'
- %(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT (%sobject_get_type ())\n'%(self.ns_upper,
self.ns_lower))
+ self.outfile.write('#define %sOBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT,
%sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sOBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o),
%sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObject;\n'%(self.namespace))
+ self.outfile.write('typedef struct _%sObject %sObject;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectIface %sObjectIface;\n'%(self.namespace,
self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectIface\n'%(self.namespace))
+ self.outfile.write('{\n'
+ ' GTypeInterface parent_iface;\n'
+ '};\n'
+ '\n')
+ self.outfile.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
+ '\n'
+ %(self.ns_lower))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('%s *%sobject_get_%s (%sObject *object);\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%sobject_get_%s (%sObject *object);\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('%s *%sobject_peek_%s (%sObject *object);\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_PROXY (%sobject_proxy_get_type ())\n'%(self.ns_upper,
self.ns_lower))
- self.h.write('#define %sOBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_PROXY,
%sObjectProxy))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectProxy %sObjectProxy;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectProxyClass %sObjectProxyClass;\n'%(self.namespace,
self.namespace))
- self.h.write('typedef struct _%sObjectProxyPrivate %sObjectProxyPrivate;\n'%(self.namespace,
self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectProxy\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectProxy parent_instance;\n')
- self.h.write(' %sObjectProxyPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectProxyClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectProxyClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%sobject_peek_%s (%sObject *object);\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_PROXY (%sobject_proxy_get_type ())\n'%(self.ns_upper,
self.ns_lower))
+ self.outfile.write('#define %sOBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_OBJECT_PROXY, %sObjectProxy))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectProxy %sObjectProxy;\n'%(self.namespace,
self.namespace))
+ self.outfile.write('typedef struct _%sObjectProxyClass %sObjectProxyClass;\n'%(self.namespace,
self.namespace))
+ self.outfile.write('typedef struct _%sObjectProxyPrivate
%sObjectProxyPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectProxy\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectProxy parent_instance;\n')
+ self.outfile.write(' %sObjectProxyPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectProxyClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectProxyClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' %
(self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar
*object_path);\n'%(self.namespace, self.ns_lower))
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper,
self.ns_lower))
- self.h.write('#define %sOBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_OBJECT_SKELETON, %sObjectSkeleton))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectSkeleton %sObjectSkeleton;\n'%(self.namespace,
self.namespace))
- self.h.write('typedef struct _%sObjectSkeletonClass %sObjectSkeletonClass;\n'%(self.namespace,
self.namespace))
- self.h.write('typedef struct _%sObjectSkeletonPrivate
%sObjectSkeletonPrivate;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectSkeleton\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectSkeleton parent_instance;\n')
- self.h.write(' %sObjectSkeletonPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectSkeletonClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectSkeletonClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' %
(self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar
*object_path);\n'%(self.namespace, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type
())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_OBJECT_SKELETON, %sObjectSkeleton))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectSkeleton %sObjectSkeleton;\n'%(self.namespace,
self.namespace))
+ self.outfile.write('typedef struct _%sObjectSkeletonClass
%sObjectSkeletonClass;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectSkeletonPrivate
%sObjectSkeletonPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectSkeleton\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectSkeleton parent_instance;\n')
+ self.outfile.write(' %sObjectSkeletonPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectSkeletonClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectSkeletonClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' %
(self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
- %(self.namespace, self.ns_lower))
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' %
(self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
+ %(self.namespace, self.ns_lower))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n'
- %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
- self.h.write('\n')
-
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_MANAGER_CLIENT (%sobject_manager_client_get_type
())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClient))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o),
%sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectManagerClient %sObjectManagerClient;\n'%(self.namespace,
self.namespace))
- self.h.write('typedef struct _%sObjectManagerClientClass
%sObjectManagerClientClass;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectManagerClientPrivate
%sObjectManagerClientPrivate;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectManagerClient\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectManagerClient parent_instance;\n')
- self.h.write(' %sObjectManagerClientPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectManagerClientClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectManagerClientClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s
*interface_);\n'
+ %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+ self.outfile.write('\n')
+
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_MANAGER_CLIENT (%sobject_manager_client_get_type
())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
%sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClient))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
%sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS
((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper,
self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o),
%sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k),
%sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectManagerClient
%sObjectManagerClient;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectManagerClientClass
%sObjectManagerClientClass;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectManagerClientPrivate
%sObjectManagerClientPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectManagerClient\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectManagerClient parent_instance;\n')
+ self.outfile.write(' %sObjectManagerClientPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectManagerClientClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectManagerClientClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' %
(self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
- self.h.write('GType %sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager,
const gchar *object_path, const gchar *interface_name, gpointer user_data);\n'%(self.ns_lower))
- self.h.write('\n')
- self.h.write('void %sobject_manager_client_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('\n')
- self.h.write('void %sobject_manager_client_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n'
% (self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_manager_client_get_type (void)
G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_manager_client_get_proxy_type (GDBusObjectManagerClient
*manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);\n'%(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('void %sobject_manager_client_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('void %sobject_manager_client_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
def generate_header_postamble(self):
- self.h.write('\n')
- self.h.write('G_END_DECLS\n')
+ self.outfile.write('\n')
+ self.outfile.write('G_END_DECLS\n')
if not self.use_pragma:
- self.h.write('\n')
- self.h.write('#endif /* __{!s}__ */\n'.format(self.header_guard))
+ self.outfile.write('\n')
+ self.outfile.write('#endif /* __{!s}__ */\n'.format(self.header_guard))
# ----------------------------------------------------------------------------------------------------
- def generate_body_preamble(self):
- self.c.write(LICENSE_STR.format(config.VERSION))
- self.c.write('\n')
- self.c.write('#ifdef HAVE_CONFIG_H\n'
- '# include "config.h"\n'
- '#endif\n'
- '\n'
- '#include "%s"\n'
- '\n'
- '#include <string.h>\n'
- %(self.header_name))
-
- self.c.write('#ifdef G_OS_UNIX\n'
- '# include <gio/gunixfdlist.h>\n'
- '#endif\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusArgInfo parent_struct;\n'
- ' gboolean use_gvariant;\n'
- '} _ExtendedGDBusArgInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusMethodInfo parent_struct;\n'
- ' const gchar *signal_name;\n'
- ' gboolean pass_fdlist;\n'
- '} _ExtendedGDBusMethodInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusSignalInfo parent_struct;\n'
- ' const gchar *signal_name;\n'
- '} _ExtendedGDBusSignalInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusPropertyInfo parent_struct;\n'
- ' const gchar *hyphen_name;\n'
- ' gboolean use_gvariant;\n'
- '} _ExtendedGDBusPropertyInfo;\n'
- '\n')
+ def generate(self):
+ self.generate_header_preamble()
+ self.declare_types()
+ self.generate_header_postamble()
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusInterfaceInfo parent_struct;\n'
- ' const gchar *hyphen_name;\n'
- '} _ExtendedGDBusInterfaceInfo;\n'
- '\n')
+# ----------------------------------------------------------------------------------------------------
- self.c.write('typedef struct\n'
- '{\n'
- ' const _ExtendedGDBusPropertyInfo *info;\n'
- ' guint prop_id;\n'
- ' GValue orig_value; /* the value before the change */\n'
- '} ChangedProperty;\n'
- '\n'
- 'static void\n'
- '_changed_property_free (ChangedProperty *data)\n'
- '{\n'
- ' g_value_unset (&data->orig_value);\n'
- ' g_free (data);\n'
- '}\n'
- '\n')
+class CodeGenerator:
+ def __init__(self, ifaces, namespace, generate_objmanager, header_name,
+ docbook_gen, outfile):
+ self.ifaces = ifaces
+ self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
+ self.generate_objmanager = generate_objmanager
+ self.header_name = header_name
+ self.docbook_gen = docbook_gen
+ self.outfile = outfile
- self.c.write('static gboolean\n'
- '_g_strv_equal0 (gchar **a, gchar **b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' guint n;\n'
- ' if (a == NULL && b == NULL)\n'
- ' {\n'
- ' ret = TRUE;\n'
- ' goto out;\n'
- ' }\n'
- ' if (a == NULL || b == NULL)\n'
- ' goto out;\n'
- ' if (g_strv_length (a) != g_strv_length (b))\n'
- ' goto out;\n'
- ' for (n = 0; a[n] != NULL; n++)\n'
- ' if (g_strcmp0 (a[n], b[n]) != 0)\n'
- ' goto out;\n'
- ' ret = TRUE;\n'
- 'out:\n'
- ' return ret;\n'
- '}\n'
- '\n')
+ # ----------------------------------------------------------------------------------------------------
- self.c.write('static gboolean\n'
- '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' if (a == NULL && b == NULL)\n'
- ' {\n'
- ' ret = TRUE;\n'
- ' goto out;\n'
- ' }\n'
- ' if (a == NULL || b == NULL)\n'
- ' goto out;\n'
- ' ret = g_variant_equal (a, b);\n'
- 'out:\n'
- ' return ret;\n'
- '}\n'
- '\n')
+ def generate_body_preamble(self):
+ self.outfile.write(LICENSE_STR.format(config.VERSION))
+ self.outfile.write('\n')
+ self.outfile.write('#ifdef HAVE_CONFIG_H\n'
+ '# include "config.h"\n'
+ '#endif\n'
+ '\n'
+ '#include "%s"\n'
+ '\n'
+ '#include <string.h>\n'
+ %(self.header_name))
+
+ self.outfile.write('#ifdef G_OS_UNIX\n'
+ '# include <gio/gunixfdlist.h>\n'
+ '#endif\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusArgInfo parent_struct;\n'
+ ' gboolean use_gvariant;\n'
+ '} _ExtendedGDBusArgInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusMethodInfo parent_struct;\n'
+ ' const gchar *signal_name;\n'
+ ' gboolean pass_fdlist;\n'
+ '} _ExtendedGDBusMethodInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusSignalInfo parent_struct;\n'
+ ' const gchar *signal_name;\n'
+ '} _ExtendedGDBusSignalInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusPropertyInfo parent_struct;\n'
+ ' const gchar *hyphen_name;\n'
+ ' gboolean use_gvariant;\n'
+ '} _ExtendedGDBusPropertyInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusInterfaceInfo parent_struct;\n'
+ ' const gchar *hyphen_name;\n'
+ '} _ExtendedGDBusInterfaceInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' guint prop_id;\n'
+ ' GValue orig_value; /* the value before the change */\n'
+ '} ChangedProperty;\n'
+ '\n'
+ 'static void\n'
+ '_changed_property_free (ChangedProperty *data)\n'
+ '{\n'
+ ' g_value_unset (&data->orig_value);\n'
+ ' g_free (data);\n'
+ '}\n'
+ '\n')
+
+ self.outfile.write('static gboolean\n'
+ '_g_strv_equal0 (gchar **a, gchar **b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' guint n;\n'
+ ' if (a == NULL && b == NULL)\n'
+ ' {\n'
+ ' ret = TRUE;\n'
+ ' goto out;\n'
+ ' }\n'
+ ' if (a == NULL || b == NULL)\n'
+ ' goto out;\n'
+ ' if (g_strv_length (a) != g_strv_length (b))\n'
+ ' goto out;\n'
+ ' for (n = 0; a[n] != NULL; n++)\n'
+ ' if (g_strcmp0 (a[n], b[n]) != 0)\n'
+ ' goto out;\n'
+ ' ret = TRUE;\n'
+ 'out:\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
+
+ self.outfile.write('static gboolean\n'
+ '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' if (a == NULL && b == NULL)\n'
+ ' {\n'
+ ' ret = TRUE;\n'
+ ' goto out;\n'
+ ' }\n'
+ ' if (a == NULL || b == NULL)\n'
+ ' goto out;\n'
+ ' ret = g_variant_equal (a, b);\n'
+ 'out:\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
# simplified - only supports the types we use
- self.c.write('G_GNUC_UNUSED static gboolean\n'
- '_g_value_equal (const GValue *a, const GValue *b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
- ' switch (G_VALUE_TYPE (a))\n'
- ' {\n'
- ' case G_TYPE_BOOLEAN:\n'
- ' ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
- ' break;\n'
- ' case G_TYPE_UCHAR:\n'
- ' ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
- ' break;\n'
- ' case G_TYPE_INT:\n'
- ' ret = (g_value_get_int (a) == g_value_get_int (b));\n'
- ' break;\n'
- ' case G_TYPE_UINT:\n'
- ' ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
- ' break;\n'
- ' case G_TYPE_INT64:\n'
- ' ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
- ' break;\n'
- ' case G_TYPE_UINT64:\n'
- ' ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
- ' break;\n'
- ' case G_TYPE_DOUBLE:\n'
- ' {\n'
- ' /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
- ' gdouble da = g_value_get_double (a);\n'
- ' gdouble db = g_value_get_double (b);\n'
- ' ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
- ' }\n'
- ' break;\n'
- ' case G_TYPE_STRING:\n'
- ' ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);\n'
- ' break;\n'
- ' case G_TYPE_VARIANT:\n'
- ' ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));\n'
- ' break;\n'
- ' default:\n'
- ' if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
- ' ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
- ' else\n'
- ' g_critical ("_g_value_equal() does not handle type %s", g_type_name
(G_VALUE_TYPE (a)));\n'
- ' break;\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n')
+ self.outfile.write('G_GNUC_UNUSED static gboolean\n'
+ '_g_value_equal (const GValue *a, const GValue *b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
+ ' switch (G_VALUE_TYPE (a))\n'
+ ' {\n'
+ ' case G_TYPE_BOOLEAN:\n'
+ ' ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UCHAR:\n'
+ ' ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
+ ' break;\n'
+ ' case G_TYPE_INT:\n'
+ ' ret = (g_value_get_int (a) == g_value_get_int (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UINT:\n'
+ ' ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
+ ' break;\n'
+ ' case G_TYPE_INT64:\n'
+ ' ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UINT64:\n'
+ ' ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
+ ' break;\n'
+ ' case G_TYPE_DOUBLE:\n'
+ ' {\n'
+ ' /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
+ ' gdouble da = g_value_get_double (a);\n'
+ ' gdouble db = g_value_get_double (b);\n'
+ ' ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
+ ' }\n'
+ ' break;\n'
+ ' case G_TYPE_STRING:\n'
+ ' ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) ==
0);\n'
+ ' break;\n'
+ ' case G_TYPE_VARIANT:\n'
+ ' ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant
(b));\n'
+ ' break;\n'
+ ' default:\n'
+ ' if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
+ ' ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
+ ' else\n'
+ ' g_critical ("_g_value_equal() does not handle type %s", g_type_name
(G_VALUE_TYPE (a)));\n'
+ ' break;\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
def generate_annotations(self, prefix, annotations):
if annotations == None:
@@ -775,67 +793,67 @@ class CodeGenerator:
if a.key.startswith('org.gtk.GDBus'):
continue
- self.c.write('static const GDBusAnnotationInfo %s_%d =\n'
- '{\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'%(prefix, n, a.key, a.value))
+ self.outfile.write('static const GDBusAnnotationInfo %s_%d =\n'
+ '{\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'%(prefix, n, a.key, a.value))
if len(a.annotations) == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &%s_%d_pointers\n'%(prefix, n))
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' (GDBusAnnotationInfo **) &%s_%d_pointers\n'%(prefix, n))
+ self.outfile.write('};\n'
+ '\n')
n += 1
if n > 0:
- self.c.write('static const GDBusAnnotationInfo * const %s_pointers[] =\n'
- '{\n'%(prefix))
+ self.outfile.write('static const GDBusAnnotationInfo * const %s_pointers[] =\n'
+ '{\n'%(prefix))
m = 0;
for a in annotations:
if a.key.startswith('org.gtk.GDBus'):
continue
- self.c.write(' &%s_%d,\n'%(prefix, m))
+ self.outfile.write(' &%s_%d,\n'%(prefix, m))
m += 1
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
return n
def generate_args(self, prefix, args):
for a in args:
num_anno = self.generate_annotations('%s_arg_%s_annotation_info'%(prefix, a.name), a.annotations)
- self.c.write('static const _ExtendedGDBusArgInfo %s_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'%(prefix, a.name, a.name, a.signature))
+ self.outfile.write('static const _ExtendedGDBusArgInfo %s_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'%(prefix, a.name, a.name, a.signature))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &%s_arg_%s_annotation_info_pointers\n'%(prefix,
a.name))
- self.c.write(' },\n')
+ self.outfile.write(' (GDBusAnnotationInfo **)
&%s_arg_%s_annotation_info_pointers\n'%(prefix, a.name))
+ self.outfile.write(' },\n')
if not utils.lookup_annotation(a.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
- self.c.write(' FALSE\n')
+ self.outfile.write(' FALSE\n')
else:
- self.c.write(' TRUE\n')
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' TRUE\n')
+ self.outfile.write('};\n'
+ '\n')
if len(args) > 0:
- self.c.write('static const _ExtendedGDBusArgInfo * const %s_pointers[] =\n'
+ self.outfile.write('static const _ExtendedGDBusArgInfo * const %s_pointers[] =\n'
'{\n'%(prefix))
for a in args:
- self.c.write(' &%s_%s,\n'%(prefix, a.name))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &%s_%s,\n'%(prefix, a.name))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
def generate_introspection_for_interface(self, i):
- self.c.write('/* ---- Introspection data for %s ---- */\n'
- '\n'%(i.name))
+ self.outfile.write('/* ---- Introspection data for %s ---- */\n'
+ '\n'%(i.name))
if len(i.methods) > 0:
for m in i.methods:
@@ -847,37 +865,37 @@ class CodeGenerator:
num_anno = self.generate_annotations('_%s_method_%s_annotation_info'%(i.name_lower,
m.name_lower), m.annotations)
- self.c.write('static const _ExtendedGDBusMethodInfo _%s_method_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, m.name_lower, m.name))
+ self.outfile.write('static const _ExtendedGDBusMethodInfo _%s_method_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, m.name_lower, m.name))
if len(m.in_args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **)
&_%s_method_info_%s_IN_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' (GDBusArgInfo **)
&_%s_method_info_%s_IN_ARG_pointers,\n'%(i.name_lower, m.name_lower))
if len(m.out_args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **)
&_%s_method_info_%s_OUT_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' (GDBusArgInfo **)
&_%s_method_info_%s_OUT_ARG_pointers,\n'%(i.name_lower, m.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **)
&_%s_method_%s_annotation_info_pointers\n'%(i.name_lower, m.name_lower))
- self.c.write(' },\n'
- ' "handle-%s",\n'
- ' %s\n'
- %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
- self.c.write('};\n'
- '\n')
-
- self.c.write('static const _ExtendedGDBusMethodInfo * const _%s_method_info_pointers[] =\n'
- '{\n'%(i.name_lower))
+ self.outfile.write(' (GDBusAnnotationInfo **)
&_%s_method_%s_annotation_info_pointers\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' },\n'
+ ' "handle-%s",\n'
+ ' %s\n'
+ %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
+ self.outfile.write('};\n'
+ '\n')
+
+ self.outfile.write('static const _ExtendedGDBusMethodInfo * const _%s_method_info_pointers[]
=\n'
+ '{\n'%(i.name_lower))
for m in i.methods:
- self.c.write(' &_%s_method_info_%s,\n'%(i.name_lower, m.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_method_info_%s,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
# ---
@@ -886,32 +904,32 @@ class CodeGenerator:
self.generate_args('_%s_signal_info_%s_ARG'%(i.name_lower, s.name_lower), s.args)
num_anno = self.generate_annotations('_%s_signal_%s_annotation_info'%(i.name_lower,
s.name_lower), s.annotations)
- self.c.write('static const _ExtendedGDBusSignalInfo _%s_signal_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, s.name_lower, s.name))
+ self.outfile.write('static const _ExtendedGDBusSignalInfo _%s_signal_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, s.name_lower, s.name))
if len(s.args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **)
&_%s_signal_info_%s_ARG_pointers,\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' (GDBusArgInfo **)
&_%s_signal_info_%s_ARG_pointers,\n'%(i.name_lower, s.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **)
&_%s_signal_%s_annotation_info_pointers\n'%(i.name_lower, s.name_lower))
- self.c.write(' },\n'
- ' "%s"\n'
- %(s.name_hyphen))
- self.c.write('};\n'
- '\n')
-
- self.c.write('static const _ExtendedGDBusSignalInfo * const _%s_signal_info_pointers[] =\n'
- '{\n'%(i.name_lower))
+ self.outfile.write(' (GDBusAnnotationInfo **)
&_%s_signal_%s_annotation_info_pointers\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s"\n'
+ %(s.name_hyphen))
+ self.outfile.write('};\n'
+ '\n')
+
+ self.outfile.write('static const _ExtendedGDBusSignalInfo * const _%s_signal_info_pointers[]
=\n'
+ '{\n'%(i.name_lower))
for s in i.signals:
- self.c.write(' &_%s_signal_info_%s,\n'%(i.name_lower, s.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_signal_info_%s,\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
# ---
@@ -926,64 +944,64 @@ class CodeGenerator:
else:
access = 'G_DBUS_PROPERTY_INFO_FLAGS_NONE'
num_anno = self.generate_annotations('_%s_property_%s_annotation_info'%(i.name_lower,
p.name_lower), p.annotations)
- self.c.write('static const _ExtendedGDBusPropertyInfo _%s_property_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'
- ' %s,\n'%(i.name_lower, p.name_lower, p.name, p.arg.signature, access))
+ self.outfile.write('static const _ExtendedGDBusPropertyInfo _%s_property_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'
+ ' %s,\n'%(i.name_lower, p.name_lower, p.name, p.arg.signature,
access))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **)
&_%s_property_%s_annotation_info_pointers\n'%(i.name_lower, p.name_lower))
- self.c.write(' },\n'
- ' "%s",\n'
- %(p.name_hyphen))
+ self.outfile.write(' (GDBusAnnotationInfo **)
&_%s_property_%s_annotation_info_pointers\n'%(i.name_lower, p.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s",\n'
+ %(p.name_hyphen))
if not utils.lookup_annotation(p.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
- self.c.write(' FALSE\n')
+ self.outfile.write(' FALSE\n')
else:
- self.c.write(' TRUE\n')
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' TRUE\n')
+ self.outfile.write('};\n'
+ '\n')
- self.c.write('static const _ExtendedGDBusPropertyInfo * const _%s_property_info_pointers[]
=\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static const _ExtendedGDBusPropertyInfo * const
_%s_property_info_pointers[] =\n'
+ '{\n'%(i.name_lower))
for p in i.properties:
- self.c.write(' &_%s_property_info_%s,\n'%(i.name_lower, p.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_property_info_%s,\n'%(i.name_lower, p.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
num_anno = self.generate_annotations('_%s_annotation_info'%(i.name_lower), i.annotations)
- self.c.write('static const _ExtendedGDBusInterfaceInfo _%s_interface_info =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, i.name))
+ self.outfile.write('static const _ExtendedGDBusInterfaceInfo _%s_interface_info =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, i.name))
if len(i.methods) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusMethodInfo **) &_%s_method_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusMethodInfo **) &_%s_method_info_pointers,\n'%(i.name_lower))
if len(i.signals) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusSignalInfo **) &_%s_signal_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusSignalInfo **) &_%s_signal_info_pointers,\n'%(i.name_lower))
if len(i.properties) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusPropertyInfo **) &_%s_property_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusPropertyInfo **)
&_%s_property_info_pointers,\n'%(i.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &_%s_annotation_info_pointers\n'%(i.name_lower))
- self.c.write(' },\n'
- ' "%s",\n'
- '};\n'
- '\n'
- %(i.name_hyphen))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' (GDBusAnnotationInfo **)
&_%s_annotation_info_pointers\n'%(i.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s",\n'
+ '};\n'
+ '\n'
+ %(i.name_hyphen))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_interface_info:\n'
' *\n'
@@ -991,15 +1009,15 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.\n'
%(i.name_lower, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('GDBusInterfaceInfo *\n'
- '%s_interface_info (void)\n'
- '{\n'
- ' return (GDBusInterfaceInfo *) &_%s_interface_info.parent_struct;\n'
- '}\n'
- '\n'%(i.name_lower, i.name_lower))
-
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('GDBusInterfaceInfo *\n'
+ '%s_interface_info (void)\n'
+ '{\n'
+ ' return (GDBusInterfaceInfo *) &_%s_interface_info.parent_struct;\n'
+ '}\n'
+ '\n'%(i.name_lower, i.name_lower))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_override_properties:\n'
' * @klass: The class structure for a #GObject derived class.\n'
@@ -1010,32 +1028,32 @@ class CodeGenerator:
' *\n'
' * Returns: The last property id.\n'
%(i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('guint\n'
- '%s_override_properties (GObjectClass *klass, guint property_id_begin)\n'
- '{\n'%(i.name_lower))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('guint\n'
+ '%s_override_properties (GObjectClass *klass, guint property_id_begin)\n'
+ '{\n'%(i.name_lower))
for p in i.properties:
- self.c.write (' g_object_class_override_property (klass, property_id_begin++,
"%s");\n'%(p.name_hyphen))
- self.c.write(' return property_id_begin - 1;\n'
- '}\n'
- '\n')
- self.c.write('\n')
+ self.outfile.write(' g_object_class_override_property (klass, property_id_begin++,
"%s");\n'%(p.name_hyphen))
+ self.outfile.write(' return property_id_begin - 1;\n'
+ '}\n'
+ '\n')
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
def generate_interface(self, i):
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s:\n'
' *\n'
' * Abstract interface type for the D-Bus interface #%s.\n'
%(i.camel_name, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sIface:\n'
' * @parent_iface: The parent interface.\n'
@@ -1061,40 +1079,40 @@ class CodeGenerator:
value += 'Getter for the #%s:%s property.'%(i.camel_name, p.name_hyphen)
doc_bits[key] = value
for key in sorted(doc_bits.keys(), key=utils.version_cmp_key):
- self.c.write(' * %s\n'%doc_bits[key])
+ self.outfile.write(' * %s\n'%doc_bits[key])
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Virtual table for the D-Bus interface #%s.\n'
%(i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write('typedef %sIface %sInterface;\n'%(i.camel_name, i.camel_name))
- self.c.write('G_DEFINE_INTERFACE (%s, %s, G_TYPE_OBJECT)\n'%(i.camel_name, i.name_lower))
- self.c.write('\n')
+ self.outfile.write('typedef %sIface %sInterface;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('G_DEFINE_INTERFACE (%s, %s, G_TYPE_OBJECT)\n'%(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
- self.c.write('static void\n'
- '%s_default_init (%sIface *iface)\n'
- '{\n'%(i.name_lower, i.camel_name));
+ self.outfile.write('static void\n'
+ '%s_default_init (%sIface *iface)\n'
+ '{\n'%(i.name_lower, i.camel_name));
if len(i.methods) > 0:
- self.c.write(' /* GObject signals for incoming D-Bus method calls: */\n')
+ self.outfile.write(' /* GObject signals for incoming D-Bus method calls: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s::handle-%s:\n'
' * @object: A #%s.\n'
' * @invocation: A #GDBusMethodInvocation.\n'
%(i.camel_name, m.name_hyphen, i.camel_name), False))
if unix_fd:
- self.c.write (' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.in_args:
- self.c.write (' * @arg_%s: Argument passed by remote caller.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument passed by remote caller.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Signal emitted when a remote caller is invoking the %s.%s() D-Bus method.\n'
' *\n'
@@ -1102,63 +1120,63 @@ class CodeGenerator:
' *\n'
' * Returns: %%TRUE if the invocation was handled, %%FALSE to let other signal
handlers run.\n'
%(i.name, m.name, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 2)
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 2)
if unix_fd:
extra_args = 2
else:
extra_args = 1
- self.c.write(' g_signal_new ("handle-%s",\n'
- ' G_TYPE_FROM_INTERFACE (iface),\n'
- ' G_SIGNAL_RUN_LAST,\n'
- ' G_STRUCT_OFFSET (%sIface, handle_%s),\n'
- ' g_signal_accumulator_true_handled,\n'
- ' NULL,\n' # accu_data
- ' g_cclosure_marshal_generic,\n'
- ' G_TYPE_BOOLEAN,\n'
- ' %d,\n'
- ' G_TYPE_DBUS_METHOD_INVOCATION'
- %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
+ self.outfile.write(' g_signal_new ("handle-%s",\n'
+ ' G_TYPE_FROM_INTERFACE (iface),\n'
+ ' G_SIGNAL_RUN_LAST,\n'
+ ' G_STRUCT_OFFSET (%sIface, handle_%s),\n'
+ ' g_signal_accumulator_true_handled,\n'
+ ' NULL,\n' # accu_data
+ ' g_cclosure_marshal_generic,\n'
+ ' G_TYPE_BOOLEAN,\n'
+ ' %d,\n'
+ ' G_TYPE_DBUS_METHOD_INVOCATION'
+ %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
if unix_fd:
- self.c.write(', G_TYPE_UNIX_FD_LIST')
+ self.outfile.write(', G_TYPE_UNIX_FD_LIST')
for a in m.in_args:
- self.c.write (', %s'%(a.gtype))
- self.c.write(');\n')
- self.c.write('\n')
+ self.outfile.write(', %s'%(a.gtype))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
if len(i.signals) > 0:
- self.c.write(' /* GObject signals for received D-Bus signals: */\n')
+ self.outfile.write(' /* GObject signals for received D-Bus signals: */\n')
for s in i.signals:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s::%s:\n'
' * @object: A #%s.\n'
%(i.camel_name, s.name_hyphen, i.camel_name), False))
for a in s.args:
- self.c.write (' * @arg_%s: Argument.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * On the client-side, this signal is emitted whenever the D-Bus signal #%s::%s
is received.\n'
' *\n'
' * On the service-side, this signal can be used with e.g. g_signal_emit_by_name()
to make the object emit the D-Bus signal.\n'
%(i.name, s.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 2)
- self.c.write(' g_signal_new ("%s",\n'
- ' G_TYPE_FROM_INTERFACE (iface),\n'
- ' G_SIGNAL_RUN_LAST,\n'
- ' G_STRUCT_OFFSET (%sIface, %s),\n'
- ' NULL,\n' # accumulator
- ' NULL,\n' # accu_data
- ' g_cclosure_marshal_generic,\n'
- ' G_TYPE_NONE,\n'
- ' %d'
- %(s.name_hyphen, i.camel_name, s.name_lower, len(s.args)))
+ self.write_gtkdoc_deprecated_and_since_and_close(s, self.outfile, 2)
+ self.outfile.write(' g_signal_new ("%s",\n'
+ ' G_TYPE_FROM_INTERFACE (iface),\n'
+ ' G_SIGNAL_RUN_LAST,\n'
+ ' G_STRUCT_OFFSET (%sIface, %s),\n'
+ ' NULL,\n' # accumulator
+ ' NULL,\n' # accu_data
+ ' g_cclosure_marshal_generic,\n'
+ ' G_TYPE_NONE,\n'
+ ' %d'
+ %(s.name_hyphen, i.camel_name, s.name_lower, len(s.args)))
for a in s.args:
- self.c.write (', %s'%(a.gtype))
- self.c.write(');\n')
- self.c.write('\n')
+ self.outfile.write(', %s'%(a.gtype))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
if len(i.properties) > 0:
- self.c.write(' /* GObject properties for D-Bus properties: */\n')
+ self.outfile.write(' /* GObject properties for D-Bus properties: */\n')
for p in i.properties:
if p.readable and p.writable:
hint = 'Since the D-Bus property for this #GObject property is both readable and
writable, it is meaningful to both read from it and write to it on both the service- and client-side.'
@@ -1168,7 +1186,7 @@ class CodeGenerator:
hint = 'Since the D-Bus property for this #GObject property is writable but not
readable, it is meaningful to write to it on both the client- and service-side. It is only meaningful,
however, to read from it on the service-side.'
else:
print_error('Cannot handle property "{}" that neither readable nor
writable'.format(p.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s:%s:\n'
' *\n'
@@ -1176,8 +1194,8 @@ class CodeGenerator:
' *\n'
' * %s\n'
%(i.camel_name, p.name_hyphen, i.name, p.name, hint), False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 2)
- self.c.write(' g_object_interface_install_property (iface,\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 2)
+ self.outfile.write(' g_object_interface_install_property (iface,\n')
if p.arg.gtype == 'G_TYPE_VARIANT':
s = 'g_param_spec_variant ("%s", "%s", "%s", G_VARIANT_TYPE ("%s"),
NULL'%(p.name_hyphen, p.name, p.name, p.arg.signature)
elif p.arg.signature == 'b':
@@ -1214,11 +1232,11 @@ class CodeGenerator:
s = 'g_param_spec_boxed ("%s", "%s", "%s", G_TYPE_STRV'%(p.name_hyphen, p.name, p.name)
else:
print_error('Unsupported gtype "{}" for GParamSpec'.format(p.arg.gtype))
- self.c.write(' %s, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));'%s);
- self.c.write('\n')
+ self.outfile.write(' %s, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));'%s);
+ self.outfile.write('\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
# ----------------------------------------------------------------------------------------------------
@@ -1233,7 +1251,7 @@ class CodeGenerator:
hint = 'Since this D-Bus property is not readable, it is only meaningful to use this
function on the service-side.'
else:
print_error('Cannot handle property "{}" that neither readable nor writable'.format(p.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_get_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1244,22 +1262,22 @@ class CodeGenerator:
' *\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
if p.arg.free_func != None:
- self.c.write(' * <warning>The returned value is only valid until the property changes so on
the client-side it is only safe to use this function on the thread where @object was constructed. Use
%s_dup_%s() if on another thread.</warning>\n'
- ' *\n'
- ' * Returns: (transfer none): The property value or %%NULL if the property is
not set. Do not free the returned value, it belongs to @object.\n'
- %(i.name_lower, p.name_lower))
+ self.outfile.write(' * <warning>The returned value is only valid until the property changes
so on the client-side it is only safe to use this function on the thread where @object was constructed. Use
%s_dup_%s() if on another thread.</warning>\n'
+ ' *\n'
+ ' * Returns: (transfer none): The property value or %%NULL if the
property is not set. Do not free the returned value, it belongs to @object.\n'
+ %(i.name_lower, p.name_lower))
else:
- self.c.write(' * Returns: The property value.\n')
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('%s\n'
- '%s_get_%s (%s *object)\n'
- '{\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
- self.c.write(' return %s%s_GET_IFACE (object)->get_%s (object);\n'%(i.ns_upper, i.name_upper,
p.name_lower))
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write(' * Returns: The property value.\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('%s\n'
+ '%s_get_%s (%s *object)\n'
+ '{\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write(' return %s%s_GET_IFACE (object)->get_%s (object);\n'%(i.ns_upper,
i.name_upper, p.name_lower))
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
if p.arg.free_func != None:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_dup_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1270,15 +1288,15 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full): The property value or %%NULL if the property is not
set. The returned value should be freed with %s().\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint, p.arg.free_func),
False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('%s\n'
- '%s_dup_%s (%s *object)\n'
- '{\n'
- ' %svalue;\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name,
p.arg.ctype_in_dup))
- self.c.write(' g_object_get (G_OBJECT (object), "%s", &value, NULL);\n'%(p.name_hyphen))
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('%s\n'
+ '%s_dup_%s (%s *object)\n'
+ '{\n'
+ ' %svalue;\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower,
i.camel_name, p.arg.ctype_in_dup))
+ self.outfile.write(' g_object_get (G_OBJECT (object), "%s", &value,
NULL);\n'%(p.name_hyphen))
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# setter
if p.readable and p.writable:
@@ -1289,7 +1307,7 @@ class CodeGenerator:
hint = 'Since this D-Bus property is writable, it is meaningful to use this function on both
the client- and service-side.'
else:
print_error('Cannot handle property "{}" that neither readable nor writable'.format(p.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_set_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1299,43 +1317,43 @@ class CodeGenerator:
' *\n'
' * %s\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('void\n'
- '%s_set_%s (%s *object, %svalue)\n'
- '{\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
- self.c.write(' g_object_set (G_OBJECT (object), "%s", value, NULL);\n'%(p.name_hyphen))
- self.c.write('}\n')
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_set_%s (%s *object, %svalue)\n'
+ '{\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
+ self.outfile.write(' g_object_set (G_OBJECT (object), "%s", value, NULL);\n'%(p.name_hyphen))
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
def generate_signal_emitters(self, i):
for s in i.signals:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_emit_%s:\n'
' * @object: A #%s.\n'
%(i.name_lower, s.name_lower, i.camel_name), False))
for a in s.args:
- self.c.write(' * @arg_%s: Argument to pass with the signal.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument to pass with the signal.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Emits the #%s::%s D-Bus signal.\n'
%(i.name, s.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 0)
- self.c.write('void\n'
- '%s_emit_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(s, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_emit_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n'
- ' g_signal_emit_by_name (object, "%s"'%(s.name_hyphen))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n'
+ ' g_signal_emit_by_name (object, "%s"'%(s.name_hyphen))
for a in s.args:
- self.c.write(', arg_%s'%a.name)
- self.c.write(');\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(', arg_%s'%a.name)
+ self.outfile.write(');\n')
+ self.outfile.write('}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
@@ -1345,15 +1363,15 @@ class CodeGenerator:
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
# async begin
- self.c.write('/**\n'
- ' * %s_call_%s:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+ self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
if unix_fd:
- self.c.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
' * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %%NULL.\n'
' * @user_data: User data to pass to @callback.\n'
@@ -1364,50 +1382,50 @@ class CodeGenerator:
' *\n'
' * See %s_call_%s_sync() for the synchronous, blocking version of this method.\n'
%(i.name, m.name, i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('void\n'
- '%s_call_%s (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_call_%s (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
- self.c.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n')
+ self.outfile.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n')
if unix_fd:
- self.c.write(' g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
else:
- self.c.write(' g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
- self.c.write(' "%s",\n'
- ' g_variant_new ("('%(m.name))
+ self.outfile.write(' g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' "%s",\n'
+ ' g_variant_new ("('%(m.name))
for a in m.in_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.in_args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n')
if unix_fd:
- self.c.write(' fd_list,\n')
- self.c.write(' cancellable,\n'
- ' callback,\n'
- ' user_data);\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' fd_list,\n')
+ self.outfile.write(' cancellable,\n'
+ ' callback,\n'
+ ' user_data);\n')
+ self.outfile.write('}\n'
+ '\n')
# async finish
- self.c.write('/**\n'
- ' * %s_call_%s_finish:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s_finish:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.c.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to
ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
+ self.outfile.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to
ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
if unix_fd:
- self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%s_call_%s().\n'
' * @error: Return location for error or %%NULL.\n'
' *\n'
@@ -1415,54 +1433,54 @@ class CodeGenerator:
' *\n'
' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
%(i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('gboolean\n'
- '%s_call_%s_finish (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('gboolean\n'
+ '%s_call_%s_finish (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.c.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList **out_fd_list')
- self.c.write(',\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GVariant *_ret;\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GVariant *_ret;\n')
if unix_fd:
- self.c.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy),
out_fd_list, res, error);\n')
+ self.outfile.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY
(proxy), out_fd_list, res, error);\n')
else:
- self.c.write(' _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
- self.c.write(' if (_ret == NULL)\n'
- ' goto _out;\n')
- self.c.write(' g_variant_get (_ret,\n'
- ' \"(')
+ self.outfile.write(' _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
+ self.outfile.write(' if (_ret == NULL)\n'
+ ' goto _out;\n')
+ self.outfile.write(' g_variant_get (_ret,\n'
+ ' \"(')
for a in m.out_args:
- self.c.write('%s'%(a.format_out))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_out))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n out_%s'%(a.name))
- self.c.write(');\n'
- ' g_variant_unref (_ret);\n')
- self.c.write('_out:\n'
- ' return _ret != NULL;\n'
- '}\n'
- '\n')
+ self.outfile.write(',\n out_%s'%(a.name))
+ self.outfile.write(');\n'
+ ' g_variant_unref (_ret);\n')
+ self.outfile.write('_out:\n'
+ ' return _ret != NULL;\n'
+ '}\n'
+ '\n')
# sync
- self.c.write('/**\n'
- ' * %s_call_%s_sync:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s_sync:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+ self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
if unix_fd:
- self.c.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.out_args:
- self.c.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to
ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
+ self.outfile.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to
ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
if unix_fd:
- self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
' * @error: Return location for error or %%NULL.\n'
' *\n'
@@ -1472,57 +1490,57 @@ class CodeGenerator:
' *\n'
' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
%(i.name, m.name, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('gboolean\n'
- '%s_call_%s_sync (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('gboolean\n'
+ '%s_call_%s_sync (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.c.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList **out_fd_list')
- self.c.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GVariant *_ret;\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GVariant *_ret;\n')
if unix_fd:
- self.c.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY
(proxy),\n')
else:
- self.c.write(' _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
- self.c.write(' "%s",\n'
- ' g_variant_new ("('%(m.name))
+ self.outfile.write(' _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' "%s",\n'
+ ' g_variant_new ("('%(m.name))
for a in m.in_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.in_args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n')
if unix_fd:
- self.c.write(' fd_list,\n'
- ' out_fd_list,\n')
- self.c.write(' cancellable,\n'
- ' error);\n'
- ' if (_ret == NULL)\n'
- ' goto _out;\n')
- self.c.write(' g_variant_get (_ret,\n'
- ' \"(')
+ self.outfile.write(' fd_list,\n'
+ ' out_fd_list,\n')
+ self.outfile.write(' cancellable,\n'
+ ' error);\n'
+ ' if (_ret == NULL)\n'
+ ' goto _out;\n')
+ self.outfile.write(' g_variant_get (_ret,\n'
+ ' \"(')
for a in m.out_args:
- self.c.write('%s'%(a.format_out))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_out))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n out_%s'%(a.name))
- self.c.write(');\n'
- ' g_variant_unref (_ret);\n')
- self.c.write('_out:\n'
- ' return _ret != NULL;\n'
- '}\n'
- '\n')
+ self.outfile.write(',\n out_%s'%(a.name))
+ self.outfile.write(');\n'
+ ' g_variant_unref (_ret);\n')
+ self.outfile.write('_out:\n'
+ ' return _ret != NULL;\n'
+ '}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
@@ -1531,280 +1549,280 @@ class CodeGenerator:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
- self.c.write('/**\n'
- ' * %s_complete_%s:\n'
- ' * @object: A #%s.\n'
- ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_complete_%s:\n'
+ ' * @object: A #%s.\n'
+ ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
if unix_fd:
- self.c.write (' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.out_args:
- self.c.write(' * @%s: Parameter to return.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @%s: Parameter to return.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Helper function used in service implementations to finish handling invocations of
the %s.%s() D-Bus method. If you instead want to finish handling an invocation by returning an error, use
g_dbus_method_invocation_return_error() or similar.\n'
' *\n'
' * This method will free @invocation, you cannot use it afterwards.\n'
%(i.name, m.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('void\n'
- '%s_complete_%s (\n'
- ' %s *object,\n'
- ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_complete_%s (\n'
+ ' %s *object,\n'
+ ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower,
i.camel_name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.c.write(',\n %s%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n')
+ self.outfile.write(',\n %s%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n')
if unix_fd:
- self.c.write(' g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
- ' g_variant_new ("(')
+ self.outfile.write(' g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
+ ' g_variant_new ("(')
else:
- self.c.write(' g_dbus_method_invocation_return_value (invocation,\n'
- ' g_variant_new ("(')
+ self.outfile.write(' g_dbus_method_invocation_return_value (invocation,\n'
+ ' g_variant_new ("(')
for a in m.out_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n %s'%(a.name))
+ self.outfile.write(',\n %s'%(a.name))
if unix_fd:
- self.c.write('),\n fd_list);\n')
+ self.outfile.write('),\n fd_list);\n')
else:
- self.c.write('));\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write('));\n')
+ self.outfile.write('}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
def generate_proxy(self, i):
# class boilerplate
- self.c.write('/* ------------------------------------------------------------------------ */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------ */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sProxy:\n'
' *\n'
' * The #%sProxy structure contains only private data and should only be accessed using the
provided API.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sProxyClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sProxy.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
-
- self.c.write('struct _%sProxyPrivate\n'
- '{\n'
- ' GData *qdata;\n'
- '};\n'
- '\n'%i.camel_name)
-
- self.c.write('static void %s_proxy_iface_init (%sIface *iface);\n'
- '\n'%(i.name_lower, i.camel_name))
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name,
i.name_lower))
- self.c.write(' G_ADD_PRIVATE (%sProxy)\n'%(i.camel_name))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#else\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name,
i.name_lower))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#endif\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
+
+ self.outfile.write('struct _%sProxyPrivate\n'
+ '{\n'
+ ' GData *qdata;\n'
+ '};\n'
+ '\n'%i.camel_name)
+
+ self.outfile.write('static void %s_proxy_iface_init (%sIface *iface);\n'
+ '\n'%(i.name_lower, i.camel_name))
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name,
i.name_lower))
+ self.outfile.write(' G_ADD_PRIVATE (%sProxy)\n'%(i.camel_name))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#else\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name,
i.name_lower))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#endif\n')
# finalize
- self.c.write('static void\n'
- '%s_proxy_finalize (GObject *object)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sProxy *proxy = %s%s_PROXY (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' g_datalist_clear (&proxy->priv->qdata);\n')
- self.c.write(' G_OBJECT_CLASS (%s_proxy_parent_class)->finalize (object);\n'
- '}\n'
- '\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_finalize (GObject *object)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sProxy *proxy = %s%s_PROXY (object);\n'%(i.camel_name, i.ns_upper,
i.name_upper))
+ self.outfile.write(' g_datalist_clear (&proxy->priv->qdata);\n')
+ self.outfile.write(' G_OBJECT_CLASS (%s_proxy_parent_class)->finalize (object);\n'
+ '}\n'
+ '\n'%(i.name_lower))
# property accessors
#
# Note that we are guaranteed that prop_id starts at 1 and is
# laid out in the same order as introspection data pointers
#
- self.c.write('static void\n'
- '%s_proxy_get_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_get_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' const _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *variant;\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' info = _%s_property_info_pointers[prop_id - 1];\n'
- ' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object),
info->parent_struct.name);\n'
- ' if (info->use_gvariant)\n'
- ' {\n'
- ' g_value_set_variant (value, variant);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- # could be that we don't have the value in cache - in that case, we do
- # nothing and the user gets the default value for the GType
- ' if (variant != NULL)\n'
- ' g_dbus_gvariant_to_gvalue (variant, value);\n'
- ' }\n'
- ' if (variant != NULL)\n'
- ' g_variant_unref (variant);\n'
- %(len(i.properties), i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *variant;\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' info = _%s_property_info_pointers[prop_id - 1];\n'
+ ' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object),
info->parent_struct.name);\n'
+ ' if (info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_set_variant (value, variant);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ # could be that we don't have the value in cache - in that case, we do
+ # nothing and the user gets the default value for the GType
+ ' if (variant != NULL)\n'
+ ' g_dbus_gvariant_to_gvalue (variant, value);\n'
+ ' }\n'
+ ' if (variant != NULL)\n'
+ ' g_variant_unref (variant);\n'
+ %(len(i.properties), i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
if len(i.properties) > 0:
- self.c.write('static void\n'
- '%s_proxy_set_property_cb (GDBusProxy *proxy,\n'
- ' GAsyncResult *res,\n'
- ' gpointer user_data)\n'
- '{\n'%(i.name_lower))
- self.c.write(' const _ExtendedGDBusPropertyInfo *info = user_data;\n'
- ' GError *error;\n'
- ' GVariant *_ret;\n'
- ' error = NULL;\n'
- ' _ret = g_dbus_proxy_call_finish (proxy, res, &error);\n'
- ' if (!_ret)\n'
- ' {\n'
- ' g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s,
%%d)",\n'
- ' info->parent_struct.name, \n'
- ' error->message, g_quark_to_string (error->domain),
error->code);\n'
- ' g_error_free (error);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_variant_unref (_ret);\n'
- ' }\n'
- %(i.name))
- self.c.write('}\n'
- '\n')
- self.c.write('static void\n'
- '%s_proxy_set_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_set_property_cb (GDBusProxy *proxy,\n'
+ ' GAsyncResult *res,\n'
+ ' gpointer user_data)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info = user_data;\n'
+ ' GError *error;\n'
+ ' GVariant *_ret;\n'
+ ' error = NULL;\n'
+ ' _ret = g_dbus_proxy_call_finish (proxy, res, &error);\n'
+ ' if (!_ret)\n'
+ ' {\n'
+ ' g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s,
%%d)",\n'
+ ' info->parent_struct.name, \n'
+ ' error->message, g_quark_to_string (error->domain),
error->code);\n'
+ ' g_error_free (error);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_variant_unref (_ret);\n'
+ ' }\n'
+ %(i.name))
+ self.outfile.write('}\n'
+ '\n')
+ self.outfile.write('static void\n'
+ '%s_proxy_set_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' const _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *variant;\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' info = _%s_property_info_pointers[prop_id - 1];\n'
- ' variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE
(info->parent_struct.signature));\n'
- ' g_dbus_proxy_call (G_DBUS_PROXY (object),\n'
- ' "org.freedesktop.DBus.Properties.Set",\n'
- ' g_variant_new ("(ssv)", "%s", info->parent_struct.name, variant),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n'
- ' NULL, (GAsyncReadyCallback) %s_proxy_set_property_cb, (GDBusPropertyInfo *)
&info->parent_struct);\n'
- ' g_variant_unref (variant);\n'
- %(len(i.properties), i.name_lower, i.name, i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *variant;\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' info = _%s_property_info_pointers[prop_id - 1];\n'
+ ' variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE
(info->parent_struct.signature));\n'
+ ' g_dbus_proxy_call (G_DBUS_PROXY (object),\n'
+ ' "org.freedesktop.DBus.Properties.Set",\n'
+ ' g_variant_new ("(ssv)", "%s", info->parent_struct.name, variant),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n'
+ ' NULL, (GAsyncReadyCallback) %s_proxy_set_property_cb, (GDBusPropertyInfo
*) &info->parent_struct);\n'
+ ' g_variant_unref (variant);\n'
+ %(len(i.properties), i.name_lower, i.name, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# signal received
- self.c.write('static void\n'
- '%s_proxy_g_signal (GDBusProxy *proxy,\n'
- ' const gchar *sender_name G_GNUC_UNUSED,\n'
- ' const gchar *signal_name,\n'
- ' GVariant *parameters)\n'
- '{\n'%(i.name_lower))
- self.c.write(' _ExtendedGDBusSignalInfo *info;\n'
- ' GVariantIter iter;\n'
- ' GVariant *child;\n'
- ' GValue *paramv;\n'
- ' gsize num_params;\n'
- ' gsize n;\n'
- ' guint signal_id;\n');
+ self.outfile.write('static void\n'
+ '%s_proxy_g_signal (GDBusProxy *proxy,\n'
+ ' const gchar *sender_name G_GNUC_UNUSED,\n'
+ ' const gchar *signal_name,\n'
+ ' GVariant *parameters)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' _ExtendedGDBusSignalInfo *info;\n'
+ ' GVariantIter iter;\n'
+ ' GVariant *child;\n'
+ ' GValue *paramv;\n'
+ ' gsize num_params;\n'
+ ' gsize n;\n'
+ ' guint signal_id;\n');
# Note: info could be NULL if we are talking to a newer version of the interface
- self.c.write(' info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, signal_name);\n'
- ' if (info == NULL)\n'
- ' return;\n'
- %(i.name_lower))
- self.c.write (' num_params = g_variant_n_children (parameters);\n'
- ' paramv = g_new0 (GValue, num_params + 1);\n'
- ' g_value_init (¶mv[0], %sTYPE_%s);\n'
- ' g_value_set_object (¶mv[0], proxy);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_variant_iter_init (&iter, parameters);\n'
- ' n = 1;\n'
- ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
- ' {\n'
- ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *)
info->parent_struct.args[n - 1];\n'
- ' if (arg_info->use_gvariant)\n'
- ' {\n'
- ' g_value_init (¶mv[n], G_TYPE_VARIANT);\n'
- ' g_value_set_variant (¶mv[n], child);\n'
- ' n++;\n'
- ' }\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (child, ¶mv[n++]);\n'
- ' g_variant_unref (child);\n'
- ' }\n'
- )
- self.c.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_signal_emitv (paramv, signal_id, 0, NULL);\n')
- self.c.write(' for (n = 0; n < num_params + 1; n++)\n'
- ' g_value_unset (¶mv[n]);\n'
- ' g_free (paramv);\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, signal_name);\n'
+ ' if (info == NULL)\n'
+ ' return;\n'
+ %(i.name_lower))
+ self.outfile.write(' num_params = g_variant_n_children (parameters);\n'
+ ' paramv = g_new0 (GValue, num_params + 1);\n'
+ ' g_value_init (¶mv[0], %sTYPE_%s);\n'
+ ' g_value_set_object (¶mv[0], proxy);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_variant_iter_init (&iter, parameters);\n'
+ ' n = 1;\n'
+ ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+ ' {\n'
+ ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *)
info->parent_struct.args[n - 1];\n'
+ ' if (arg_info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_init (¶mv[n], G_TYPE_VARIANT);\n'
+ ' g_value_set_variant (¶mv[n], child);\n'
+ ' n++;\n'
+ ' }\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (child, ¶mv[n++]);\n'
+ ' g_variant_unref (child);\n'
+ ' }\n'
+ )
+ self.outfile.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_signal_emitv (paramv, signal_id, 0, NULL);\n')
+ self.outfile.write(' for (n = 0; n < num_params + 1; n++)\n'
+ ' g_value_unset (¶mv[n]);\n'
+ ' g_free (paramv);\n')
+ self.outfile.write('}\n'
+ '\n')
# property changed
- self.c.write('static void\n'
- '%s_proxy_g_properties_changed (GDBusProxy *_proxy,\n'
- ' GVariant *changed_properties,\n'
- ' const gchar *const *invalidated_properties)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_g_properties_changed (GDBusProxy *_proxy,\n'
+ ' GVariant *changed_properties,\n'
+ ' const gchar *const *invalidated_properties)\n'
+ '{\n'%(i.name_lower))
# Note: info could be NULL if we are talking to a newer version of the interface
- self.c.write(' %sProxy *proxy = %s%s_PROXY (_proxy);\n'
- ' guint n;\n'
- ' const gchar *key;\n'
- ' GVariantIter *iter;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' g_variant_get (changed_properties, "a{sv}", &iter);\n'
- ' while (g_variant_iter_next (iter, "{&sv}", &key, NULL))\n'
- ' {\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, key);\n'
- ' g_datalist_remove_data (&proxy->priv->qdata, key);\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
- ' }\n'
- ' g_variant_iter_free (iter);\n'
- ' for (n = 0; invalidated_properties[n] != NULL; n++)\n'
- ' {\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, invalidated_properties[n]);\n'
- ' g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
- ' }\n'
- '}\n'
- '\n'
- %(i.camel_name, i.ns_upper, i.name_upper,
- i.name_lower, i.name_lower))
+ self.outfile.write(' %sProxy *proxy = %s%s_PROXY (_proxy);\n'
+ ' guint n;\n'
+ ' const gchar *key;\n'
+ ' GVariantIter *iter;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' g_variant_get (changed_properties, "a{sv}", &iter);\n'
+ ' while (g_variant_iter_next (iter, "{&sv}", &key, NULL))\n'
+ ' {\n'
+ ' info = (_ExtendedGDBusPropertyInfo *)
g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, key);\n'
+ ' g_datalist_remove_data (&proxy->priv->qdata, key);\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+ ' }\n'
+ ' g_variant_iter_free (iter);\n'
+ ' for (n = 0; invalidated_properties[n] != NULL; n++)\n'
+ ' {\n'
+ ' info = (_ExtendedGDBusPropertyInfo *)
g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct,
invalidated_properties[n]);\n'
+ ' g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+ ' }\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.ns_upper, i.name_upper,
+ i.name_lower, i.name_lower))
# property vfuncs
for p in i.properties:
nul_value = '0'
if p.arg.free_func != None:
nul_value = 'NULL'
- self.c.write('static %s\n'
- '%s_proxy_get_%s (%s *object)\n'
- '{\n'
- ' %sProxy *proxy = %s%s_PROXY (object);\n'
- ' GVariant *variant;\n'
- ' %svalue = %s;\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name,
- i.camel_name, i.ns_upper, i.name_upper,
- p.arg.ctype_in, nul_value))
+ self.outfile.write('static %s\n'
+ '%s_proxy_get_%s (%s *object)\n'
+ '{\n'
+ ' %sProxy *proxy = %s%s_PROXY (object);\n'
+ ' GVariant *variant;\n'
+ ' %svalue = %s;\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name,
+ i.camel_name, i.ns_upper, i.name_upper,
+ p.arg.ctype_in, nul_value))
# For some property types, we have to free the returned
# value (or part of it, e.g. the container) because of how
# GVariant works.. see https://bugzilla.gnome.org/show_bug.cgi?id=657100
@@ -1818,81 +1836,81 @@ class CodeGenerator:
# to the getter are valid as long as they're freed
#
if free_container:
- self.c.write(' value = g_datalist_get_data (&proxy->priv->qdata, \"%s\");\n'
- ' if (value != NULL)\n'
- ' return value;\n'
- %(p.name))
- self.c.write(' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy),
\"%s\");\n'%(p.name))
+ self.outfile.write(' value = g_datalist_get_data (&proxy->priv->qdata, \"%s\");\n'
+ ' if (value != NULL)\n'
+ ' return value;\n'
+ %(p.name))
+ self.outfile.write(' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy),
\"%s\");\n'%(p.name))
if p.arg.gtype == 'G_TYPE_VARIANT':
- self.c.write(' value = variant;\n')
- self.c.write(' if (variant != NULL)\n')
- self.c.write(' g_variant_unref (variant);\n')
+ self.outfile.write(' value = variant;\n')
+ self.outfile.write(' if (variant != NULL)\n')
+ self.outfile.write(' g_variant_unref (variant);\n')
else:
- self.c.write(' if (variant != NULL)\n'
- ' {\n')
+ self.outfile.write(' if (variant != NULL)\n'
+ ' {\n')
extra_len = ''
if p.arg.gvariant_get == 'g_variant_get_string' or p.arg.gvariant_get ==
'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objv' or p.arg.gvariant_get ==
'g_variant_get_bytestring_array':
extra_len = ', NULL'
- self.c.write(' value = %s (variant%s);\n'%(p.arg.gvariant_get, extra_len))
+ self.outfile.write(' value = %s (variant%s);\n'%(p.arg.gvariant_get, extra_len))
if free_container:
- self.c.write(' g_datalist_set_data_full (&proxy->priv->qdata, \"%s\", (gpointer)
value, g_free);\n'
- %(p.name))
- self.c.write(' g_variant_unref (variant);\n')
- self.c.write(' }\n')
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write(' g_datalist_set_data_full (&proxy->priv->qdata, \"%s\",
(gpointer) value, g_free);\n'
+ %(p.name))
+ self.outfile.write(' g_variant_unref (variant);\n')
+ self.outfile.write(' }\n')
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%s_proxy_init (%sProxy *proxy)\n'
- '{\n'
- '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
- ' proxy->priv = %s_proxy_get_instance_private (proxy);\n'
- '#else\n'
- ' proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, %sTYPE_%s_PROXY,
%sProxyPrivate);\n'
- '#endif\n\n'
- ' g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), %s_interface_info ());\n'
- '}\n'
- '\n'
- %(i.name_lower, i.camel_name,
- i.name_lower,
- i.ns_upper, i.name_upper, i.camel_name,
- i.name_lower))
- self.c.write('static void\n'
- '%s_proxy_class_init (%sProxyClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class;\n'
- ' GDBusProxyClass *proxy_class;\n'
- '\n'
- ' gobject_class = G_OBJECT_CLASS (klass);\n'
- ' gobject_class->finalize = %s_proxy_finalize;\n'
- ' gobject_class->get_property = %s_proxy_get_property;\n'
- ' gobject_class->set_property = %s_proxy_set_property;\n'
- '\n'
- ' proxy_class = G_DBUS_PROXY_CLASS (klass);\n'
- ' proxy_class->g_signal = %s_proxy_g_signal;\n'
- ' proxy_class->g_properties_changed = %s_proxy_g_properties_changed;\n'
- '\n'%(i.name_lower, i.camel_name,
- i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_init (%sProxy *proxy)\n'
+ '{\n'
+ '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
+ ' proxy->priv = %s_proxy_get_instance_private (proxy);\n'
+ '#else\n'
+ ' proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, %sTYPE_%s_PROXY,
%sProxyPrivate);\n'
+ '#endif\n\n'
+ ' g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), %s_interface_info
());\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.camel_name,
+ i.name_lower,
+ i.ns_upper, i.name_upper, i.camel_name,
+ i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_class_init (%sProxyClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class;\n'
+ ' GDBusProxyClass *proxy_class;\n'
+ '\n'
+ ' gobject_class = G_OBJECT_CLASS (klass);\n'
+ ' gobject_class->finalize = %s_proxy_finalize;\n'
+ ' gobject_class->get_property = %s_proxy_get_property;\n'
+ ' gobject_class->set_property = %s_proxy_set_property;\n'
+ '\n'
+ ' proxy_class = G_DBUS_PROXY_CLASS (klass);\n'
+ ' proxy_class->g_signal = %s_proxy_g_signal;\n'
+ ' proxy_class->g_properties_changed = %s_proxy_g_properties_changed;\n'
+ '\n'%(i.name_lower, i.camel_name,
+ i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name_lower))
if len(i.properties) > 0:
- self.c.write(' %s_override_properties (gobject_class, 1);\n\n'%(i.name_lower))
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
- ' g_type_class_add_private (klass, sizeof (%sProxyPrivate));\n'
- '#endif\n'%(i.camel_name))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_proxy_iface_init (%sIface *iface)\n'
- '{\n'%(i.name_lower, i.camel_name))
+ self.outfile.write(' %s_override_properties (gobject_class, 1);\n\n'%(i.name_lower))
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
+ ' g_type_class_add_private (klass, sizeof (%sProxyPrivate));\n'
+ '#endif\n'%(i.camel_name))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_proxy_iface_init (%sIface *iface)\n'
+ '{\n'%(i.name_lower, i.camel_name))
for p in i.properties:
- self.c.write(' iface->get_%s = %s_proxy_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' iface->get_%s = %s_proxy_get_%s;\n'%(p.name_lower, i.name_lower,
p.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -1910,49 +1928,49 @@ class CodeGenerator:
' *\n'
' * See %s_proxy_new_sync() for the synchronous, blocking version of this constructor.\n'
%(i.name_lower, i.name, i.name_lower, i.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('void\n'
- '%s_proxy_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable,
callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path",
object_path, "g-interface-name", "%s", NULL);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.ns_upper, i.name_upper, i.name))
- self.c.write('/**\n'
- ' * %s_proxy_new_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%s_proxy_new().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %s_proxy_new().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if
@error is set.\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_proxy_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable,
callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path",
object_path, "g-interface-name", "%s", NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+ self.outfile.write('/**\n'
+ ' * %s_proxy_new_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%s_proxy_new().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %s_proxy_new().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or
%%NULL if @error is set.\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res,
error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_sync:\n'
' * @connection: A #GDBusConnection.\n'
@@ -1970,27 +1988,27 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if
@error is set.\n'
%(i.name_lower, i.name, i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags,
"g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper,
i.name_upper))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags,
"g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper,
i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_for_bus:\n'
' * @bus_type: A #GBusType.\n'
@@ -2008,49 +2026,49 @@ class CodeGenerator:
' *\n'
' * See %s_proxy_new_for_bus_sync() for the synchronous, blocking version of this
constructor.\n'
%(i.name_lower, i.name_lower, i.name_lower, i.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('void\n'
- '%s_proxy_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable,
callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path,
"g-interface-name", "%s", NULL);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.ns_upper, i.name_upper, i.name))
- self.c.write('/**\n'
- ' * %s_proxy_new_for_bus_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%s_proxy_new_for_bus().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %s_proxy_new_for_bus().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if
@error is set.\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_proxy_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable,
callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path,
"g-interface-name", "%s", NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+ self.outfile.write('/**\n'
+ ' * %s_proxy_new_for_bus_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%s_proxy_new_for_bus().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %s_proxy_new_for_bus().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or
%%NULL if @error is set.\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res,
error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_for_bus_sync:\n'
' * @bus_type: A #GBusType.\n'
@@ -2068,379 +2086,377 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if
@error is set.\n'
%(i.name_lower, i.name_lower, i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags,
"g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper,
i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags,
"g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper,
i.name_upper))
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
def generate_skeleton(self, i):
# class boilerplate
- self.c.write('/* ------------------------------------------------------------------------ */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------ */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sSkeleton:\n'
' *\n'
' * The #%sSkeleton structure contains only private data and should only be accessed using
the provided API.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sSkeletonClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sSkeleton.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
-
- self.c.write('struct _%sSkeletonPrivate\n'
- '{\n'
- ' GValue *properties;\n'
- ' GList *changed_properties;\n'
- ' GSource *changed_properties_idle_source;\n'
- ' GMainContext *context;\n'
- ' GMutex lock;\n'
- '};\n'
- '\n'%i.camel_name)
-
- self.c.write('static void\n'
- '_%s_skeleton_handle_method_call (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name,\n'
- ' const gchar *method_name,\n'
- ' GVariant *parameters,\n'
- ' GDBusMethodInvocation *invocation,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' _ExtendedGDBusMethodInfo *info;\n'
- ' GVariantIter iter;\n'
- ' GVariant *child;\n'
- ' GValue *paramv;\n'
- ' gsize num_params;\n'
- ' guint num_extra;\n'
- ' gsize n;\n'
- ' guint signal_id;\n'
- ' GValue return_value = G_VALUE_INIT;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info
(invocation);\n'
- ' g_assert (info != NULL);\n'
- %())
- self.c.write (' num_params = g_variant_n_children (parameters);\n'
- ' num_extra = info->pass_fdlist ? 3 : 2;'
- ' paramv = g_new0 (GValue, num_params + num_extra);\n'
- ' n = 0;\n'
- ' g_value_init (¶mv[n], %sTYPE_%s);\n'
- ' g_value_set_object (¶mv[n++], skeleton);\n'
- ' g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n'
- ' g_value_set_object (¶mv[n++], invocation);\n'
- ' if (info->pass_fdlist)\n'
- ' {\n'
- '#ifdef G_OS_UNIX\n'
- ' g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST);\n'
- ' g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list
(g_dbus_method_invocation_get_message (invocation)));\n'
- '#else\n'
- ' g_assert_not_reached ();\n'
- '#endif\n'
- ' }\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_variant_iter_init (&iter, parameters);\n'
- ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
- ' {\n'
- ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *)
info->parent_struct.in_args[n - num_extra];\n'
- ' if (arg_info->use_gvariant)\n'
- ' {\n'
- ' g_value_init (¶mv[n], G_TYPE_VARIANT);\n'
- ' g_value_set_variant (¶mv[n], child);\n'
- ' n++;\n'
- ' }\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (child, ¶mv[n++]);\n'
- ' g_variant_unref (child);\n'
- ' }\n'
- )
- self.c.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_value_init (&return_value, G_TYPE_BOOLEAN);\n'
- ' g_signal_emitv (paramv, signal_id, 0, &return_value);\n'
- ' if (!g_value_get_boolean (&return_value))\n'
- ' g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);\n'
- ' g_value_unset (&return_value);\n'
- )
- self.c.write(' for (n = 0; n < num_params + num_extra; n++)\n'
- ' g_value_unset (¶mv[n]);\n'
- ' g_free (paramv);\n')
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GVariant *\n'
- '_%s_skeleton_handle_get_property (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name G_GNUC_UNUSED,\n'
- ' const gchar *property_name,\n'
- ' GError **error,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' GValue value = G_VALUE_INIT;\n'
- ' GParamSpec *pspec;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *ret;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' ret = NULL;\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
- ' g_assert (info != NULL);\n'
- ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton),
info->hyphen_name);\n'
- ' if (pspec == NULL)\n'
- ' {\n'
- ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with
name %%s", property_name);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_value_init (&value, pspec->value_type);\n'
- ' g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
- ' ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE
(info->parent_struct.signature));\n'
- ' g_value_unset (&value);\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n'
- %(i.name_lower))
-
- self.c.write('static gboolean\n'
- '_%s_skeleton_handle_set_property (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name G_GNUC_UNUSED,\n'
- ' const gchar *property_name,\n'
- ' GVariant *variant,\n'
- ' GError **error,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' GValue value = G_VALUE_INIT;\n'
- ' GParamSpec *pspec;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' gboolean ret;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' ret = FALSE;\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
- ' g_assert (info != NULL);\n'
- ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton),
info->hyphen_name);\n'
- ' if (pspec == NULL)\n'
- ' {\n'
- ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with
name %%s", property_name);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' if (info->use_gvariant)\n'
- ' g_value_set_variant (&value, variant);\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (variant, &value);\n'
- ' g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
- ' g_value_unset (&value);\n'
- ' ret = TRUE;\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n'
- %(i.name_lower))
-
-
- self.c.write('static const GDBusInterfaceVTable _%s_skeleton_vtable =\n'
- '{\n'
- ' _%s_skeleton_handle_method_call,\n'
- ' _%s_skeleton_handle_get_property,\n'
- ' _%s_skeleton_handle_set_property,\n'
- ' {NULL}\n'
- '};\n'
- '\n'%(i.name_lower, i.name_lower, i.name_lower, i.name_lower))
-
- self.c.write('static GDBusInterfaceInfo *\n'
- '%s_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
- '{\n'
- ' return %s_interface_info ();\n'
- %(i.name_lower, i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GDBusInterfaceVTable *\n'
- '%s_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton
G_GNUC_UNUSED)\n'
- '{\n'
- ' return (GDBusInterfaceVTable *) &_%s_skeleton_vtable;\n'
- %(i.name_lower, i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GVariant *\n'
- '%s_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write('\n'
- ' GVariantBuilder builder;\n'
- ' guint n;\n'
- ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
- ' if (_%s_interface_info.parent_struct.properties == NULL)\n'
- ' goto out;\n'
- ' for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n'
- ' {\n'
- ' GDBusPropertyInfo *info = _%s_interface_info.parent_struct.properties[n];\n'
- ' if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)\n'
- ' {\n'
- ' GVariant *value;\n'
- ' value = _%s_skeleton_handle_get_property
(g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL,
g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", info->name, NULL,
skeleton);\n'
- ' if (value != NULL)\n'
- ' {\n'
- ' g_variant_take_ref (value);\n'
- ' g_variant_builder_add (&builder, "{sv}", info->name, value);\n'
- ' g_variant_unref (value);\n'
- ' }\n'
- ' }\n'
- ' }\n'
- 'out:\n'
- ' return g_variant_builder_end (&builder);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
+
+ self.outfile.write('struct _%sSkeletonPrivate\n'
+ '{\n'
+ ' GValue *properties;\n'
+ ' GList *changed_properties;\n'
+ ' GSource *changed_properties_idle_source;\n'
+ ' GMainContext *context;\n'
+ ' GMutex lock;\n'
+ '};\n'
+ '\n'%i.camel_name)
+
+ self.outfile.write('static void\n'
+ '_%s_skeleton_handle_method_call (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name,\n'
+ ' const gchar *method_name,\n'
+ ' GVariant *parameters,\n'
+ ' GDBusMethodInvocation *invocation,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' _ExtendedGDBusMethodInfo *info;\n'
+ ' GVariantIter iter;\n'
+ ' GVariant *child;\n'
+ ' GValue *paramv;\n'
+ ' gsize num_params;\n'
+ ' guint num_extra;\n'
+ ' gsize n;\n'
+ ' guint signal_id;\n'
+ ' GValue return_value = G_VALUE_INIT;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info
(invocation);\n'
+ ' g_assert (info != NULL);\n'
+ %())
+ self.outfile.write(' num_params = g_variant_n_children (parameters);\n'
+ ' num_extra = info->pass_fdlist ? 3 : 2;'
+ ' paramv = g_new0 (GValue, num_params + num_extra);\n'
+ ' n = 0;\n'
+ ' g_value_init (¶mv[n], %sTYPE_%s);\n'
+ ' g_value_set_object (¶mv[n++], skeleton);\n'
+ ' g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n'
+ ' g_value_set_object (¶mv[n++], invocation);\n'
+ ' if (info->pass_fdlist)\n'
+ ' {\n'
+ '#ifdef G_OS_UNIX\n'
+ ' g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST);\n'
+ ' g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list
(g_dbus_method_invocation_get_message (invocation)));\n'
+ '#else\n'
+ ' g_assert_not_reached ();\n'
+ '#endif\n'
+ ' }\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_variant_iter_init (&iter, parameters);\n'
+ ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+ ' {\n'
+ ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *)
info->parent_struct.in_args[n - num_extra];\n'
+ ' if (arg_info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_init (¶mv[n], G_TYPE_VARIANT);\n'
+ ' g_value_set_variant (¶mv[n], child);\n'
+ ' n++;\n'
+ ' }\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (child, ¶mv[n++]);\n'
+ ' g_variant_unref (child);\n'
+ ' }\n')
+ self.outfile.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_value_init (&return_value, G_TYPE_BOOLEAN);\n'
+ ' g_signal_emitv (paramv, signal_id, 0, &return_value);\n'
+ ' if (!g_value_get_boolean (&return_value))\n'
+ ' g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);\n'
+ ' g_value_unset (&return_value);\n')
+ self.outfile.write(' for (n = 0; n < num_params + num_extra; n++)\n'
+ ' g_value_unset (¶mv[n]);\n'
+ ' g_free (paramv);\n')
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GVariant *\n'
+ '_%s_skeleton_handle_get_property (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name G_GNUC_UNUSED,\n'
+ ' const gchar *property_name,\n'
+ ' GError **error,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' GValue value = G_VALUE_INIT;\n'
+ ' GParamSpec *pspec;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *ret;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' ret = NULL;\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+ ' g_assert (info != NULL);\n'
+ ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton),
info->hyphen_name);\n'
+ ' if (pspec == NULL)\n'
+ ' {\n'
+ ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property
with name %%s", property_name);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_value_init (&value, pspec->value_type);\n'
+ ' g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+ ' ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE
(info->parent_struct.signature));\n'
+ ' g_value_unset (&value);\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n'
+ %(i.name_lower))
+
+ self.outfile.write('static gboolean\n'
+ '_%s_skeleton_handle_set_property (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name G_GNUC_UNUSED,\n'
+ ' const gchar *property_name,\n'
+ ' GVariant *variant,\n'
+ ' GError **error,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' GValue value = G_VALUE_INIT;\n'
+ ' GParamSpec *pspec;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' gboolean ret;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' ret = FALSE;\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property
((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+ ' g_assert (info != NULL);\n'
+ ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton),
info->hyphen_name);\n'
+ ' if (pspec == NULL)\n'
+ ' {\n'
+ ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property
with name %%s", property_name);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' if (info->use_gvariant)\n'
+ ' g_value_set_variant (&value, variant);\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (variant, &value);\n'
+ ' g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+ ' g_value_unset (&value);\n'
+ ' ret = TRUE;\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n'
+ %(i.name_lower))
+
+
+ self.outfile.write('static const GDBusInterfaceVTable _%s_skeleton_vtable =\n'
+ '{\n'
+ ' _%s_skeleton_handle_method_call,\n'
+ ' _%s_skeleton_handle_get_property,\n'
+ ' _%s_skeleton_handle_set_property,\n'
+ ' {NULL}\n'
+ '};\n'
+ '\n'%(i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+
+ self.outfile.write('static GDBusInterfaceInfo *\n'
+ '%s_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton
G_GNUC_UNUSED)\n'
+ '{\n'
+ ' return %s_interface_info ();\n'
+ %(i.name_lower, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GDBusInterfaceVTable *\n'
+ '%s_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton
G_GNUC_UNUSED)\n'
+ '{\n'
+ ' return (GDBusInterfaceVTable *) &_%s_skeleton_vtable;\n'
+ %(i.name_lower, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GVariant *\n'
+ '%s_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n'
+ ' GVariantBuilder builder;\n'
+ ' guint n;\n'
+ ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+ ' if (_%s_interface_info.parent_struct.properties == NULL)\n'
+ ' goto out;\n'
+ ' for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n'
+ ' {\n'
+ ' GDBusPropertyInfo *info =
_%s_interface_info.parent_struct.properties[n];\n'
+ ' if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)\n'
+ ' {\n'
+ ' GVariant *value;\n'
+ ' value = _%s_skeleton_handle_get_property
(g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL,
g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", info->name, NULL,
skeleton);\n'
+ ' if (value != NULL)\n'
+ ' {\n'
+ ' g_variant_take_ref (value);\n'
+ ' g_variant_builder_add (&builder, "{sv}", info->name, value);\n'
+ ' g_variant_unref (value);\n'
+ ' }\n'
+ ' }\n'
+ ' }\n'
+ 'out:\n'
+ ' return g_variant_builder_end (&builder);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name))
if len(i.properties) > 0:
- self.c.write('static gboolean _%s_emit_changed (gpointer user_data);\n'
- '\n'
- %(i.name_lower))
-
- self.c.write('static void\n'
- '%s_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)\n'
- '{\n'
- %(i.name_lower))
+ self.outfile.write('static gboolean _%s_emit_changed (gpointer user_data);\n'
+ '\n'
+ %(i.name_lower))
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)\n'
+ '{\n'
+ %(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
- ' gboolean emit_changed = FALSE;\n'
- '\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' if (skeleton->priv->changed_properties_idle_source != NULL)\n'
- ' {\n'
- ' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n'
- ' skeleton->priv->changed_properties_idle_source = NULL;\n'
- ' emit_changed = TRUE;\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- '\n'
- ' if (emit_changed)\n'
- ' _%s_emit_changed (skeleton);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+ ' gboolean emit_changed = FALSE;\n'
+ '\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' if (skeleton->priv->changed_properties_idle_source != NULL)\n'
+ ' {\n'
+ ' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n'
+ ' skeleton->priv->changed_properties_idle_source = NULL;\n'
+ ' emit_changed = TRUE;\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ '\n'
+ ' if (emit_changed)\n'
+ ' _%s_emit_changed (skeleton);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
for s in i.signals:
- self.c.write('static void\n'
- '_%s_on_signal_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.outfile.write('static void\n'
+ '_%s_on_signal_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n\n'
- ' GList *connections, *l;\n'
- ' GVariant *signal_variant;\n'
- ' connections = g_dbus_interface_skeleton_get_connections
(G_DBUS_INTERFACE_SKELETON (skeleton));\n'
- %(i.camel_name, i.ns_upper, i.name_upper))
- self.c.write('\n'
- ' signal_variant = g_variant_ref_sink (g_variant_new ("(')
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n\n'
+ ' GList *connections, *l;\n'
+ ' GVariant *signal_variant;\n'
+ ' connections = g_dbus_interface_skeleton_get_connections
(G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+ %(i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n'
+ ' signal_variant = g_variant_ref_sink (g_variant_new ("(')
for a in s.args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in s.args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('));\n')
-
- self.c.write(' for (l = connections; l != NULL; l = l->next)\n'
- ' {\n'
- ' GDBusConnection *connection = l->data;\n'
- ' g_dbus_connection_emit_signal (connection,\n'
- ' NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON
(skeleton)), "%s", "%s",\n'
- ' signal_variant, NULL);\n'
- ' }\n'
- %(i.name, s.name))
- self.c.write(' g_variant_unref (signal_variant);\n')
- self.c.write(' g_list_free_full (connections, g_object_unref);\n')
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void %s_skeleton_iface_init (%sIface *iface);\n'
- %(i.name_lower, i.camel_name))
-
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton,
G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_ADD_PRIVATE (%sSkeleton)\n'%(i.camel_name))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#else\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton,
G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#endif\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('));\n')
+
+ self.outfile.write(' for (l = connections; l != NULL; l = l->next)\n'
+ ' {\n'
+ ' GDBusConnection *connection = l->data;\n'
+ ' g_dbus_connection_emit_signal (connection,\n'
+ ' NULL, g_dbus_interface_skeleton_get_object_path
(G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", "%s",\n'
+ ' signal_variant, NULL);\n'
+ ' }\n'
+ %(i.name, s.name))
+ self.outfile.write(' g_variant_unref (signal_variant);\n')
+ self.outfile.write(' g_list_free_full (connections, g_object_unref);\n')
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void %s_skeleton_iface_init (%sIface *iface);\n'
+ %(i.name_lower, i.camel_name))
+
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton,
G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_ADD_PRIVATE (%sSkeleton)\n'%(i.camel_name))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#else\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton,
G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s,
%s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#endif\n')
# finalize
- self.c.write('static void\n'
- '%s_skeleton_finalize (GObject *object)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper,
i.name_upper))
+ self.outfile.write('static void\n'
+ '%s_skeleton_finalize (GObject *object)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper,
i.name_upper))
if len(i.properties) > 0:
- self.c.write(' guint n;\n'
- ' for (n = 0; n < %d; n++)\n'
- ' g_value_unset (&skeleton->priv->properties[n]);\n'%(len(i.properties)))
- self.c.write(' g_free (skeleton->priv->properties);\n')
- self.c.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify)
_changed_property_free);\n')
- self.c.write(' if (skeleton->priv->changed_properties_idle_source != NULL)\n')
- self.c.write(' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n')
- self.c.write(' g_main_context_unref (skeleton->priv->context);\n')
- self.c.write(' g_mutex_clear (&skeleton->priv->lock);\n')
- self.c.write(' G_OBJECT_CLASS (%s_skeleton_parent_class)->finalize (object);\n'
- '}\n'
- '\n'%(i.name_lower))
+ self.outfile.write(' guint n;\n'
+ ' for (n = 0; n < %d; n++)\n'
+ ' g_value_unset (&skeleton->priv->properties[n]);\n'%(len(i.properties)))
+ self.outfile.write(' g_free (skeleton->priv->properties);\n')
+ self.outfile.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify)
_changed_property_free);\n')
+ self.outfile.write(' if (skeleton->priv->changed_properties_idle_source != NULL)\n')
+ self.outfile.write(' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n')
+ self.outfile.write(' g_main_context_unref (skeleton->priv->context);\n')
+ self.outfile.write(' g_mutex_clear (&skeleton->priv->lock);\n')
+ self.outfile.write(' G_OBJECT_CLASS (%s_skeleton_parent_class)->finalize (object);\n'
+ '}\n'
+ '\n'%(i.name_lower))
# property accessors (TODO: generate PropertiesChanged signals in setter)
if len(i.properties) > 0:
- self.c.write('static void\n'
- '%s_skeleton_get_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_value_copy (&skeleton->priv->properties[prop_id - 1], value);\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties)))
- self.c.write('}\n'
- '\n')
+ self.outfile.write('static void\n'
+ '%s_skeleton_get_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_value_copy (&skeleton->priv->properties[prop_id - 1], value);\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties)))
+ self.outfile.write('}\n'
+ '\n')
# if property is already scheduled then re-use entry.. though it could be
# that the user did
@@ -2454,232 +2470,232 @@ class CodeGenerator:
# change event. If the latest value is not different from the original
# one, we can simply ignore the ChangedProperty
#
- self.c.write('static gboolean\n'
- '_%s_emit_changed (gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' GList *l;\n'
- ' GVariantBuilder builder;\n'
- ' GVariantBuilder invalidated_builder;\n'
- ' guint num_changes;\n'
- '\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
- ' g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
- ' for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l =
l->next)\n'
- ' {\n'
- ' ChangedProperty *cp = l->data;\n'
- ' GVariant *variant;\n'
- ' const GValue *cur_value;\n'
- '\n'
- ' cur_value = &skeleton->priv->properties[cp->prop_id - 1];\n'
- ' if (!_g_value_equal (cur_value, &cp->orig_value))\n'
- ' {\n'
- ' variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE
(cp->info->parent_struct.signature));\n'
- ' g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name,
variant);\n'
- ' g_variant_unref (variant);\n'
- ' num_changes++;\n'
- ' }\n'
- ' }\n'
- ' if (num_changes > 0)\n'
- ' {\n'
- ' GList *connections, *ll;\n'
- ' GVariant *signal_variant;'
- '\n'
- ' signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "%s",\n'
- ' &builder, &invalidated_builder));\n'
- ' connections = g_dbus_interface_skeleton_get_connections
(G_DBUS_INTERFACE_SKELETON (skeleton));\n'
- ' for (ll = connections; ll != NULL; ll = ll->next)\n'
- ' {\n'
- ' GDBusConnection *connection = ll->data;\n'
- '\n'
- ' g_dbus_connection_emit_signal (connection,\n'
- ' NULL,
g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),\n'
- ' "org.freedesktop.DBus.Properties",\n'
- ' "PropertiesChanged",\n'
- ' signal_variant,\n'
- ' NULL);\n'
- ' }\n'
- ' g_variant_unref (signal_variant);\n'
- ' g_list_free_full (connections, g_object_unref);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_variant_builder_clear (&builder);\n'
- ' g_variant_builder_clear (&invalidated_builder);\n'
- ' }\n'
- %(i.name))
- self.c.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify)
_changed_property_free);\n')
- self.c.write(' skeleton->priv->changed_properties = NULL;\n')
- self.c.write(' skeleton->priv->changed_properties_idle_source = NULL;\n')
- self.c.write(' g_mutex_unlock (&skeleton->priv->lock);\n')
- self.c.write(' return FALSE;\n'
- '}\n'
- '\n')
+ self.outfile.write('static gboolean\n'
+ '_%s_emit_changed (gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' GList *l;\n'
+ ' GVariantBuilder builder;\n'
+ ' GVariantBuilder invalidated_builder;\n'
+ ' guint num_changes;\n'
+ '\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+ ' g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
+ ' for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l
= l->next)\n'
+ ' {\n'
+ ' ChangedProperty *cp = l->data;\n'
+ ' GVariant *variant;\n'
+ ' const GValue *cur_value;\n'
+ '\n'
+ ' cur_value = &skeleton->priv->properties[cp->prop_id - 1];\n'
+ ' if (!_g_value_equal (cur_value, &cp->orig_value))\n'
+ ' {\n'
+ ' variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE
(cp->info->parent_struct.signature));\n'
+ ' g_variant_builder_add (&builder, "{sv}",
cp->info->parent_struct.name, variant);\n'
+ ' g_variant_unref (variant);\n'
+ ' num_changes++;\n'
+ ' }\n'
+ ' }\n'
+ ' if (num_changes > 0)\n'
+ ' {\n'
+ ' GList *connections, *ll;\n'
+ ' GVariant *signal_variant;'
+ '\n'
+ ' signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)",
"%s",\n'
+ ' &builder,
&invalidated_builder));\n'
+ ' connections = g_dbus_interface_skeleton_get_connections
(G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+ ' for (ll = connections; ll != NULL; ll = ll->next)\n'
+ ' {\n'
+ ' GDBusConnection *connection = ll->data;\n'
+ '\n'
+ ' g_dbus_connection_emit_signal (connection,\n'
+ ' NULL,
g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),\n'
+ '
"org.freedesktop.DBus.Properties",\n'
+ ' "PropertiesChanged",\n'
+ ' signal_variant,\n'
+ ' NULL);\n'
+ ' }\n'
+ ' g_variant_unref (signal_variant);\n'
+ ' g_list_free_full (connections, g_object_unref);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_variant_builder_clear (&builder);\n'
+ ' g_variant_builder_clear (&invalidated_builder);\n'
+ ' }\n'
+ %(i.name))
+ self.outfile.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify)
_changed_property_free);\n')
+ self.outfile.write(' skeleton->priv->changed_properties = NULL;\n')
+ self.outfile.write(' skeleton->priv->changed_properties_idle_source = NULL;\n')
+ self.outfile.write(' g_mutex_unlock (&skeleton->priv->lock);\n')
+ self.outfile.write(' return FALSE;\n'
+ '}\n'
+ '\n')
# holding lock while being called
- self.c.write('static void\n'
- '_%s_schedule_emit_changed (%sSkeleton *skeleton, const _ExtendedGDBusPropertyInfo
*info, guint prop_id, const GValue *orig_value)\n'
- '{\n'
- ' ChangedProperty *cp;\n'
- ' GList *l;\n'
- ' cp = NULL;\n'
- ' for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)\n'
- ' {\n'
- ' ChangedProperty *i_cp = l->data;\n'
- ' if (i_cp->info == info)\n'
- ' {\n'
- ' cp = i_cp;\n'
- ' break;\n'
- ' }\n'
- ' }\n'
- %(i.name_lower, i.camel_name))
- self.c.write(' if (cp == NULL)\n'
- ' {\n'
- ' cp = g_new0 (ChangedProperty, 1);\n'
- ' cp->prop_id = prop_id;\n'
- ' cp->info = info;\n'
- ' skeleton->priv->changed_properties = g_list_prepend
(skeleton->priv->changed_properties, cp);\n'
- ' g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));\n'
- ' g_value_copy (orig_value, &cp->orig_value);\n'
- ' }\n'
- '}\n'
- '\n'
- %())
+ self.outfile.write('static void\n'
+ '_%s_schedule_emit_changed (%sSkeleton *skeleton, const
_ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)\n'
+ '{\n'
+ ' ChangedProperty *cp;\n'
+ ' GList *l;\n'
+ ' cp = NULL;\n'
+ ' for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)\n'
+ ' {\n'
+ ' ChangedProperty *i_cp = l->data;\n'
+ ' if (i_cp->info == info)\n'
+ ' {\n'
+ ' cp = i_cp;\n'
+ ' break;\n'
+ ' }\n'
+ ' }\n'
+ %(i.name_lower, i.camel_name))
+ self.outfile.write(' if (cp == NULL)\n'
+ ' {\n'
+ ' cp = g_new0 (ChangedProperty, 1);\n'
+ ' cp->prop_id = prop_id;\n'
+ ' cp->info = info;\n'
+ ' skeleton->priv->changed_properties = g_list_prepend
(skeleton->priv->changed_properties, cp);\n'
+ ' g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));\n'
+ ' g_value_copy (orig_value, &cp->orig_value);\n'
+ ' }\n'
+ '}\n'
+ '\n'
+ %())
# Postpone setting up the refresh source until the ::notify signal is emitted as
# this allows use of g_object_freeze_notify()/g_object_thaw_notify() ...
# This is useful when updating several properties from another thread than
# where the idle will be emitted from
- self.c.write('static void\n'
- '%s_skeleton_notify (GObject *object,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' if (skeleton->priv->changed_properties != NULL &&\n'
- ' skeleton->priv->changed_properties_idle_source == NULL)\n'
- ' {\n'
- ' skeleton->priv->changed_properties_idle_source = g_idle_source_new ();\n'
- ' g_source_set_priority (skeleton->priv->changed_properties_idle_source,
G_PRIORITY_DEFAULT);\n'
- ' g_source_set_callback (skeleton->priv->changed_properties_idle_source,
_%s_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);\n'
- ' g_source_set_name (skeleton->priv->changed_properties_idle_source,
"[generated] _%s_emit_changed");\n'
- ' g_source_attach (skeleton->priv->changed_properties_idle_source,
skeleton->priv->context);\n'
- ' g_source_unref (skeleton->priv->changed_properties_idle_source);\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper, i.name_lower, i.name_lower))
-
- self.c.write('static void\n'
- '%s_skeleton_set_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_object_freeze_notify (object);\n'
- ' if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))\n'
- ' {\n'
- ' if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON
(skeleton)) != NULL)\n'
- ' _%s_schedule_emit_changed (skeleton, _%s_property_info_pointers[prop_id -
1], prop_id, &skeleton->priv->properties[prop_id - 1]);\n'
- ' g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);\n'
- ' g_object_notify_by_pspec (object, pspec);\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- ' g_object_thaw_notify (object);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties), i.name_lower,
i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_skeleton_init (%sSkeleton *skeleton)\n'
- '{\n'
- '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
- ' skeleton->priv = %s_skeleton_get_instance_private (skeleton);\n'
- '#else\n'
- ' skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, %sTYPE_%s_SKELETON,
%sSkeletonPrivate);\n'
- '#endif\n\n'
- %(i.name_lower, i.camel_name,
- i.name_lower,
- i.ns_upper, i.name_upper, i.camel_name))
- self.c.write(' g_mutex_init (&skeleton->priv->lock);\n')
- self.c.write(' skeleton->priv->context = g_main_context_ref_thread_default ();\n')
+ self.outfile.write('static void\n'
+ '%s_skeleton_notify (GObject *object,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' if (skeleton->priv->changed_properties != NULL &&\n'
+ ' skeleton->priv->changed_properties_idle_source == NULL)\n'
+ ' {\n'
+ ' skeleton->priv->changed_properties_idle_source = g_idle_source_new
();\n'
+ ' g_source_set_priority (skeleton->priv->changed_properties_idle_source,
G_PRIORITY_DEFAULT);\n'
+ ' g_source_set_callback (skeleton->priv->changed_properties_idle_source,
_%s_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);\n'
+ ' g_source_set_name (skeleton->priv->changed_properties_idle_source,
"[generated] _%s_emit_changed");\n'
+ ' g_source_attach (skeleton->priv->changed_properties_idle_source,
skeleton->priv->context);\n'
+ ' g_source_unref (skeleton->priv->changed_properties_idle_source);\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper, i.name_lower,
i.name_lower))
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_set_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_object_freeze_notify (object);\n'
+ ' if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))\n'
+ ' {\n'
+ ' if (g_dbus_interface_skeleton_get_connection
(G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)\n'
+ ' _%s_schedule_emit_changed (skeleton,
_%s_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);\n'
+ ' g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);\n'
+ ' g_object_notify_by_pspec (object, pspec);\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ ' g_object_thaw_notify (object);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties), i.name_lower,
i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_init (%sSkeleton *skeleton)\n'
+ '{\n'
+ '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
+ ' skeleton->priv = %s_skeleton_get_instance_private (skeleton);\n'
+ '#else\n'
+ ' skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, %sTYPE_%s_SKELETON,
%sSkeletonPrivate);\n'
+ '#endif\n\n'
+ %(i.name_lower, i.camel_name,
+ i.name_lower,
+ i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write(' g_mutex_init (&skeleton->priv->lock);\n')
+ self.outfile.write(' skeleton->priv->context = g_main_context_ref_thread_default ();\n')
if len(i.properties) > 0:
- self.c.write(' skeleton->priv->properties = g_new0 (GValue, %d);\n'%(len(i.properties)))
+ self.outfile.write(' skeleton->priv->properties = g_new0 (GValue, %d);\n'%(len(i.properties)))
n = 0
for p in i.properties:
- self.c.write(' g_value_init (&skeleton->priv->properties[%d], %s);\n'%(n, p.arg.gtype))
+ self.outfile.write(' g_value_init (&skeleton->priv->properties[%d], %s);\n'%(n,
p.arg.gtype))
n += 1
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
# property vfuncs
n = 0
for p in i.properties:
- self.c.write('static %s\n'
- '%s_skeleton_get_%s (%s *object)\n'
- '{\n'
- %(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper,
i.name_upper))
- self.c.write(' %svalue;\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' value = %s (&(skeleton->priv->properties[%d]));\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- %(p.arg.ctype_in_g, p.arg.gvalue_get, n))
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write('static %s\n'
+ '%s_skeleton_get_%s (%s *object)\n'
+ '{\n'
+ %(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name,
i.ns_upper, i.name_upper))
+ self.outfile.write(' %svalue;\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' value = %s (&(skeleton->priv->properties[%d]));\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ %(p.arg.ctype_in_g, p.arg.gvalue_get, n))
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
n += 1
- self.c.write('static void\n'
- '%s_skeleton_class_init (%sSkeletonClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class;\n'
- ' GDBusInterfaceSkeletonClass *skeleton_class;\n'
- '\n'
- ' gobject_class = G_OBJECT_CLASS (klass);\n'
- ' gobject_class->finalize = %s_skeleton_finalize;\n'
- %(i.name_lower, i.camel_name, i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_skeleton_class_init (%sSkeletonClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class;\n'
+ ' GDBusInterfaceSkeletonClass *skeleton_class;\n'
+ '\n'
+ ' gobject_class = G_OBJECT_CLASS (klass);\n'
+ ' gobject_class->finalize = %s_skeleton_finalize;\n'
+ %(i.name_lower, i.camel_name, i.name_lower))
if len(i.properties) > 0:
- self.c.write(' gobject_class->get_property = %s_skeleton_get_property;\n'
- ' gobject_class->set_property = %s_skeleton_set_property;\n'
- ' gobject_class->notify = %s_skeleton_notify;\n'
- '\n'%(i.name_lower, i.name_lower, i.name_lower))
- self.c.write('\n'
- ' %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
- self.c.write('\n'
- ' skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);\n');
- self.c.write(' skeleton_class->get_info = %s_skeleton_dbus_interface_get_info;\n'%(i.name_lower))
- self.c.write(' skeleton_class->get_properties =
%s_skeleton_dbus_interface_get_properties;\n'%(i.name_lower))
- self.c.write(' skeleton_class->flush = %s_skeleton_dbus_interface_flush;\n'%(i.name_lower))
- self.c.write(' skeleton_class->get_vtable =
%s_skeleton_dbus_interface_get_vtable;\n'%(i.name_lower))
-
- self.c.write('\n'
- '#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
- ' g_type_class_add_private (klass, sizeof (%sSkeletonPrivate));\n'
- '#endif\n'%(i.camel_name))
-
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_skeleton_iface_init (%sIface *iface)\n'
- '{\n'
- %(i.name_lower, i.camel_name))
+ self.outfile.write(' gobject_class->get_property = %s_skeleton_get_property;\n'
+ ' gobject_class->set_property = %s_skeleton_set_property;\n'
+ ' gobject_class->notify = %s_skeleton_notify;\n'
+ '\n'%(i.name_lower, i.name_lower, i.name_lower))
+ self.outfile.write('\n'
+ ' %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
+ self.outfile.write('\n'
+ ' skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);\n');
+ self.outfile.write(' skeleton_class->get_info =
%s_skeleton_dbus_interface_get_info;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->get_properties =
%s_skeleton_dbus_interface_get_properties;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->flush = %s_skeleton_dbus_interface_flush;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->get_vtable =
%s_skeleton_dbus_interface_get_vtable;\n'%(i.name_lower))
+
+ self.outfile.write('\n'
+ '#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
+ ' g_type_class_add_private (klass, sizeof (%sSkeletonPrivate));\n'
+ '#endif\n'%(i.camel_name))
+
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_iface_init (%sIface *iface)\n'
+ '{\n'
+ %(i.name_lower, i.camel_name))
for s in i.signals:
- self.c.write(' iface->%s = _%s_on_signal_%s;\n'
- %(s.name_lower, i.name_lower, s.name_lower))
+ self.outfile.write(' iface->%s = _%s_on_signal_%s;\n'
+ %(s.name_lower, i.name_lower, s.name_lower))
for p in i.properties:
- self.c.write(' iface->get_%s = %s_skeleton_get_%s;\n'%(p.name_lower, i.name_lower,
p.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' iface->get_%s = %s_skeleton_get_%s;\n'%(p.name_lower, i.name_lower,
p.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_skeleton_new:\n'
' *\n'
@@ -2687,24 +2703,24 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sSkeleton): The skeleton object.\n'
%(i.name_lower, i.name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_skeleton_new (void)\n'
- '{\n'
- ' return %s%s (g_object_new (%sTYPE_%s_SKELETON, NULL));\n'
- '}\n'
- '\n'%(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_skeleton_new (void)\n'
+ '{\n'
+ ' return %s%s (g_object_new (%sTYPE_%s_SKELETON, NULL));\n'
+ '}\n'
+ '\n'%(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.ns_upper,
i.name_upper))
# ---------------------------------------------------------------------------------------------------
def generate_object(self):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for Object, ObjectProxy and ObjectSkeleton\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for Object, ObjectProxy and ObjectSkeleton\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%sObject\n'
' * @title: %sObject\n'
@@ -2713,18 +2729,18 @@ class CodeGenerator:
' * This section contains the #%sObject, #%sObjectProxy, and #%sObjectSkeleton types which
make it easier to work with objects implementing generated types for D-Bus interfaces.\n'
' */\n'
%(self.namespace, self.namespace, self.namespace, self.namespace, self.namespace), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObject:\n'
' *\n'
' * The #%sObject type is a specialized container of interfaces.\n'
' */\n'
%(self.namespace, self.namespace), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectIface:\n'
' * @parent_iface: The parent interface.\n'
@@ -2732,17 +2748,17 @@ class CodeGenerator:
' * Virtual table for the #%sObject interface.\n'
' */\n'
%(self.namespace, self.namespace), False))
- self.c.write('\n')
-
- self.c.write('typedef %sObjectIface %sObjectInterface;\n'%(self.namespace, self.namespace))
- self.c.write('G_DEFINE_INTERFACE_WITH_CODE (%sObject, %sobject, G_TYPE_OBJECT,
g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);)\n'%(self.namespace, self.ns_lower))
- self.c.write('\n')
- self.c.write('static void\n'
- '%sobject_default_init (%sObjectIface *iface)\n'
- '{\n'
- %(self.ns_lower, self.namespace));
+ self.outfile.write('\n')
+
+ self.outfile.write('typedef %sObjectIface %sObjectInterface;\n'%(self.namespace, self.namespace))
+ self.outfile.write('G_DEFINE_INTERFACE_WITH_CODE (%sObject, %sobject, G_TYPE_OBJECT,
g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);)\n'%(self.namespace, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('static void\n'
+ '%sobject_default_init (%sObjectIface *iface)\n'
+ '{\n'
+ %(self.ns_lower, self.namespace));
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %sObject:%s:\n'
' *\n'
@@ -2750,15 +2766,15 @@ class CodeGenerator:
' *\n'
' * Connect to the #GObject::notify signal to get informed of property changes.\n'
%(self.namespace, i.name_hyphen, i.camel_name, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 2)
- self.c.write(' g_object_interface_install_property (iface, g_param_spec_object ("%s", "%s",
"%s", %sTYPE_%s, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));\n'
- '\n'
- %(i.name_hyphen, i.name_hyphen, i.name_hyphen, self.ns_upper, i.name_upper))
- self.c.write('}\n'
- '\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 2)
+ self.outfile.write(' g_object_interface_install_property (iface, g_param_spec_object ("%s",
"%s", "%s", %sTYPE_%s, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));\n'
+ '\n'
+ %(i.name_hyphen, i.name_hyphen, i.name_hyphen, self.ns_upper, i.name_upper))
+ self.outfile.write('}\n'
+ '\n')
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_get_%s:\n'
' * @object: A #%sObject.\n'
@@ -2767,21 +2783,21 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full): A #%s that must be freed with g_object_unref() or %%NULL
if @object does not implement the interface.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.name,
i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('%s *%sobject_get_%s (%sObject *object)\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.c.write('{\n'
- ' GDBusInterface *ret;\n'
- ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' if (ret == NULL)\n'
- ' return NULL;\n'
- ' return %s%s (ret);\n'
- '}\n'
- '\n'
- %(i.name, self.ns_upper, i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *%sobject_get_%s (%sObject *object)\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('{\n'
+ ' GDBusInterface *ret;\n'
+ ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' if (ret == NULL)\n'
+ ' return NULL;\n'
+ ' return %s%s (ret);\n'
+ '}\n'
+ '\n'
+ %(i.name, self.ns_upper, i.name_upper))
+ self.outfile.write('\n')
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_peek_%s: (skip)\n'
' * @object: A #%sObject.\n'
@@ -2792,134 +2808,134 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer none): A #%s or %%NULL if @object does not implement the
interface. Do not free the returned object, it is owned by @object.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, self.ns_lower,
i.name_upper.lower(), i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('%s *%sobject_peek_%s (%sObject *object)\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.c.write('{\n'
- ' GDBusInterface *ret;\n'
- ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' if (ret == NULL)\n'
- ' return NULL;\n'
- ' g_object_unref (ret);\n'
- ' return %s%s (ret);\n'
- '}\n'
- '\n'
- %(i.name, self.ns_upper, i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *%sobject_peek_%s (%sObject *object)\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('{\n'
+ ' GDBusInterface *ret;\n'
+ ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' if (ret == NULL)\n'
+ ' return NULL;\n'
+ ' g_object_unref (ret);\n'
+ ' return %s%s (ret);\n'
+ '}\n'
+ '\n'
+ %(i.name, self.ns_upper, i.name_upper))
+ self.outfile.write('\n')
# shared by ObjectProxy and ObjectSkeleton classes
- self.c.write('static void\n'
- '%sobject_notify (GDBusObject *object, GDBusInterface *interface)\n'
- '{\n'
- ' _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *)
g_dbus_interface_get_info (interface);\n'
- ' /* info can be NULL if the other end is using a D-Bus interface we don\'t know\n'
- ' * anything about, for example old generated code in this process talking to\n'
- ' * newer generated code in the other process. */\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (object), info->hyphen_name);\n'
- '}\n'
- '\n'
- %(self.ns_lower))
-
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('static void\n'
+ '%sobject_notify (GDBusObject *object, GDBusInterface *interface)\n'
+ '{\n'
+ ' _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *)
g_dbus_interface_get_info (interface);\n'
+ ' /* info can be NULL if the other end is using a D-Bus interface we don\'t
know\n'
+ ' * anything about, for example old generated code in this process talking to\n'
+ ' * newer generated code in the other process. */\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (object), info->hyphen_name);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectProxy:\n'
' *\n'
' * The #%sObjectProxy structure contains only private data and should only be accessed
using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectProxyClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectProxy.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%sobject_proxy__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
- '{\n'
- ' iface->interface_added = %sobject_notify;\n'
- ' iface->interface_removed = %sobject_notify;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower))
- self.c.write('\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectProxy, %sobject_proxy, G_TYPE_DBUS_OBJECT_PROXY,\n'
- ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT,
%sobject_proxy__%sobject_iface_init)\n'
- ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT,
%sobject_proxy__g_dbus_object_iface_init))\n'
- '\n'
- %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower,
self.ns_lower))
+ self.outfile.write('static void\n'
+ '%sobject_proxy__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+ '{\n'
+ ' iface->interface_added = %sobject_notify;\n'
+ ' iface->interface_removed = %sobject_notify;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sObjectProxy, %sobject_proxy,
G_TYPE_DBUS_OBJECT_PROXY,\n'
+ ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT,
%sobject_proxy__%sobject_iface_init)\n'
+ ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT,
%sobject_proxy__g_dbus_object_iface_init))\n'
+ '\n'
+ %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower,
self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_proxy_init (%sObjectProxy *object G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_proxy_set_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' const GValue *value G_GNUC_UNUSED,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- %(self.ns_lower))
- self.c.write('}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_proxy_get_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectProxy *object = %sOBJECT_PROXY (gobject);\n'
- ' GDBusInterface *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_proxy_init (%sObjectProxy *object G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_proxy_set_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value G_GNUC_UNUSED,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ %(self.ns_lower))
+ self.outfile.write('}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_proxy_get_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectProxy *object = %sOBJECT_PROXY (gobject);\n'
+ ' GDBusInterface *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' g_value_take_object (value, interface);\n'
- ' break;\n'
- '\n'
- %(n, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object),
"%s");\n'
+ ' g_value_take_object (value, interface);\n'
+ ' break;\n'
+ '\n'
+ %(n, i.name))
n += 1
- self.c.write(' default:\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- ' break;\n'
- ' }\n'
- '}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_proxy_class_init (%sObjectProxyClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
- '\n'
- ' gobject_class->set_property = %sobject_proxy_set_property;\n'
- ' gobject_class->get_property = %sobject_proxy_get_property;\n'
- '\n'
- %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+ self.outfile.write(' default:\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ ' break;\n'
+ ' }\n'
+ '}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_proxy_class_init (%sObjectProxyClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+ '\n'
+ ' gobject_class->set_property = %sobject_proxy_set_property;\n'
+ ' gobject_class->get_property = %sobject_proxy_get_property;\n'
+ '\n'
+ %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
n = 1
for i in self.ifaces:
- self.c.write(' g_object_class_override_property (gobject_class, %d, "%s");'
- '\n'
- %(n, i.name_hyphen))
+ self.outfile.write(' g_object_class_override_property (gobject_class, %d, "%s");'
+ '\n'
+ %(n, i.name_hyphen))
n += 1
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_proxy_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -2930,7 +2946,7 @@ class CodeGenerator:
' * Returns: (transfer full): The proxy object.\n'
' */\n'
%(self.ns_lower), False))
- self.c.write('%sObjectProxy *\n'
+ self.outfile.write('%sObjectProxy *\n'
'%sobject_proxy_new (GDBusConnection *connection,\n'
' const gchar *object_path)\n'
'{\n'
@@ -2940,130 +2956,130 @@ class CodeGenerator:
'}\n'
'\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectSkeleton:\n'
' *\n'
' * The #%sObjectSkeleton structure contains only private data and should only be accessed
using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectSkeletonClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectSkeleton.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%sobject_skeleton__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.namespace))
- self.c.write('\n')
- self.c.write('static void\n'
- '%sobject_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
- '{\n'
- ' iface->interface_added = %sobject_notify;\n'
- ' iface->interface_removed = %sobject_notify;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower))
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectSkeleton, %sobject_skeleton,
G_TYPE_DBUS_OBJECT_SKELETON,\n'
- ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT,
%sobject_skeleton__%sobject_iface_init)\n'
- ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT,
%sobject_skeleton__g_dbus_object_iface_init))\n'
- '\n'
- %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower,
self.ns_lower))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('static void\n'
+ '%sobject_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+ '{\n'
+ ' iface->interface_added = %sobject_notify;\n'
+ ' iface->interface_removed = %sobject_notify;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sObjectSkeleton, %sobject_skeleton,
G_TYPE_DBUS_OBJECT_SKELETON,\n'
+ ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT,
%sobject_skeleton__%sobject_iface_init)\n'
+ ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT,
%sobject_skeleton__g_dbus_object_iface_init))\n'
+ '\n'
+ %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower,
self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_skeleton_init (%sObjectSkeleton *object G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_skeleton_set_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
- ' GDBusInterfaceSkeleton *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_init (%sObjectSkeleton *object G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_set_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+ ' GDBusInterfaceSkeleton *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_value_get_object (value);\n'
- ' if (interface != NULL)\n'
- ' {\n'
- ' g_warn_if_fail (%sIS_%s (interface));\n'
- ' g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object),
interface);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON
(object), "%s");\n'
- ' }\n'
- ' break;\n'
- '\n'
- %(n, self.ns_upper, i.name_upper, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_value_get_object (value);\n'
+ ' if (interface != NULL)\n'
+ ' {\n'
+ ' g_warn_if_fail (%sIS_%s (interface));\n'
+ ' g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON
(object), interface);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_dbus_object_skeleton_remove_interface_by_name
(G_DBUS_OBJECT_SKELETON (object), "%s");\n'
+ ' }\n'
+ ' break;\n'
+ '\n'
+ %(n, self.ns_upper, i.name_upper, i.name))
n += 1
- self.c.write(' default:\n'
+ self.outfile.write(' default:\n'
' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
' break;\n'
' }\n'
'}\n'
'\n'%())
- self.c.write('static void\n'
- '%sobject_skeleton_get_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
- ' GDBusInterface *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_get_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+ ' GDBusInterface *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' g_value_take_object (value, interface);\n'
- ' break;\n'
- '\n'
- %(n, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object),
"%s");\n'
+ ' g_value_take_object (value, interface);\n'
+ ' break;\n'
+ '\n'
+ %(n, i.name))
n += 1
- self.c.write(' default:\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- ' break;\n'
- ' }\n'
- '}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_skeleton_class_init (%sObjectSkeletonClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
- '\n'
- ' gobject_class->set_property = %sobject_skeleton_set_property;\n'
- ' gobject_class->get_property = %sobject_skeleton_get_property;\n'
- '\n'
- %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+ self.outfile.write(' default:\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ ' break;\n'
+ ' }\n'
+ '}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_class_init (%sObjectSkeletonClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+ '\n'
+ ' gobject_class->set_property = %sobject_skeleton_set_property;\n'
+ ' gobject_class->get_property = %sobject_skeleton_get_property;\n'
+ '\n'
+ %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
n = 1
for i in self.ifaces:
- self.c.write(' g_object_class_override_property (gobject_class, %d, "%s");'
- '\n'
- %(n, i.name_hyphen))
+ self.outfile.write(' g_object_class_override_property (gobject_class, %d, "%s");'
+ '\n'
+ %(n, i.name_hyphen))
n += 1
- self.c.write('}\n'
- '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('}\n'
+ '\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_skeleton_new:\n'
' * @object_path: An object path.\n'
@@ -3073,15 +3089,15 @@ class CodeGenerator:
' * Returns: (transfer full): The skeleton object.\n'
' */\n'
%(self.ns_lower), False))
- self.c.write('%sObjectSkeleton *\n'
- '%sobject_skeleton_new (const gchar *object_path)\n'
- '{\n'
- ' g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
- ' return %sOBJECT_SKELETON (g_object_new (%sTYPE_OBJECT_SKELETON, "g-object-path",
object_path, NULL));\n'
- '}\n'
- '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
+ self.outfile.write('%sObjectSkeleton *\n'
+ '%sobject_skeleton_new (const gchar *object_path)\n'
+ '{\n'
+ ' g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
+ ' return %sOBJECT_SKELETON (g_object_new (%sTYPE_OBJECT_SKELETON,
"g-object-path", object_path, NULL));\n'
+ '}\n'
+ '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_skeleton_set_%s:\n'
' * @object: A #%sObjectSkeleton.\n'
@@ -3089,25 +3105,25 @@ class CodeGenerator:
' *\n'
' * Sets the #%s instance for the D-Bus interface #%s on @object.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.camel_name,
i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_)\n'
- %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
- self.c.write('{\n'
- ' g_object_set (G_OBJECT (object), "%s", interface_, NULL);\n'
- '}\n'
- '\n'
- %(i.name_hyphen))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_)\n'
+ %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+ self.outfile.write('{\n'
+ ' g_object_set (G_OBJECT (object), "%s", interface_, NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_hyphen))
+ self.outfile.write('\n')
def generate_object_manager_client(self):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for ObjectManager client\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for ObjectManager client\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%sObjectManagerClient\n'
' * @title: %sObjectManagerClient\n'
@@ -3116,45 +3132,45 @@ class CodeGenerator:
' * This section contains a #GDBusObjectManagerClient that uses
%sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.\n'
' */\n'
%(self.namespace, self.namespace, self.ns_lower), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectManagerClient:\n'
' *\n'
' * The #%sObjectManagerClient structure contains only private data and should only be
accessed using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectManagerClientClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectManagerClient.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('G_DEFINE_TYPE (%sObjectManagerClient, %sobject_manager_client,
G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)\n'
- '\n'
- %(self.namespace, self.ns_lower))
+ self.outfile.write('G_DEFINE_TYPE (%sObjectManagerClient, %sobject_manager_client,
G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)\n'
+ '\n'
+ %(self.namespace, self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_manager_client_init (%sObjectManagerClient *manager G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_manager_client_class_init (%sObjectManagerClientClass *klass G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
-
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('static void\n'
+ '%sobject_manager_client_init (%sObjectManagerClient *manager G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_manager_client_class_init (%sObjectManagerClientClass *klass
G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_get_proxy_type:\n'
' * @manager: A #GDBusObjectManagerClient.\n'
@@ -3166,35 +3182,35 @@ class CodeGenerator:
' *\n'
' * Returns: A #GDBusProxy derived #GType if @interface_name is not %%NULL, otherwise the
#GType for #%sObjectProxy.\n'
%(self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GType\n'
- '%sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager
G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data
G_GNUC_UNUSED)\n'
- '{\n'
- %(self.ns_lower))
- self.c.write(' static gsize once_init_value = 0;\n'
- ' static GHashTable *lookup_hash;\n'
- ' GType ret;\n'
- '\n'
- ' if (interface_name == NULL)\n'
- ' return %sTYPE_OBJECT_PROXY;\n'
- ' if (g_once_init_enter (&once_init_value))\n'
- ' {\n'
- ' lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);\n'
- %(self.ns_upper))
+ self.outfile.write(' */\n')
+ self.outfile.write('GType\n'
+ '%sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager
G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data
G_GNUC_UNUSED)\n'
+ '{\n'
+ %(self.ns_lower))
+ self.outfile.write(' static gsize once_init_value = 0;\n'
+ ' static GHashTable *lookup_hash;\n'
+ ' GType ret;\n'
+ '\n'
+ ' if (interface_name == NULL)\n'
+ ' return %sTYPE_OBJECT_PROXY;\n'
+ ' if (g_once_init_enter (&once_init_value))\n'
+ ' {\n'
+ ' lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);\n'
+ %(self.ns_upper))
for i in self.ifaces:
- self.c.write(' g_hash_table_insert (lookup_hash, (gpointer) "%s", GSIZE_TO_POINTER
(%sTYPE_%s_PROXY));\n'
- %(i.name, i.ns_upper, i.name_upper))
- self.c.write(' g_once_init_leave (&once_init_value, 1);\n'
- ' }\n')
- self.c.write(' ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash,
interface_name));\n'
- ' if (ret == (GType) 0)\n'
- ' ret = G_TYPE_DBUS_PROXY;\n')
- self.c.write(' return ret;\n'
- '}\n'
- '\n')
+ self.outfile.write(' g_hash_table_insert (lookup_hash, (gpointer) "%s", GSIZE_TO_POINTER
(%sTYPE_%s_PROXY));\n'
+ %(i.name, i.ns_upper, i.name_upper))
+ self.outfile.write(' g_once_init_leave (&once_init_value, 1);\n'
+ ' }\n')
+ self.outfile.write(' ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash,
interface_name));\n'
+ ' if (ret == (GType) 0)\n'
+ ' ret = G_TYPE_DBUS_PROXY;\n')
+ self.outfile.write(' return ret;\n'
+ '}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -3212,49 +3228,49 @@ class CodeGenerator:
' *\n'
' * See %sobject_manager_client_new_sync() for the synchronous, blocking version of this
constructor.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
- self.c.write(' */\n')
- self.c.write('void\n'
- '%sobject_manager_client_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT,
cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path",
object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('/**\n'
- ' * %sobject_manager_client_new_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%sobject_manager_client_new().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %sobject_manager_client_new().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object
manager client or %%NULL if @error is set.\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('void\n'
+ '%sobject_manager_client_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT,
cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path",
object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('/**\n'
+ ' * %sobject_manager_client_new_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%sobject_manager_client_new().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %sobject_manager_client_new().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object
manager client or %%NULL if @error is set.\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res,
error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_sync:\n'
' * @connection: A #GDBusConnection.\n'
@@ -3272,27 +3288,27 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager
client or %%NULL if @error is set.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags",
flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func",
%sobject_manager_client_get_proxy_type, NULL);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error,
"flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func",
%sobject_manager_client_get_proxy_type, NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_for_bus:\n'
' * @bus_type: A #GBusType.\n'
@@ -3310,49 +3326,49 @@ class CodeGenerator:
' *\n'
' * See %sobject_manager_client_new_for_bus_sync() for the synchronous, blocking version of
this constructor.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
- self.c.write(' */\n')
- self.c.write('void\n'
- '%sobject_manager_client_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT,
cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path",
object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('/**\n'
- ' * %sobject_manager_client_new_for_bus_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%sobject_manager_client_new_for_bus().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %sobject_manager_client_new_for_bus().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object
manager client or %%NULL if @error is set.\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('void\n'
+ '%sobject_manager_client_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT,
cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path",
object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('/**\n'
+ ' * %sobject_manager_client_new_for_bus_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
%sobject_manager_client_new_for_bus().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %sobject_manager_client_new_for_bus().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object
manager client or %%NULL if @error is set.\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res,
error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_for_bus_sync:\n'
' * @bus_type: A #GBusType.\n'
@@ -3370,26 +3386,26 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager
client or %%NULL if @error is set.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags",
flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func",
%sobject_manager_client_get_proxy_type, NULL);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error,
"flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func",
%sobject_manager_client_get_proxy_type, NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
@@ -3418,13 +3434,13 @@ class CodeGenerator:
# ---------------------------------------------------------------------------------------------------
def generate_interface_intro(self, i):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for interface %s\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n'%(i.name))
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for interface %s\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n'%(i.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%s\n'
' * @title: %s\n'
@@ -3433,13 +3449,9 @@ class CodeGenerator:
' * This section contains code for working with the #%s D-Bus interface in C.\n'
' */\n'
%(i.camel_name, i.camel_name, i.name, i.name), False))
- self.c.write('\n')
+ self.outfile.write('\n')
def generate(self):
- self.generate_header_preamble()
- self.declare_types()
- self.generate_header_postamble()
-
self.generate_body_preamble()
for i in self.ifaces:
self.generate_interface_intro(i)
diff --git a/gio/gdbus-2.0/codegen/codegen_main.py b/gio/gdbus-2.0/codegen/codegen_main.py
index 8f69c78..1fb749b 100755
--- a/gio/gdbus-2.0/codegen/codegen_main.py
+++ b/gio/gdbus-2.0/codegen/codegen_main.py
@@ -197,20 +197,24 @@ def codegen_main():
c_code = args.generate_c_code
if c_code:
header_name = c_code + '.h'
- h = open(path.join(outdir, header_name), 'w')
- c = open(path.join(outdir, c_code + '.c'), 'w')
- gen = codegen.CodeGenerator(all_ifaces,
- args.c_namespace,
- args.interface_prefix,
- args.c_generate_object_manager,
- args.c_generate_autocleanup,
- docbook_gen,
- h, c,
- header_name,
- args.pragma_once)
- ret = gen.generate()
- h.close()
- c.close()
+ with open(path.join(outdir, header_name), 'w') as outfile:
+ gen = codegen.HeaderCodeGenerator(all_ifaces,
+ args.c_namespace,
+ args.c_generate_object_manager,
+ args.c_generate_autocleanup,
+ header_name,
+ args.pragma_once,
+ outfile)
+ gen.generate()
+
+ with open(path.join(outdir, c_code + '.c'), 'w') as outfile:
+ gen = codegen.CodeGenerator(all_ifaces,
+ args.c_namespace,
+ args.c_generate_object_manager,
+ header_name,
+ docbook_gen,
+ outfile)
+ gen.generate()
sys.exit(0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]