diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2019-01-07 15:19:44 +0100 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2019-01-07 15:19:44 +0100 |
commit | a00bad39cb8288172c2b792d5f507e9fc7c2c5d1 (patch) | |
tree | acca4c87b5b5d984714d97c5c8605d0f67c30e73 /tools/m4 | |
parent | 2c5f873db72f47d37feab78b7e8114a8fe67d870 (diff) | |
download | glibmm-a00bad39cb8288172c2b792d5f507e9fc7c2c5d1.tar.gz |
gmmproc: _WRAP_ENUM and _WRAP_GERROR: Add gtype_func parameter
The M4 macro _GET_TYPE_FUNC() does not generate correct function names for
GDBus* enums. This fix makes it possible to specify the function name in
the call to _WRAP_ENUM or _WRAP_GERROR. See issue #37
Diffstat (limited to 'tools/m4')
-rw-r--r-- | tools/m4/enum.m4 | 10 | ||||
-rw-r--r-- | tools/m4/gerror.m4 | 12 |
2 files changed, 15 insertions, 7 deletions
diff --git a/tools/m4/enum.m4 b/tools/m4/enum.m4 index 9064e353..be07f5e0 100644 --- a/tools/m4/enum.m4 +++ b/tools/m4/enum.m4 @@ -1,6 +1,6 @@ dnl -dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `no_gtype', `optional_refdoc_comment', 'deprecated') -dnl $1 $2 $3 $4 $5 $6 $7 +dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `gtype_func', `optional_refdoc_comment', 'deprecated') +dnl $1 $2 $3 $4 $5 $6 $7 dnl m4_define(`_ENUM',`dnl _PUSH() @@ -71,7 +71,7 @@ inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs) ')dnl endif Flags ifelse(`$7',,,`_DEPRECATE_IFDEF_END')`'dnl The expansion of _DEPRECATE_IFDEF_END ends with a newline -m4_ifelse($5,`NO_GTYPE',,`dnl else +m4_ifelse(`$5',`NO_GTYPE',,`dnl else __NAMESPACE_END__ #ifndef DOXYGEN_SHOULD_SKIP_THIS @@ -96,7 +96,11 @@ ifelse(`$7',,,`_DEPRECATE_IFDEF_START')`'dnl // static GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type() { +m4_ifelse(`$5',,`dnl return _GET_TYPE_FUNC(__ENUM_CNAME__); +',`dnl + return `$5()'; +')dnl } ifelse(`$7',,,`_DEPRECATE_IFDEF_END')`'dnl diff --git a/tools/m4/gerror.m4 b/tools/m4/gerror.m4 index f7515bb1..51b4985c 100644 --- a/tools/m4/gerror.m4 +++ b/tools/m4/gerror.m4 @@ -1,6 +1,6 @@ dnl -dnl _GERROR(cpp_type, c_type, domain, `element_list', `no_gtype', `class_docs', `enum_docs', 'deprecated') -dnl $1 $2 $3 $4 $5 $6 $7 $8 +dnl _GERROR(cpp_type, c_type, domain, `element_list', `gtype_func', `class_docs', `enum_docs', 'deprecated') +dnl $1 $2 $3 $4 $5 $6 $7 $8 dnl m4_define(`_GERROR',`dnl @@ -43,7 +43,7 @@ private: }; ifelse(`$8',,,`_DEPRECATE_IFDEF_END')`'dnl The expansion of _DEPRECATE_IFDEF_END ends with a newline -m4_ifelse($5,`NO_GTYPE',,`dnl else +m4_ifelse(`$5',`NO_GTYPE',,`dnl else __NAMESPACE_END__ #ifndef DOXYGEN_SHOULD_SKIP_THIS @@ -87,11 +87,15 @@ void __NAMESPACE__::__CPPNAME__::throw_func(GError* gobject) throw __NAMESPACE__::__CPPNAME__`'(gobject); } -m4_ifelse($5,`NO_GTYPE',,`dnl else +m4_ifelse(`$5',`NO_GTYPE',,`dnl else // static GType Glib::Value<__NAMESPACE__::__CPPNAME__::Code>::value_type() { +m4_ifelse(`$5',,`dnl return _GET_TYPE_FUNC(__CNAME__); +',`dnl + return `$5()'; +')dnl } ')dnl endif !NO_GTYPE |