[glibmm] gmmproc: _CLASS_GOBJECT: reverted removal of __REAL_* arguments.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] gmmproc: _CLASS_GOBJECT: reverted removal of __REAL_* arguments.
- Date: Mon, 17 Jan 2011 07:49:24 +0000 (UTC)
commit 46a6c16c5eeda14aadafa2f843c261e92de39790
Author: Murray Cumming <murrayc murrayc com>
Date: Fri Jan 14 12:50:55 2011 +0100
gmmproc: _CLASS_GOBJECT: reverted removal of __REAL_* arguments.
This is still needed for the gtkmm-2-24 branch.
ChangeLog | 7 +++++++
tools/m4/class_gobject.m4 | 12 +++++++++---
tools/m4/class_shared.m4 | 6 +++---
3 files changed, 19 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 16c333d..d5c09fd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-22 Murray Cumming <murrayc murrayc com>
+
+ gmmproc: _CLASS_GOBJECT: reverted removal of __REAL_* arguments.
+
+ This is still needed for the gtkmm-2-24 branch.
+
2011-01-16 José Alburquerque <jaalburqu svn gnome org>
DBus: Add initial implementation of a bus server/client example.
@@ -8602,3 +8608,4 @@ API should also be applied to the glibmm-2-6 branch.
instead of 2.0 in their name.
glibmm was previously part of gtkmm2.
+
diff --git a/tools/m4/class_gobject.m4 b/tools/m4/class_gobject.m4
index 6aed5d6..12cbec6 100644
--- a/tools/m4/class_gobject.m4
+++ b/tools/m4/class_gobject.m4
@@ -13,6 +13,12 @@ define(`__CPPPARENT__',`$4')
define(`__CPARENT__',`$5')
define(`__PCAST__',`($5*)')
+dnl Some C types, e.g. GdkWindow or GdkPixmap, are a typedef to their base type,
+dnl rather than the real instance type. That is really ugly, yes. We get around
+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'))
+
_POP()
_SECTION(SECTION_CLASS2)
@@ -113,7 +119,7 @@ namespace Glib
*
* @relates __NAMESPACE__::__CPPNAME__
*/
- Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy = false);
+ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy = false);
}
')dnl
@@ -137,7 +143,7 @@ ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
namespace Glib
{
-Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy)
+Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy)
{
return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>( dynamic_cast<__NAMESPACE__::__CPPNAME__*> (Glib::wrap_auto ((GObject*)(object), take_copy)) );
//We use dynamic_cast<> in case of multiple inheritance.
@@ -217,7 +223,7 @@ public:
typedef __CPPNAME__ CppObjectType;
typedef __CPPNAME__`'_Class CppClassType;
typedef __CNAME__ BaseObjectType;
- typedef __CNAME__`'Class BaseClassType;
+ typedef __REAL_CNAME__`'Class BaseClassType;
m4_ifdef(`__BOOL_PROTECTED_GCLASS__',
`protected:',`dnl else
diff --git a/tools/m4/class_shared.m4 b/tools/m4/class_shared.m4
index 2ccc041..c9286da 100644
--- a/tools/m4/class_shared.m4
+++ b/tools/m4/class_shared.m4
@@ -64,13 +64,13 @@ class __CPPNAME__`'_Class : public Glib::Class
public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef __CPPNAME__ CppObjectType;
- typedef __CNAME__ BaseObjectType;
+ typedef __REAL_CNAME__ BaseObjectType;
ifdef(`__BOOL_DO_NOT_DERIVE_GTYPE__',`dnl
typedef __CPPPARENT__`'_Class CppClassParent;
',`dnl
- typedef __CNAME__`'Class BaseClassType;
+ typedef __REAL_CNAME__`'Class BaseClassType;
typedef __CPPPARENT__`'_Class CppClassParent;
- typedef __CPARENT__`'Class BaseClassParent;
+ typedef __REAL_CPARENT__`'Class BaseClassParent;
')dnl
friend class __CPPNAME__;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]