[glibmm/use-dllexport-2-62: 2/8] tools/m4: Allow one to decorate the generated wrap() prototype



commit 7eb87930b66bb1213ef28b527bcef03472c513cb
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Mar 5 15:32:26 2020 +0800

    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

 tools/m4/class_boxedtype.m4         | 4 +++-
 tools/m4/class_boxedtype_static.m4  | 5 ++++-
 tools/m4/class_gobject.m4           | 3 +++
 tools/m4/class_interface.m4         | 3 +++
 tools/m4/class_opaque_copyable.m4   | 6 ++++--
 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]