diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2020-03-05 15:32:26 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2020-03-09 01:39:13 +0800 |
commit | 7eb87930b66bb1213ef28b527bcef03472c513cb (patch) | |
tree | a7ff48946fc47533d9942046fb68c65b19e5f3f2 | |
parent | fb3601fabae0000841499a890b56700c7c0339d6 (diff) | |
download | glibmm-7eb87930b66bb1213ef28b527bcef03472c513cb.tar.gz |
tools/m4: Allow one to decorate the generated wrap() prototype
This allows the compiler to use the decoration macro to export those methods
from the generated items
-rw-r--r-- | tools/m4/class_boxedtype.m4 | 4 | ||||
-rw-r--r-- | tools/m4/class_boxedtype_static.m4 | 5 | ||||
-rw-r--r-- | tools/m4/class_gobject.m4 | 3 | ||||
-rw-r--r-- | tools/m4/class_interface.m4 | 3 | ||||
-rw-r--r-- | tools/m4/class_opaque_copyable.m4 | 6 | ||||
-rw-r--r-- | tools/m4/class_opaque_refcounted.m4 | 4 |
6 files changed, 20 insertions, 5 deletions
diff --git a/tools/m4/class_boxedtype.m4 b/tools/m4/class_boxedtype.m4 index a5046f5c..73df2fae 100644 --- a/tools/m4/class_boxedtype.m4 +++ b/tools/m4/class_boxedtype.m4 @@ -1,7 +1,7 @@ dnl $Id$ dnl -dnl _CLASS_BOXEDTYPE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy) +dnl _CLASS_BOXEDTYPE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy, api_decoration) dnl define(`_CLASS_BOXEDTYPE',`dnl @@ -13,6 +13,7 @@ define(`__CNAME__',`$2') define(`__BOXEDTYPE_FUNC_NEW',`$3') define(`__BOXEDTYPE_FUNC_COPY',`$4') define(`__BOXEDTYPE_FUNC_FREE',`$5') +define(`__BOXEDTYPE_FUNC_DECORATION',`$6') define(`_CUSTOM_DEFAULT_CTOR',`dnl _PUSH() @@ -79,6 +80,7 @@ ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl * * @relates __NAMESPACE__::__CPPNAME__ */ +__BOXEDTYPE_FUNC_DECORATION __NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false); ')dnl endif __BOOL_NO_WRAP_FUNCTION__ diff --git a/tools/m4/class_boxedtype_static.m4 b/tools/m4/class_boxedtype_static.m4 index 926ac496..f9c98fff 100644 --- a/tools/m4/class_boxedtype_static.m4 +++ b/tools/m4/class_boxedtype_static.m4 @@ -1,7 +1,7 @@ dnl $Id$ dnl -dnl _CLASS_BOXEDTYPE_STATIC(TreeIter, GtkTreeIter) +dnl _CLASS_BOXEDTYPE_STATIC(TreeIter, GtkTreeIter, api_decoration) dnl define(`_CLASS_BOXEDTYPE_STATIC',`dnl _PUSH() @@ -9,6 +9,7 @@ dnl dnl Define the args for later macros define(`__CPPNAME__',`$1') define(`__CNAME__',`$2') +define(`__FUNC_DECORATION__',`$3') define(`_CUSTOM_DEFAULT_CTOR',`dnl _PUSH() @@ -53,12 +54,14 @@ ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl * @param object The C instance * @result A C++ instance that wraps this C instance. */ +__FUNC_DECORATION__ __NAMESPACE__::__CPPNAME__& wrap(__CNAME__* object); /** @relates __NAMESPACE__::__CPPNAME__ * @param object The C instance * @result A C++ instance that wraps this C instance. */ +__FUNC_DECORATION__ const __NAMESPACE__::__CPPNAME__& wrap(const __CNAME__* object); ')dnl endif __BOOL_NO_WRAP_FUNCTION__ diff --git a/tools/m4/class_gobject.m4 b/tools/m4/class_gobject.m4 index 0e0e4f6e..43c527ba 100644 --- a/tools/m4/class_gobject.m4 +++ b/tools/m4/class_gobject.m4 @@ -19,6 +19,8 @@ dnl the problem by supporting optional __REAL_* arguments to this macro. define(`__REAL_CNAME__',ifelse(`$6',,__CNAME__,`$6')) define(`__REAL_CPARENT__',ifelse(`$7',,__CPARENT__,`$7')) +dnl $8 is for the optional api_decoration used for import/export +define(`__FUNC_DECORATION__',`$8') _POP() _SECTION(SECTION_CLASS2) @@ -141,6 +143,7 @@ namespace Glib * * @relates __NAMESPACE__::__CPPNAME__ */ + __FUNC_DECORATION__ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy = false); } ')dnl diff --git a/tools/m4/class_interface.m4 b/tools/m4/class_interface.m4 index 3c0b93ef..1c9b4961 100644 --- a/tools/m4/class_interface.m4 +++ b/tools/m4/class_interface.m4 @@ -15,6 +15,8 @@ define(`__CPARENT__',m4_ifelse($6,`',`GObject',$6)) #Optional parameter. define(`__PCAST__',`(__CPARENT__`'*)') define(`__BOOL_IS_INTERFACE__',`1') +dnl $7 is for the optional api_decoration used for import/export +define(`__FUNC_DECORATION__',`$7') dnl For classes that need custom code in their cast constructor. define(`_CUSTOM_CTOR_CAST',`dnl @@ -135,6 +137,7 @@ namespace Glib * * @relates __NAMESPACE__::__CPPNAME__ */ + __FUNC_DECORATION__ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy = false); } // namespace Glib diff --git a/tools/m4/class_opaque_copyable.m4 b/tools/m4/class_opaque_copyable.m4 index 7e04921c..c725a42a 100644 --- a/tools/m4/class_opaque_copyable.m4 +++ b/tools/m4/class_opaque_copyable.m4 @@ -1,7 +1,7 @@ dnl $Id$ dnl -dnl _CLASS_OPAQUE_COPYABLE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy) +dnl _CLASS_OPAQUE_COPYABLE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy, api_decoration) dnl define(`_CLASS_OPAQUE_COPYABLE',`dnl @@ -13,6 +13,7 @@ define(`__CNAME__',`$2') define(`__OPAQUE_FUNC_NEW',`$3') define(`__OPAQUE_FUNC_COPY',`$4') define(`__OPAQUE_FUNC_FREE',`$5') +define(`__OPAQUE_FUNC_DECORATION',`$6') define(`_CUSTOM_DEFAULT_CTOR',`dnl _PUSH() @@ -65,7 +66,8 @@ namespace Glib * * @relates __NAMESPACE__::__CPPNAME__ */ -__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false); + __OPAQUE_FUNC_DECORATION + __NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false); } // namespace Glib ')dnl endif __BOOL_NO_WRAP_FUNCTION__ diff --git a/tools/m4/class_opaque_refcounted.m4 b/tools/m4/class_opaque_refcounted.m4 index 439c1361..7d80d9af 100644 --- a/tools/m4/class_opaque_refcounted.m4 +++ b/tools/m4/class_opaque_refcounted.m4 @@ -1,5 +1,5 @@ dnl -dnl _CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, pango_coverage_unref) +dnl _CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, pango_coverage_unref, api_decoration) dnl define(`_CLASS_OPAQUE_REFCOUNTED',`dnl @@ -11,6 +11,7 @@ define(`__CNAME__',`$2') define(`__OPAQUE_FUNC_NEW',`$3') define(`__OPAQUE_FUNC_REF',`$4') define(`__OPAQUE_FUNC_UNREF',`$5') +define(`__OPAQUE_FUNC_DECORATION',`$6') undefine(`__OPAQUE_FUNC_GTYPE__') _POP() @@ -56,6 +57,7 @@ namespace Glib * * @relates __NAMESPACE__::__CPPNAME__ */ +__OPAQUE_FUNC_DECORATION Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__* object, bool take_copy = false); ifdef(`__OPAQUE_FUNC_GTYPE__',`dnl |