[glibmm] VariantType



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]