[glibmm] VariantType
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] VariantType
- Date: Thu, 29 Jul 2010 14:01:08 +0000 (UTC)
commit 3e46b107816ca53851e6fed4fc1e7543dddf9e1e
Author: Murray Cumming <murrayc murrayc com>
Date: Thu Jul 29 16:01:01 2010 +0200
VariantType
* glib/src/glib_functions.defs: Regenerated, manually changing some
define-method lines to define-function lines.
* glib/src/varianttype.[hg|ccg]: Added create_*() methods and a
(std::string) constructor.
* tools/m4/convert_glib.m4: Added a conversion.
ChangeLog | 10 ++++++++++
glib/src/glib_functions.defs | 30 +++++++++++++++++++++++-------
glib/src/varianttype.ccg | 5 +++++
glib/src/varianttype.hg | 26 +++++++++++++++++++++++---
tools/m4/convert_glib.m4 | 1 +
5 files changed, 62 insertions(+), 10 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 3e76a76..9a49e03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2010-07-29 Murray Cumming <murrayc murrayc com>
+ VariantType
+
+ * glib/src/glib_functions.defs: Regenerated, manually changing some
+ define-method lines to define-function lines.
+ * glib/src/varianttype.[hg|ccg]: Added create_*() methods and a
+ (std::string) constructor.
+ * tools/m4/convert_glib.m4: Added a conversion.
+
+2010-07-29 Murray Cumming <murrayc murrayc com>
+
VariantType: Add more appropriate constructor and add Gtk::Stock-like types.
* glib/src/varianttype.[hg|ccg]: Add a cobject constructor that always copies,
diff --git a/glib/src/glib_functions.defs b/glib/src/glib_functions.defs
index aad3205..833c3e5 100644
--- a/glib/src/glib_functions.defs
+++ b/glib/src/glib_functions.defs
@@ -2300,6 +2300,18 @@
)
)
+(define-method
+ (of-object "GIConv")
+ (c-name "g_iconv")
+ (return-type "gsize")
+ (parameters
+ '("gchar**" "inbuf")
+ '("gsize*" "inbytes_left")
+ '("gchar**" "outbuf")
+ '("gsize*" "outbytes_left")
+ )
+)
+
(define-method close
(of-object "GIConv")
(c-name "g_iconv_close")
@@ -11159,7 +11171,7 @@
(c-name "g_win32_get_system_data_dirs_for_module")
(return-type "const-gchar**")
(parameters
- '("somefunc*" "address_of_function")
+ '("somefunc" "address_of_function")
)
)
@@ -12234,16 +12246,20 @@
(return-type "const-GVariantType*")
)
-(define-method new_array
- (of-object "GVariantType")
+(define-function g_variant_type_new_array
(c-name "g_variant_type_new_array")
(return-type "GVariantType*")
+ (parameters
+ '("const-GVariantType*" "element")
+ )
)
-(define-method new_maybe
- (of-object "GVariantType")
+(define-function g_variant_type_new_maybe
(c-name "g_variant_type_new_maybe")
(return-type "GVariantType*")
+ (parameters
+ '("const-GVariantType*" "element")
+ )
)
(define-function g_variant_type_new_tuple
@@ -12255,11 +12271,11 @@
)
)
-(define-method new_dict_entry
- (of-object "GVariantType")
+(define-function g_variant_type_new_dict_entry
(c-name "g_variant_type_new_dict_entry")
(return-type "GVariantType*")
(parameters
+ '("const-GVariantType*" "key")
'("const-GVariantType*" "value")
)
)
diff --git a/glib/src/varianttype.ccg b/glib/src/varianttype.ccg
index 7422284..904b907 100644
--- a/glib/src/varianttype.ccg
+++ b/glib/src/varianttype.ccg
@@ -30,6 +30,11 @@ VariantType::VariantType(const GVariantType* castitem)
gobject_ = 0;
}
+VariantType::VariantType(const std::string& type_string)
+: gobject_(g_variant_type_new(type_string.c_str()))
+{
+}
+
VariantType& VariantType::operator=(const GVariantType* castitem)
{
if(gobject_)
diff --git a/glib/src/varianttype.hg b/glib/src/varianttype.hg
index d07ba13..f6c9eef 100644
--- a/glib/src/varianttype.hg
+++ b/glib/src/varianttype.hg
@@ -18,7 +18,12 @@
_DEFS(glibmm,glib)
#include <glibmmconfig.h>
-#include <glibmm/ustring.h>
+#include <glib-object.h> //For gsize
+#include <string>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GVariantType GVariantType;
+#endif //DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{
@@ -37,11 +42,23 @@ public:
*/
explicit VariantType(const GVariantType* castitem);
+ //TODO: Docuementation
+ explicit VariantType(const std::string& type_string);
+
VariantType& operator=(const GVariantType* castitem);
+
+ _WRAP_METHOD(static VariantType create_array(const VariantType& element), g_variant_type_new_array)
+ _WRAP_METHOD(static VariantType create_maybe(const VariantType& element), g_variant_type_new_maybe)
+
+ //TODO: Use a single list parameter:
+ //_WRAP_METHOD(static VariantType create_tuple(const GVariantType * const *items, gint length), g_variant_type_new_tuple)
+
+ _WRAP_METHOD(static VariantType create_dict_entry(const VariantType& key, const VariantType& value), g_variant_type_new_dict_entry)
+
//TODO: Use something instead of gsize?
_WRAP_METHOD(gsize _get_string_length() const, g_variant_type_get_string_length)
- _WRAP_METHOD(Glib::ustring get_string() const, g_variant_type_peek_string)
+ _WRAP_METHOD(std::string get_string() const, g_variant_type_peek_string)
_IGNORE(g_variant_type_dup_string)
_WRAP_METHOD(bool is_definite() const, g_variant_type_is_definite)
@@ -53,7 +70,10 @@ public:
_WRAP_METHOD(bool is_dict_entry() const, g_variant_type_is_dict_entry)
_WRAP_METHOD(bool is_variant() const, g_variant_type_is_variant)
-/* subtypes */
+ #m4 _CONVERSION(`const VariantType&',`gconstpointer',`const_cast<GVariantType*>(($3).gobj())')
+ _WRAP_METHOD(guint hash() const, g_variant_type_hash)
+ _WRAP_METHOD(bool equal(const VariantType& other) const, g_variant_type_equal)
+
_WRAP_METHOD(bool is_subtype_of(const VariantType& supertype) const, g_variant_type_is_subtype_of)
_WRAP_METHOD(VariantType element() const, g_variant_type_element)
diff --git a/tools/m4/convert_glib.m4 b/tools/m4/convert_glib.m4
index b704106..c7291bf 100644
--- a/tools/m4/convert_glib.m4
+++ b/tools/m4/convert_glib.m4
@@ -82,3 +82,4 @@ _CONVERSION(`Glib::KeyFile&',`GKeyFile*',`($3).gobj()')
_CONVERSION(`const VariantType&',`const GVariantType*',`($3).gobj()')
_CONVERSION(`const GVariantType*',`VariantType',`Glib::wrap(const_cast<GVariantType*>($3), true)')
+_CONVERSION(`GVariantType*',`VariantType',`Glib::wrap(($3), true)')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]