[beast/devel: 1/4] SFI: handle GConnectFlags operators, SfiGlueGcFreeFunc and GTypeFlags casts
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast/devel: 1/4] SFI: handle GConnectFlags operators, SfiGlueGcFreeFunc and GTypeFlags casts
- Date: Fri, 21 Dec 2012 02:44:58 +0000 (UTC)
commit 4510bc9846abaf4ca8cd3236449afa4594ea2f9f
Author: Tim Janik <timj gnu org>
Date: Fri Dec 21 03:23:22 2012 +0100
SFI: handle GConnectFlags operators, SfiGlueGcFreeFunc and GTypeFlags casts
sfi/glib-extra.h | 10 ++++++++--
sfi/sfidl-cbase.cc | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/sfi/glib-extra.h b/sfi/glib-extra.h
index 4ff83c4..40cf00c 100644
--- a/sfi/glib-extra.h
+++ b/sfi/glib-extra.h
@@ -258,8 +258,8 @@ void g_usignal_notify (gint8 usignal);
/* --- GType boilerplate --- */
#ifndef G_DEFINE_DATA_TYPE // GTKFIX: add this to glib?
-#define G_DEFINE_DATA_TYPE(TN, t_n, T_P) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
-#define G_DEFINE_DATA_TYPE_WITH_CODE(TN, t_n, T_P, _C_) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, 0, _C_)
+#define G_DEFINE_DATA_TYPE(TN, t_n, T_P) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, GTypeFlags (0), {})
+#define G_DEFINE_DATA_TYPE_WITH_CODE(TN, t_n, T_P, _C_) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, GTypeFlags (0), _C_)
#define G_DEFINE_ABSTRACT_DATA_TYPE(TN, t_n, T_P) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
#define G_DEFINE_ABSTRACT_DATA_TYPE_WITH_CODE(TN, t_n, T_P, _C_) G_DEFINE_DATA_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, _C_)
#endif /* !G_DEFINE_DATA_TYPE */
@@ -341,6 +341,12 @@ inline GSignalFlags& operator&= (GSignalFlags &s1, GSignalFlags s2) { s1 = s1 &
inline GSignalFlags operator| (GSignalFlags s1, GSignalFlags s2) { return GSignalFlags (s1 | (long long unsigned) s2); }
inline GSignalFlags& operator|= (GSignalFlags &s1, GSignalFlags s2) { s1 = s1 | s2; return s1; }
inline GSignalFlags operator~ (GSignalFlags s1) { return GSignalFlags (~(long long unsigned) s1); }
+
+inline GConnectFlags operator& (GConnectFlags s1, GConnectFlags s2) { return GConnectFlags (s1 & (long long unsigned) s2); }
+inline GConnectFlags& operator&= (GConnectFlags &s1, GConnectFlags s2) { s1 = s1 & s2; return s1; }
+inline GConnectFlags operator| (GConnectFlags s1, GConnectFlags s2) { return GConnectFlags (s1 | (long long unsigned) s2); }
+inline GConnectFlags& operator|= (GConnectFlags &s1, GConnectFlags s2) { s1 = s1 | s2; return s1; }
+inline GConnectFlags operator~ (GConnectFlags s1) { return GConnectFlags (~(long long unsigned) s1); }
#endif // __cplusplus
#endif /* __SFI_GLIB_EXTRA_H__ */
diff --git a/sfi/sfidl-cbase.cc b/sfi/sfidl-cbase.cc
index a471fce..e0ea7bb 100644
--- a/sfi/sfidl-cbase.cc
+++ b/sfi/sfidl-cbase.cc
@@ -301,7 +301,7 @@ String CodeGeneratorCBase::createTypeCode (const String& type, const String &nam
case SEQUENCE:
{
if (model == MODEL_VCALL_RFREE)
- return "if ("+name+" != NULL) sfi_glue_gc_add ("+name+", "+makeLowerName (type)+"_free)";
+ return "if ("+name+" != NULL) sfi_glue_gc_add ("+name+", (SfiGlueGcFreeFunc) "+makeLowerName (type)+"_free)";
if (parser.isSequence (type))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]