diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2023-03-27 15:20:04 +0200 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2023-03-27 15:20:04 +0200 |
commit | b7ad9b86d70003c065606c563578cc66dcd2ce0a (patch) | |
tree | 264e2c4723ba49647707a71b04c778f2e5b30124 /gio/src/asyncinitable.hg | |
parent | d3874b1ec56d6db6b393e94daa1aded0f94d4b8b (diff) | |
download | glibmm-b7ad9b86d70003c065606c563578cc66dcd2ce0a.tar.gz |
Gio: Use callback functions with C linkage
* gio/giomm/socketsource.cc: Add extern "C".
* gio/src/application.[ccg|hg]: Call Application_Class::open_callback()
via a local function with C linkage.
* gio/src/asyncinitable.[ccg|hg]: Call
AsyncInitable_Class::init_async_vfunc_callback() and
init_finish_vfunc_callback() via local functions with C linkage.
* gio/src/dbusobjectmanagerclient.ccg: Use a local function with C linkage
instead of Glib::destroy_notify_delete<SlotProxyType>.
* gio/src/file.ccg: Add extern "C".
* gio/src/liststore.ccg: Add a TODO comment.
* gio/src/memoryinputstream.ccg: Add extern "C".
* gio/src/settings.ccg: Add extern "C".
* gio/src/socketcontrolmessage.[ccg|hg]: Call
SocketControlMessage_Class::deserialize_async_vfunc_callback()
via a local function with C linkage.
Code that mixes up C linkage and C++ linkage has undefined behavior.
Most compilers make no difference between C and C++ linkage, so it
has not been an issue so far. Part of issue #1
Diffstat (limited to 'gio/src/asyncinitable.hg')
-rw-r--r-- | gio/src/asyncinitable.hg | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gio/src/asyncinitable.hg b/gio/src/asyncinitable.hg index 842ec45d..e833e83b 100644 --- a/gio/src/asyncinitable.hg +++ b/gio/src/asyncinitable.hg @@ -105,13 +105,15 @@ protected: /** @throw Glib::Errror. */ - virtual bool init_finish_vfunc(const Glib::RefPtr<AsyncResult>& res); + virtual bool init_finish_vfunc(const Glib::RefPtr<AsyncResult>& res); protected: #m4begin _PUSH(SECTION_PCC_CLASS_INIT_VFUNCS) - klass->init_async = &init_async_vfunc_callback; - klass->init_finish = &init_finish_vfunc_callback; + klass->init_async = &AsyncInitable_init_async_vfunc_c_callback; + klass->init_finish = &AsyncInitable_init_finish_vfunc_c_callback; + AsyncInitable_init_async_vfunc_funcptr = &init_async_vfunc_callback; + AsyncInitable_init_finish_vfunc_funcptr = &init_finish_vfunc_callback; _SECTION(SECTION_PH_VFUNCS) static void init_async_vfunc_callback(GAsyncInitable* self, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, |