[glibmm] Missing parts of the last commit



commit a468dba079f998cd26d9d78ff4214754db9c799f
Author: Murray Cumming <murrayc murrayc com>
Date:   Tue Sep 6 09:12:18 2011 +0200

    Missing parts of the last commit

 glib/src/variant.ccg         |   26 +++++++++++++-------------
 tests/glibmm_variant/main.cc |   10 ++++++++++
 2 files changed, 23 insertions(+), 13 deletions(-)
---
diff --git a/glib/src/variant.ccg b/glib/src/variant.ccg
index 5b47bf9..3c14cd9 100644
--- a/glib/src/variant.ccg
+++ b/glib/src/variant.ccg
@@ -18,7 +18,7 @@
 #include <glibmm/variant.h>
 #include <glibmm/utility.h>
 #include <glib.h>
-//#include <iostream>
+#include <iostream>
 
 namespace Glib
 {
@@ -362,13 +362,13 @@ Variant<type_vec_ustring>::create(const type_vec_ustring& data)
    iter < data.end(); iter++)
   {
     g_variant_builder_add(builder,
-      reinterpret_cast<gchar*>(element_variant_type.gobj()), iter->c_str());
+      element_variant_type.get_string().c_str(), iter->c_str());
   }
 
   // Create the variant using the builder.
   Variant<type_vec_ustring> result =
     Variant<type_vec_ustring>(g_variant_new(
-      reinterpret_cast<gchar*>(array_variant_type.gobj()), builder));
+      array_variant_type.get_string().c_str(), builder));
 
   // Remove the floating reference (since it is newly created).
   g_variant_ref_sink(result.gobj());
@@ -415,7 +415,7 @@ VariantIter Variant<type_vec_ustring>::get_iter() const
   // Get the GVariantIter.
   GVariantIter* g_iter = 0;
   g_variant_get(const_cast<GVariant*>(gobj()),
-    reinterpret_cast<gchar*>(array_variant_type.gobj()), &g_iter);
+    array_variant_type.get_string().c_str(), &g_iter);
 
   return VariantIter(g_iter);
 }
@@ -442,26 +442,26 @@ Variant<type_vec_string>
 Variant<type_vec_string>::create(const type_vec_string& data)
 {
   // Get the variant type of the elements.
-  VariantType element_variant_type = Variant<std::string>::variant_type();
+  const VariantType element_variant_type = Variant<std::string>::variant_type();
 
   // Get the variant type of the array.
-  VariantType array_variant_type = Variant<type_vec_string>::variant_type();
-
+  const VariantType array_variant_type = Variant<type_vec_string>::variant_type();
+  
   // Create a GVariantBuilder to build the array.
   GVariantBuilder* builder = g_variant_builder_new(array_variant_type.gobj());
-
+       
   // Add the elements of the vector into the builder.
   for(type_vec_string::const_iterator iter = data.begin();
    iter < data.end(); iter++)
   {
     g_variant_builder_add(builder,
-      reinterpret_cast<gchar*>(element_variant_type.gobj()), iter->c_str());
+      element_variant_type.get_string().c_str(), iter->c_str());
   }
 
   // Create the variant using the builder.
   Variant<type_vec_string> result =
     Variant<type_vec_string>(g_variant_new(
-      reinterpret_cast<gchar*>(array_variant_type.gobj()), builder));
+      array_variant_type.get_string().c_str(), builder));
 
   // Remove the floating reference (since it is newly created).
   g_variant_ref_sink(result.gobj());
@@ -500,15 +500,15 @@ type_vec_string Variant<type_vec_string>::get() const
 VariantIter Variant<type_vec_string>::get_iter() const
 {
   // Get the variant type of the elements.
-  VariantType element_variant_type = Variant<std::string>::variant_type();
+  const VariantType element_variant_type = Variant<std::string>::variant_type();
 
   // Get the variant type of the array.
-  VariantType array_variant_type = Variant<type_vec_string>::variant_type();
+  const VariantType array_variant_type = Variant<type_vec_string>::variant_type();
 
   // Get the GVariantIter.
   GVariantIter* g_iter = 0;
   g_variant_get(const_cast<GVariant*>(gobj()),
-    reinterpret_cast<gchar*>(array_variant_type.gobj()), &g_iter);
+    array_variant_type.get_string().c_str(), &g_iter);
 
   return VariantIter(g_iter);
 }
diff --git a/tests/glibmm_variant/main.cc b/tests/glibmm_variant/main.cc
index 816406e..f8de65d 100644
--- a/tests/glibmm_variant/main.cc
+++ b/tests/glibmm_variant/main.cc
@@ -14,6 +14,7 @@ int main(int, char**)
 {
   Glib::init();
 
+  //vector<int>:
   const int int_list[] = {1, 2, 3, 4, 5, 6, 7, 8};
 
   std::vector<int> int_vector(int_list,
@@ -46,6 +47,15 @@ int main(int, char**)
     integers_variant.get_child(index) << '.' << std::endl;
 
   ostr << std::endl;
+  
+  
+  //vector<std::string>:
+  std::vector<std::string> vec_strings;
+  vec_strings.push_back("a");
+  Glib::Variant<std::vector<std::string> > variant_vec_strings =
+    Glib::Variant<std::vector<std::string> >::create(vec_strings);
+  
+  //Dict:
 
   typedef std::pair<Glib::ustring, Glib::ustring> TypeDictEntry;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]