summaryrefslogtreecommitdiff
path: root/tools/m4/signal.m4
diff options
context:
space:
mode:
Diffstat (limited to 'tools/m4/signal.m4')
-rw-r--r--tools/m4/signal.m473
1 files changed, 46 insertions, 27 deletions
diff --git a/tools/m4/signal.m4 b/tools/m4/signal.m4
index d84838d9..d85f93c7 100644
--- a/tools/m4/signal.m4
+++ b/tools/m4/signal.m4
@@ -1,4 +1,3 @@
-
#
# --------------------------- Signal Decl----------------------------
#
@@ -14,15 +13,29 @@ dnl $8 = `custom_c_callback (boolean)',
dnl $9 = `deprecated' (boolean),
dnl $10 = `refdoc_comment',
dnl $11 = ifdef,
-dnl $12 = exceptionHandler)
+dnl $12 = exceptionHandler,
+dnl $13 = detail_name,
+dnl $14 = two_signal_methods (boolean))
define(`_SIGNAL_PROXY',`
ifelse(`$11',,,`#ifdef $11'
)dnl
ifelse(`$9',,,`_DEPRECATE_IFDEF_START
')dnl
+ifelse($13,,`dnl no detail_name
+$10
+ Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'();
+',dnl detail_name
+$14,0,`dnl
+$10
+ Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'(const Glib::ustring& $13 = Glib::ustring());
+',`dnl detail_name and two_signal_methods
$10
Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'();
+
+$10
+ Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'(const Glib::ustring& $13);
+')dnl end detail_name
ifelse(`$9',,,`_DEPRECATE_IFDEF_END
')dnl
ifelse(`$11',,,`#endif // $11
@@ -54,25 +67,22 @@ static $2 __CPPNAME__`'_signal_$4_callback`'(__CNAME__`'* self, _COMMA_SUFFIX($3
using namespace __NAMESPACE__;
typedef sigc::slot< $5`'_COMMA_PREFIX($6) > SlotType;
- __CPPNAME__* obj = dynamic_cast<__CPPNAME__*>(Glib::ObjectBase::_get_current_wrapper((GObject*) self));
+ auto obj = dynamic_cast<__CPPNAME__*>(Glib::ObjectBase::_get_current_wrapper((GObject*) self));
// Do not try to call a signal on a disassociated wrapper.
if(obj)
{
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
try
{
- #endif //GLIBMM_EXCEPTIONS_ENABLED
- if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
+ if(const auto slot = Glib::SignalProxyNormal::data_to_slot`'(data))
ifelse(`$2',void,`dnl
(*static_cast<SlotType*>(slot))($7);
',`dnl else
return _CONVERT($5,$2,`(*static_cast<SlotType*>(slot))($7)');
')dnl endif
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
}
catch(...)
{
-ifelse($15, `', `dnl
+ifelse($12, `', `dnl
Glib::exception_handlers_invoke`'();
', `dnl
try
@@ -85,7 +95,6 @@ ifelse($15, `', `dnl
}
')dnl
}
- #endif //GLIBMM_EXCEPTIONS_ENABLED
}
ifelse($2,void,,`dnl else
@@ -100,17 +109,14 @@ static $2 __CPPNAME__`'_signal_$4_notify_callback`'(__CNAME__`'* self, _COMMA_SU
using namespace __NAMESPACE__;
typedef sigc::slot< void`'_COMMA_PREFIX($6) > SlotType;
- __CPPNAME__* obj = dynamic_cast<__CPPNAME__*>(Glib::ObjectBase::_get_current_wrapper((GObject*) self));
+ auto obj = dynamic_cast<__CPPNAME__*>(Glib::ObjectBase::_get_current_wrapper((GObject*) self));
// Do not try to call a signal on a disassociated wrapper.
if(obj)
{
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
try
{
- #endif //GLIBMM_EXCEPTIONS_ENABLED
- if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
+ if(const auto slot = Glib::SignalProxyNormal::data_to_slot`'(data))
(*static_cast<SlotType*>(slot))($7);
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
}
catch(...)
{
@@ -127,7 +133,6 @@ ifelse($12, `', `dnl
}
')dnl
}
- #endif //GLIBMM_EXCEPTIONS_ENABLED
}
typedef $2 RType;
@@ -155,10 +160,28 @@ ifelse(`$11',,,`#ifdef $11'
)dnl
ifelse(`$9',,,`_DEPRECATE_IFDEF_START
')dnl
+ifelse($13,,`dnl no detail_name
+Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'()
+{
+ return Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info);
+}
+',dnl detail_name
+$14,0,`dnl
+Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'(const Glib::ustring& $13)
+{
+ return Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info, $13);
+}
+',`dnl detail_name and two_signal_methods
Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'()
{
return Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info);
}
+
+Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'(const Glib::ustring& $13)
+{
+ return Glib::SignalProxyDetailed`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info, $13);
+}
+')dnl end detail_name
ifelse(`$9',,,`_DEPRECATE_IFDEF_END
')dnl
ifelse(`$11',,,`#endif // $11
@@ -212,7 +235,7 @@ $4 __CPPNAME__`'_Class::$2_callback`'($5)
dnl First, do a simple cast to ObjectBase. We will have to do a dynamic_cast
dnl eventually, but it is not necessary to check whether we need to call
dnl the vfunc.
- Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
+ const auto obj_base = static_cast<Glib::ObjectBase*>(
Glib::ObjectBase::_get_current_wrapper`'((GObject*)$8));
_IMPORT(SECTION_CHECK)
@@ -225,13 +248,11 @@ _IMPORT(SECTION_CHECK)
{
dnl We need to do a dynamic cast to get the real object type, to call the
dnl C++ vfunc on it.
- CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
+ const auto obj = dynamic_cast<CppObjectType* const>(obj_base);
if(obj) // This can be NULL during destruction.
{
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
try // Trap C++ exceptions which would normally be lost because this is a C callback.
{
- #endif //GLIBMM_EXCEPTIONS_ENABLED
// Call the virtual member method, which derived classes might override.
ifelse($4,void,`dnl
obj->on_$1`'($7);
@@ -239,16 +260,15 @@ ifelse($4,void,`dnl
',`dnl
return _CONVERT($3,$4,`obj->on_$1`'($7)');
')dnl
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
}
catch(...)
{
-ifelse($15, `', `dnl
+ifelse($11, `', `dnl
Glib::exception_handlers_invoke`'();
', `dnl
try
{
- return _CONVERT($3, $4, `obj->$15`'()');
+ return _CONVERT($3, $4, `obj->$11`'()');
}
catch(...)
{
@@ -256,17 +276,16 @@ ifelse($15, `', `dnl
}
')dnl
}
- #endif //GLIBMM_EXCEPTIONS_ENABLED
}
}
- BaseClassType *const base = static_cast<BaseClassType*>(
+ const auto base = static_cast<BaseClassType*>(
ifdef(`__BOOL_IS_INTERFACE__',`dnl
_IFACE_PARENT_FROM_OBJECT($8)dnl
',`dnl
_PARENT_GCLASS_FROM_OBJECT($8)dnl
') );
-dnl g_assert(base != 0);
+dnl g_assert(base != nullptr);
// Call the original underlying C function:
if(base && base->$2)
@@ -306,13 +325,13 @@ ifelse(`$9',,,`#ifdef $9'
)dnl
$3 __NAMESPACE__::__CPPNAME__::on_$1`'($5)
{
- BaseClassType *const base = static_cast<BaseClassType*>(
+ const auto base = static_cast<BaseClassType*>(
ifdef(`__BOOL_IS_INTERFACE__',`dnl
_IFACE_PARENT_FROM_OBJECT(gobject_)dnl
',`dnl
_PARENT_GCLASS_FROM_OBJECT(gobject_)dnl
') );
-dnl g_assert(base != 0);
+dnl g_assert(base != nullptr);
if(base && base->$2)
ifelse($3,void,`dnl