diff options
author | Murray Cumming <murrayc@murrayc.com> | 2010-09-13 10:00:33 +0200 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2010-09-13 10:00:33 +0200 |
commit | 4c2b7814ce8fac368680d404cf05d4998e98c301 (patch) | |
tree | a24b19771f9886e45b4ee7a9e685cbd44478e32a | |
parent | e1ca0fedb49a00eb3c739866cc23df9966a5bee8 (diff) | |
download | glibmm-4c2b7814ce8fac368680d404cf05d4998e98c301.tar.gz |
VariantBase: Added a byte/guchar specialization.
* glib/src/variant_basictypes.cc.m4:
* glib/src/variant_basictypes.h.m4: Add an extra argument to the macro,
so we can handle g_variant_get_byte(), whose function/macro type name is not
the same as its C type name. Each macro only uses 2 arguments, but it is
clearer if both are the same, I think.
* glib/src/variant.hg: Mark g_variant_get_byte() as handled.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | glib/src/variant.hg | 1 | ||||
-rw-r--r-- | glib/src/variant_basictypes.cc.m4 | 34 | ||||
-rw-r--r-- | glib/src/variant_basictypes.h.m4 | 28 |
4 files changed, 48 insertions, 26 deletions
@@ -1,5 +1,16 @@ 2010-09-13 Murray Cumming <murrayc@murrayc.com> + VariantBase: Added a byte/guchar specialization. + + * glib/src/variant_basictypes.cc.m4: + * glib/src/variant_basictypes.h.m4: Add an extra argument to the macro, + so we can handle g_variant_get_byte(), whose function/macro type name is not + the same as its C type name. Each macro only uses 2 arguments, but it is + clearer if both are the same, I think. + * glib/src/variant.hg: Mark g_variant_get_byte() as handled. + +2010-09-13 Murray Cumming <murrayc@murrayc.com> + Variant: Added some methods. * glib/src/variant.[hg|ccg]: Added get_maybe(), get_size(), get_data(), diff --git a/glib/src/variant.hg b/glib/src/variant.hg index 7ee6d236..3f0cf563 100644 --- a/glib/src/variant.hg +++ b/glib/src/variant.hg @@ -198,6 +198,7 @@ public: //We ignore g_variant_get_*() methods that are wrapped by Variant<> specializations, such as in variant_basictypes.h.m4. _IGNORE( g_variant_get_boolean, + g_variant_get_byte, g_variant_get_uint16, g_variant_get_int64, g_variant_get_int32, diff --git a/glib/src/variant_basictypes.cc.m4 b/glib/src/variant_basictypes.cc.m4 index dc345d88..eb702221 100644 --- a/glib/src/variant_basictypes.cc.m4 +++ b/glib/src/variant_basictypes.cc.m4 @@ -23,7 +23,11 @@ dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. include(template.macros.m4) dnl -dnl GLIB_VARIANT_BASIC(bool, boolean) +dnl For instance, GLIB_VARIANT_BASIC(c++ type, c type, c type name) +dnl parameters: +dnl c++ type: The C++ type for the specialization, such as bool +dnl c type: The C type used by the C API, such as gboolean. +dnl c type name: The text used in the C API functions and macros, such as boolean, in g_variant_get_boolean() and G_VARIANT_TYPE_BOOLEAN. dnl define([GLIB_VARIANT_BASIC],[dnl LINE(]__line__[)dnl @@ -34,17 +38,17 @@ dnl Please ignore the format stuff. I was just tired and played a little. // static const GVariantType* Variant<$1>::variant_type() { - return G_VARIANT_TYPE_[]UPPER($2); + return G_VARIANT_TYPE_[]UPPER($3); } Variant<$1> Variant<$1>::create($1 data) { - return Variant<$1>(g_variant_new_$2(data)); + return Variant<$1>(g_variant_new_$3(data)); } $1 Variant<$1>::get() const { - return g_variant_get_$2(gobject_); + return g_variant_get_$3(gobject_); } ]) @@ -55,14 +59,16 @@ divert[]dnl namespace Glib { -GLIB_VARIANT_BASIC(bool, boolean) -dnl GLIB_VARIANT_BASIC(unsigned char, byte) -GLIB_VARIANT_BASIC(gint16, int16) -GLIB_VARIANT_BASIC(guint16, uint16) -GLIB_VARIANT_BASIC(gint32, int32) -GLIB_VARIANT_BASIC(guint32, uint32) -GLIB_VARIANT_BASIC(gint64, int64) -GLIB_VARIANT_BASIC(guint64, uint64) -dnl GLIB_VARIANT_BASIC(gint32, handle) -GLIB_VARIANT_BASIC(double, double) + +GLIB_VARIANT_BASIC(bool, gboolean, boolean) +GLIB_VARIANT_BASIC(unsigned char, guchar, byte) +GLIB_VARIANT_BASIC(gint16, gint16, int16) +GLIB_VARIANT_BASIC(guint16, guint16, uint16) +GLIB_VARIANT_BASIC(gint32, gint32, int32) +GLIB_VARIANT_BASIC(guint32, guint32, uint32) +GLIB_VARIANT_BASIC(gint64, gint64, int64) +GLIB_VARIANT_BASIC(guint64, guint64, uint64) +dnl This would redeclare the <int> GLIB_VARIANT_BASIC(gint32, guint32, handle) +GLIB_VARIANT_BASIC(double, gdouble, double) + } // namespace Glib diff --git a/glib/src/variant_basictypes.h.m4 b/glib/src/variant_basictypes.h.m4 index 84847e9b..ee0662d7 100644 --- a/glib/src/variant_basictypes.h.m4 +++ b/glib/src/variant_basictypes.h.m4 @@ -23,7 +23,11 @@ dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. include(template.macros.m4) dnl -dnl GLIB_VARIANT_BASIC(bool, boolean) +dnl For instance, GLIB_VARIANT_BASIC(c++ type, c type, c type name) +dnl parameters: +dnl c++ type: The C++ type for the specialization, such as bool +dnl c type: The C type used by the C API, such as gboolean. +dnl c type name: The text used in the C API functions and macros, such as boolean, in g_variant_get_boolean() and G_VARIANT_TYPE_BOOLEAN. dnl define([GLIB_VARIANT_BASIC],[dnl LINE(]__line__[)dnl @@ -36,7 +40,7 @@ template <> class Variant<$1> : public VariantBase { public: - typedef g$2 CType; + typedef $2 CType; /// Default constructor. Variant<$1>() @@ -79,14 +83,14 @@ divert[]dnl namespace Glib { -GLIB_VARIANT_BASIC(bool, boolean) -dnl GLIB_VARIANT_BASIC(unsigned char, byte) -GLIB_VARIANT_BASIC(gint16, int16) -GLIB_VARIANT_BASIC(guint16, uint16) -GLIB_VARIANT_BASIC(gint32, int32) -GLIB_VARIANT_BASIC(guint32, uint32) -GLIB_VARIANT_BASIC(gint64, int64) -GLIB_VARIANT_BASIC(guint64, uint64) -dnl GLIB_VARIANT_BASIC(gint32, handle) -GLIB_VARIANT_BASIC(double, double) +GLIB_VARIANT_BASIC(bool, gboolean, boolean) +GLIB_VARIANT_BASIC(unsigned char, guchar, byte) +GLIB_VARIANT_BASIC(gint16, gint16, int16) +GLIB_VARIANT_BASIC(guint16, guint16, uint16) +GLIB_VARIANT_BASIC(gint32, gint32, int32) +GLIB_VARIANT_BASIC(guint32, guint32, uint32) +GLIB_VARIANT_BASIC(gint64, gint64, int64) +GLIB_VARIANT_BASIC(guint64, guint64, uint64) +dnl This would redeclare the <int> specialization: GLIB_VARIANT_BASIC(gint32, guint32, handle) +GLIB_VARIANT_BASIC(double, gdouble, double) } // namespace Glib |