summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-03-05 15:32:26 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2020-03-09 01:39:13 +0800
commit7eb87930b66bb1213ef28b527bcef03472c513cb (patch)
treea7ff48946fc47533d9942046fb68c65b19e5f3f2
parentfb3601fabae0000841499a890b56700c7c0339d6 (diff)
downloadglibmm-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.m44
-rw-r--r--tools/m4/class_boxedtype_static.m45
-rw-r--r--tools/m4/class_gobject.m43
-rw-r--r--tools/m4/class_interface.m43
-rw-r--r--tools/m4/class_opaque_copyable.m46
-rw-r--r--tools/m4/class_opaque_refcounted.m44
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