gdbus-codegen: Decorate symbols in headers

This decorates the generated functions in the headers that are generated
by gdbus-codegen so that we may be able to export those symbols using
compiler directives, if needed, by overriding the definitions of the
decoration macros.
This commit is contained in:
Chun-wei Fan
2020-04-17 18:01:54 +08:00
parent acefe859e6
commit 5e93b9e598

View File

@@ -171,9 +171,12 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower)) self.outfile.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower)) self.outfile.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('guint %s_override_properties (GObjectClass *klass, guint property_id_begin);\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') self.outfile.write('\n')
@@ -182,6 +185,7 @@ class HeaderCodeGenerator:
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('/* D-Bus method call completion functions: */\n') self.outfile.write('/* D-Bus method call completion functions: */\n')
for m in i.methods: for m in i.methods:
self.outfile.write('_GLIB_EXTERN\n')
if m.deprecated: if m.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %s_complete_%s (\n' self.outfile.write('void %s_complete_%s (\n'
@@ -200,6 +204,7 @@ class HeaderCodeGenerator:
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('/* D-Bus signal emissions functions: */\n') self.outfile.write('/* D-Bus signal emissions functions: */\n')
for s in i.signals: for s in i.signals:
self.outfile.write('_GLIB_EXTERN\n')
if s.deprecated: if s.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %s_emit_%s (\n' self.outfile.write('void %s_emit_%s (\n'
@@ -216,6 +221,7 @@ class HeaderCodeGenerator:
self.outfile.write('/* D-Bus method calls: */\n') self.outfile.write('/* D-Bus method calls: */\n')
for m in i.methods: for m in i.methods:
# async begin # async begin
self.outfile.write('_GLIB_EXTERN\n')
if m.deprecated: if m.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %s_call_%s (\n' self.outfile.write('void %s_call_%s (\n'
@@ -233,6 +239,7 @@ class HeaderCodeGenerator:
' gpointer user_data);\n') ' gpointer user_data);\n')
self.outfile.write('\n') self.outfile.write('\n')
# async finish # async finish
self.outfile.write('_GLIB_EXTERN\n')
if m.deprecated: if m.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('gboolean %s_call_%s_finish (\n' self.outfile.write('gboolean %s_call_%s_finish (\n'
@@ -246,6 +253,7 @@ class HeaderCodeGenerator:
' GError **error);\n') ' GError **error);\n')
self.outfile.write('\n') self.outfile.write('\n')
# sync # sync
self.outfile.write('_GLIB_EXTERN\n')
if m.deprecated: if m.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('gboolean %s_call_%s_sync (\n' self.outfile.write('gboolean %s_call_%s_sync (\n'
@@ -273,14 +281,17 @@ class HeaderCodeGenerator:
self.outfile.write('/* D-Bus property accessors: */\n') self.outfile.write('/* D-Bus property accessors: */\n')
for p in i.properties: for p in i.properties:
# getter # getter
self.outfile.write('_GLIB_EXTERN\n')
if p.deprecated: if p.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') 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)) 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.arg.free_func != None:
self.outfile.write('_GLIB_EXTERN\n')
if p.deprecated: if p.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') 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)) 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 # setter
self.outfile.write('_GLIB_EXTERN\n')
if p.deprecated: if p.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') 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('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
@@ -313,6 +324,7 @@ class HeaderCodeGenerator:
self.outfile.write(' GDBusProxyClass parent_class;\n') self.outfile.write(' GDBusProxyClass parent_class;\n')
self.outfile.write('};\n') self.outfile.write('};\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower)) self.outfile.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
self.outfile.write('\n') self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'): if self.generate_autocleanup in ('objects', 'all'):
@@ -320,6 +332,7 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %s_proxy_new (\n' self.outfile.write('void %s_proxy_new (\n'
@@ -331,12 +344,14 @@ class HeaderCodeGenerator:
' GAsyncReadyCallback callback,\n' ' GAsyncReadyCallback callback,\n'
' gpointer user_data);\n' ' gpointer user_data);\n'
%(i.name_lower)) %(i.name_lower))
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%s_proxy_new_finish (\n' self.outfile.write('%s *%s_proxy_new_finish (\n'
' GAsyncResult *res,\n' ' GAsyncResult *res,\n'
' GError **error);\n' ' GError **error);\n'
%(i.camel_name, i.name_lower)) %(i.camel_name, i.name_lower))
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%s_proxy_new_sync (\n' self.outfile.write('%s *%s_proxy_new_sync (\n'
@@ -348,6 +363,7 @@ class HeaderCodeGenerator:
' GError **error);\n' ' GError **error);\n'
%(i.camel_name, i.name_lower)) %(i.camel_name, i.name_lower))
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %s_proxy_new_for_bus (\n' self.outfile.write('void %s_proxy_new_for_bus (\n'
@@ -359,12 +375,14 @@ class HeaderCodeGenerator:
' GAsyncReadyCallback callback,\n' ' GAsyncReadyCallback callback,\n'
' gpointer user_data);\n' ' gpointer user_data);\n'
%(i.name_lower)) %(i.name_lower))
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%s_proxy_new_for_bus_finish (\n' self.outfile.write('%s *%s_proxy_new_for_bus_finish (\n'
' GAsyncResult *res,\n' ' GAsyncResult *res,\n'
' GError **error);\n' ' GError **error);\n'
%(i.camel_name, i.name_lower)) %(i.camel_name, i.name_lower))
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%s_proxy_new_for_bus_sync (\n' self.outfile.write('%s *%s_proxy_new_for_bus_sync (\n'
@@ -404,6 +422,7 @@ class HeaderCodeGenerator:
self.outfile.write(' GDBusInterfaceSkeletonClass parent_class;\n') self.outfile.write(' GDBusInterfaceSkeletonClass parent_class;\n')
self.outfile.write('};\n') self.outfile.write('};\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower)) self.outfile.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
self.outfile.write('\n') self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'): if self.generate_autocleanup in ('objects', 'all'):
@@ -411,6 +430,7 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower)) self.outfile.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
@@ -436,6 +456,7 @@ class HeaderCodeGenerator:
' GTypeInterface parent_iface;\n' ' GTypeInterface parent_iface;\n'
'};\n' '};\n'
'\n') '\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %sobject_get_type (void) G_GNUC_CONST;\n' self.outfile.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
'\n' '\n'
%(self.ns_lower)) %(self.ns_lower))
@@ -445,11 +466,13 @@ class HeaderCodeGenerator:
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
for i in self.ifaces: for i in self.ifaces:
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%sobject_get_%s (%sObject *object);\n' self.outfile.write('%s *%sobject_get_%s (%sObject *object);\n'
%(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace)) %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
for i in self.ifaces: for i in self.ifaces:
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('%s *%sobject_peek_%s (%sObject *object);\n' self.outfile.write('%s *%sobject_peek_%s (%sObject *object);\n'
@@ -478,6 +501,7 @@ class HeaderCodeGenerator:
self.outfile.write(' GDBusObjectProxyClass parent_class;\n') self.outfile.write(' GDBusObjectProxyClass parent_class;\n')
self.outfile.write('};\n') self.outfile.write('};\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower)) self.outfile.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
self.outfile.write('\n') self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'): if self.generate_autocleanup in ('objects', 'all'):
@@ -485,6 +509,7 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' % (self.namespace)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' % (self.namespace))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar *object_path);\n'%(self.namespace, self.ns_lower)) 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('\n')
self.outfile.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper, self.ns_lower)) self.outfile.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper, self.ns_lower))
@@ -510,6 +535,7 @@ class HeaderCodeGenerator:
self.outfile.write(' GDBusObjectSkeletonClass parent_class;\n') self.outfile.write(' GDBusObjectSkeletonClass parent_class;\n')
self.outfile.write('};\n') self.outfile.write('};\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower)) self.outfile.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
self.outfile.write('\n') self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'): if self.generate_autocleanup in ('objects', 'all'):
@@ -517,9 +543,11 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' % (self.namespace)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' % (self.namespace))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n' self.outfile.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
%(self.namespace, self.ns_lower)) %(self.namespace, self.ns_lower))
for i in self.ifaces: for i in self.ifaces:
self.outfile.write('_GLIB_EXTERN\n')
if i.deprecated: if i.deprecated:
self.outfile.write('G_GNUC_DEPRECATED ') self.outfile.write('G_GNUC_DEPRECATED ')
self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n' self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n'
@@ -556,10 +584,13 @@ class HeaderCodeGenerator:
self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' % (self.namespace)) self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' % (self.namespace))
self.outfile.write('#endif\n') self.outfile.write('#endif\n')
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower)) self.outfile.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\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('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('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('void %sobject_manager_client_new (\n' self.outfile.write('void %sobject_manager_client_new (\n'
' GDBusConnection *connection,\n' ' GDBusConnection *connection,\n'
' GDBusObjectManagerClientFlags flags,\n' ' GDBusObjectManagerClientFlags flags,\n'
@@ -569,10 +600,12 @@ class HeaderCodeGenerator:
' GAsyncReadyCallback callback,\n' ' GAsyncReadyCallback callback,\n'
' gpointer user_data);\n' ' gpointer user_data);\n'
%(self.ns_lower)) %(self.ns_lower))
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n' self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
' GAsyncResult *res,\n' ' GAsyncResult *res,\n'
' GError **error);\n' ' GError **error);\n'
%(self.ns_lower)) %(self.ns_lower))
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n' self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
' GDBusConnection *connection,\n' ' GDBusConnection *connection,\n'
' GDBusObjectManagerClientFlags flags,\n' ' GDBusObjectManagerClientFlags flags,\n'
@@ -582,6 +615,7 @@ class HeaderCodeGenerator:
' GError **error);\n' ' GError **error);\n'
%(self.ns_lower)) %(self.ns_lower))
self.outfile.write('\n') self.outfile.write('\n')
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('void %sobject_manager_client_new_for_bus (\n' self.outfile.write('void %sobject_manager_client_new_for_bus (\n'
' GBusType bus_type,\n' ' GBusType bus_type,\n'
' GDBusObjectManagerClientFlags flags,\n' ' GDBusObjectManagerClientFlags flags,\n'
@@ -591,10 +625,12 @@ class HeaderCodeGenerator:
' GAsyncReadyCallback callback,\n' ' GAsyncReadyCallback callback,\n'
' gpointer user_data);\n' ' gpointer user_data);\n'
%(self.ns_lower)) %(self.ns_lower))
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n' self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
' GAsyncResult *res,\n' ' GAsyncResult *res,\n'
' GError **error);\n' ' GError **error);\n'
%(self.ns_lower)) %(self.ns_lower))
self.outfile.write('_GLIB_EXTERN\n')
self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n' self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
' GBusType bus_type,\n' ' GBusType bus_type,\n'
' GDBusObjectManagerClientFlags flags,\n' ' GDBusObjectManagerClientFlags flags,\n'