[glibmm/vector] Adapted Gio to use vector utils.



commit 0e307c469d4d1b719efb4a23c358b50ec6928fc9
Author: Krzesimir Nowak <qdlacz gmail com>
Date:   Fri Jan 21 22:36:58 2011 +0100

    Adapted Gio to use vector utils.

 gio/giomm/contenttype.cc      |   13 ++++++++-----
 gio/giomm/contenttype.h       |    5 ++---
 gio/src/actiongroup.ccg       |    2 ++
 gio/src/actiongroup.hg        |    5 ++---
 gio/src/appinfo.ccg           |    3 +++
 gio/src/appinfo.hg            |   22 ++++++++++++----------
 gio/src/dbusintrospection.ccg |    2 ++
 gio/src/dbusintrospection.hg  |    6 ++++--
 gio/src/dbusmessage.ccg       |    3 +++
 gio/src/dbusmessage.hg        |    4 ++--
 gio/src/dbusproxy.ccg         |    3 +++
 gio/src/dbusproxy.hg          |    6 ++++--
 gio/src/drive.ccg             |    3 +++
 gio/src/drive.hg              |    8 ++++----
 gio/src/emblemedicon.ccg      |    2 ++
 gio/src/emblemedicon.hg       |    6 +++---
 gio/src/fileenumerator.ccg    |    5 ++++-
 gio/src/fileenumerator.hg     |    6 ++----
 gio/src/fileinfo.ccg          |    2 ++
 gio/src/fileinfo.hg           |    5 ++---
 gio/src/filelist.am           |    2 +-
 gio/src/filenamecompleter.ccg |    5 ++++-
 gio/src/filenamecompleter.hg  |    4 ++--
 gio/src/mount.ccg             |    4 +++-
 gio/src/mount.hg              |    4 ++--
 gio/src/mountoperation.ccg    |    2 ++
 gio/src/mountoperation.hg     |   13 +++++++------
 gio/src/proxyresolver.ccg     |   10 +++++++---
 gio/src/proxyresolver.hg      |   10 ++++++----
 gio/src/resolver.ccg          |   11 +++++++----
 gio/src/resolver.hg           |   22 +++++++++++-----------
 gio/src/settings.ccg          |    2 ++
 gio/src/settings.hg           |   18 ++++++++++--------
 gio/src/srvtarget.hg          |    6 +-----
 gio/src/themedicon.ccg        |    6 ++++--
 gio/src/themedicon.hg         |    6 +++---
 gio/src/unixfdlist.ccg        |   14 ++++++++------
 gio/src/unixfdlist.hg         |   14 +++++++-------
 gio/src/unixfdmessage.ccg     |    7 +++++--
 gio/src/unixfdmessage.hg      |    4 +++-
 gio/src/volume.ccg            |    4 +++-
 gio/src/volume.hg             |    4 ++--
 gio/src/volumemonitor.ccg     |    2 ++
 gio/src/volumemonitor.hg      |   14 ++++++++------
 44 files changed, 179 insertions(+), 120 deletions(-)
---
diff --git a/gio/giomm/contenttype.cc b/gio/giomm/contenttype.cc
index c0c3a49..afa970f 100644
--- a/gio/giomm/contenttype.cc
+++ b/gio/giomm/contenttype.cc
@@ -17,9 +17,12 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <giomm/contenttype.h>
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
+#include <giomm/contenttype.h>
+
 namespace Gio
 {
 
@@ -98,15 +101,15 @@ Glib::ustring content_type_guess(const std::string& filename,
   return Glib::convert_return_gchar_ptr_to_ustring(cresult);
 }
 
-Glib::StringArrayHandle content_type_guess_for_tree(const Glib::RefPtr<const File>& root)
+std::vector<Glib::ustring> content_type_guess_for_tree(const Glib::RefPtr<const File>& root)
 {
-  return Glib::StringArrayHandle(g_content_type_guess_for_tree(const_cast<GFile*>(root->gobj())),
+  return Glib::ArrayHandler<Glib::ustring>::array_to_vector (g_content_type_guess_for_tree(const_cast<GFile*>(root->gobj())),
     Glib::OWNERSHIP_DEEP);
 }
 
-Glib::ListHandle<Glib::ustring> content_types_get_registered()
+std::vector<Glib::ustring> content_types_get_registered()
 {
-  return Glib::ListHandle<Glib::ustring>(g_content_types_get_registered(),
+  return Glib::ListHandler<Glib::ustring>::list_to_vector (g_content_types_get_registered(),
     Glib::OWNERSHIP_DEEP);
 }
 
diff --git a/gio/giomm/contenttype.h b/gio/giomm/contenttype.h
index 0ccb05e..faa0605 100644
--- a/gio/giomm/contenttype.h
+++ b/gio/giomm/contenttype.h
@@ -20,7 +20,6 @@
 #define _GIOMM_CONTENTTYPE_H
 
 #include <glibmm/ustring.h>
-#include <glibmm/listhandle.h>
 #include <giomm/icon.h>
 #include <giomm/file.h>
 #include <string>
@@ -151,7 +150,7 @@ Glib::ustring content_type_guess(const std::string& filename,
  *
  * @newin{2,18}
  */
-Glib::StringArrayHandle content_type_guess_for_tree(const Glib::RefPtr<const File>& root);
+std::vector<Glib::ustring> content_type_guess_for_tree(const Glib::RefPtr<const File>& root);
 
 /**
  * Gets a list of strings containing all the registered content types
@@ -159,7 +158,7 @@ Glib::StringArrayHandle content_type_guess_for_tree(const Glib::RefPtr<const Fil
  *
  * @return List of the registered content types.
  */
-Glib::ListHandle<Glib::ustring> content_types_get_registered();
+std::vector<Glib::ustring> content_types_get_registered();
 
 } // namespace Gio
 #endif // _GIOMM_CONTENTTYPE_H
diff --git a/gio/src/actiongroup.ccg b/gio/src/actiongroup.ccg
index 555a34b..a024a00 100644
--- a/gio/src/actiongroup.ccg
+++ b/gio/src/actiongroup.ccg
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
diff --git a/gio/src/actiongroup.hg b/gio/src/actiongroup.hg
index 3375628..1adb884 100644
--- a/gio/src/actiongroup.hg
+++ b/gio/src/actiongroup.hg
@@ -53,9 +53,8 @@ class ActionGroup : public Glib::Interface
 public:
   _WRAP_METHOD(bool has_action(const Glib::ustring& action_name) const, g_action_group_has_action)
 
-  //TODO: Use a vector instead, for this new API, before we free glibmm 2.28.
-#m4 _CONVERSION(`gchar**', `Glib::StringArrayHandle', `Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle list_actions() const, g_action_group_list_actions)
+#m4 _CONVERSION(`gchar**', `std::vector<Glib::ustring>', `Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> list_actions() const, g_action_group_list_actions)
 
   _WRAP_METHOD(bool get_action_enabled(const Glib::ustring& action_name) const, g_action_group_get_action_enabled)
 
diff --git a/gio/src/appinfo.ccg b/gio/src/appinfo.ccg
index e5146da..8efdd1c 100644
--- a/gio/src/appinfo.ccg
+++ b/gio/src/appinfo.ccg
@@ -18,6 +18,9 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
+
 #include <giomm/file.h>
 
 namespace Gio
diff --git a/gio/src/appinfo.hg b/gio/src/appinfo.hg
index 9ec3033..e3df128 100644
--- a/gio/src/appinfo.hg
+++ b/gio/src/appinfo.hg
@@ -20,6 +20,7 @@
 #include <exception>
 
 #include <string>
+#include <vector>
 
 #include <glibmm/interface.h>
 #include <glibmm/object.h>
@@ -57,11 +58,11 @@ protected:
 public:
   _WRAP_CREATE()
 
-#m4 _CONVERSION(`const Glib::ListHandle<std::string>&',`GList*',`$3.data()')
-  _WRAP_METHOD(std::string get_display(const Glib::RefPtr<AppInfo>& info, const Glib::ListHandle< Glib::RefPtr<Gio::File> >& files),
+#m4 _CONVERSION(`const std::vector<Glib::RefPtr<Gio::File> >&',`GList*',`Glib::ListHandler<Glib::RefPtr<Gio::File> >::vector_to_list ($3).data()')
+  _WRAP_METHOD(std::string get_display(const Glib::RefPtr<AppInfo>& info, const std::vector<Glib::RefPtr<Gio::File> >& files),
                g_app_launch_context_get_display)
 
-  _WRAP_METHOD(std::string get_startup_notify_id(const Glib::RefPtr<AppInfo>& info, const Glib::ListHandle< Glib::RefPtr<Gio::File> >& files),
+  _WRAP_METHOD(std::string get_startup_notify_id(const Glib::RefPtr<AppInfo>& info, const std::vector<Glib::RefPtr<Gio::File> >& files),
                g_app_launch_context_get_startup_notify_id)
   _WRAP_METHOD(void launch_failed(const std::string& startup_notify_id),
                g_app_launch_context_launch_failed)
@@ -99,13 +100,14 @@ public:
                g_app_info_get_icon,
                refreturn, constversion)
 
-  _WRAP_METHOD(bool launch(const Glib::ListHandle<std::string>& files,
+#m4 _CONVERSION(`const std::vector<std::string>&',`GList*',`Glib::ListHandler<std::string>::vector_to_list ($3).data()')
+  _WRAP_METHOD(bool launch(const std::vector<std::string>& files,
                            const Glib::RefPtr<AppLaunchContext>& launch_context),
                g_app_info_launch,
                errthrow)
   _WRAP_METHOD(bool supports_uris() const, g_app_info_supports_uris)
   _WRAP_METHOD(bool supports_files() const, g_app_info_supports_files)
-  _WRAP_METHOD(bool launch_uris(const Glib::ListHandle<std::string>& uris,
+  _WRAP_METHOD(bool launch_uris(const std::vector<std::string>& uris,
                                 GAppLaunchContext* launch_context),
                g_app_info_launch_uris,
                errthrow)
@@ -127,9 +129,9 @@ public:
   _WRAP_METHOD(bool remove_supports_type(const std::string& content_type),
                g_app_info_remove_supports_type,
                errthrow)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle<Glib::RefPtr<AppInfo> >',`Glib::ListHandle<Glib::RefPtr<AppInfo> >($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(static Glib::ListHandle<Glib::RefPtr<AppInfo> > get_all(), g_app_info_get_all)
-  _WRAP_METHOD(static Glib::ListHandle<Glib::RefPtr<AppInfo> > get_all_for_type(const std::string& content_type), g_app_info_get_all_for_type)
+#m4 _CONVERSION(`GList*',`std::vector<Glib::RefPtr<AppInfo> >',`Glib::ListHandler<Glib::RefPtr<AppInfo> >::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(static std::vector<Glib::RefPtr<AppInfo> > get_all(), g_app_info_get_all)
+  _WRAP_METHOD(static std::vector<Glib::RefPtr<AppInfo> > get_all_for_type(const std::string& content_type), g_app_info_get_all_for_type)
   _WRAP_METHOD(static Glib::RefPtr<AppInfo> get_default_for_type(const std::string& content_type, bool must_support_uris = true), g_app_info_get_default_for_type)
   _WRAP_METHOD(static Glib::RefPtr<AppInfo> get_default_for_uri_scheme(const std::string& uri_scheme), g_app_info_get_default_for_uri_scheme)
   _WRAP_METHOD(static void reset_type_associations(const std::string& content_type), g_app_info_reset_type_associations)
@@ -145,8 +147,8 @@ protected:
   //_WRAP_VFUNC(std::string get_description() const, "get_description")
   //_WRAP_VFUNC(std::string get_executable() const, "get_executable")
   //_WRAP_VFUNC(Glib::RefPtr<Icon> get_icon() const, "get_icon")
-#m4 _CONVERSION(`const Glib::ListHandle<std::string>&',`GList*',`$3.data()')
-#m4 _CONVERSION(`GList*',`const Glib::ListHandle<std::string>&',`Glib::ListHandle<std::string>($3, Glib::OWNERSHIP_NONE)')
+//#m4 _CONVERSION(`const Glib::ListHandle<std::string>&',`GList*',`$3.data()')
+//#m4 _CONVERSION(`GList*',`const Glib::ListHandle<std::string>&',`Glib::ListHandle<std::string>($3, Glib::OWNERSHIP_NONE)')
   //_WRAP_VFUNC(bool launch(const Glib::ListHandle<std::string>& filenames, const Glib::RefPtr<AppLaunchContext>& launch_context, GError** error), "launch")
   //_WRAP_VFUNC(bool supports_uris() const, "supports_uris")
   //_WRAP_VFUNC(bool supports_files() const, "supports_files")
diff --git a/gio/src/dbusintrospection.ccg b/gio/src/dbusintrospection.ccg
index 4ea7e16..9954424 100644
--- a/gio/src/dbusintrospection.ccg
+++ b/gio/src/dbusintrospection.ccg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
diff --git a/gio/src/dbusintrospection.hg b/gio/src/dbusintrospection.hg
index 757392d..dae9186 100644
--- a/gio/src/dbusintrospection.hg
+++ b/gio/src/dbusintrospection.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <gio/gio.h>
 
 _DEFS(giomm,gio)
@@ -37,8 +39,8 @@ class DBusAnnotationInfo
   _CLASS_OPAQUE_REFCOUNTED(DBusAnnotationInfo, GDBusAnnotationInfo, NONE, g_dbus_annotation_info_ref, g_dbus_annotation_info_unref)
 
 public:
-#m4 _CONVERSION(`const Glib::ArrayHandle< Glib::RefPtr<DBusAnnotationInfo> >&', `GDBusAnnotationInfo**', `const_cast<GDBusAnnotationInfo**>($3.data())')
-  _WRAP_METHOD(static Glib::ustring info_lookup(const Glib::ArrayHandle< Glib::RefPtr<DBusAnnotationInfo> >& annotations, const Glib::ustring& name), g_dbus_annotation_info_lookup)
+#m4 _CONVERSION(`const std::vector< Glib::RefPtr<DBusAnnotationInfo> >&', `GDBusAnnotationInfo**', `const_cast<GDBusAnnotationInfo**>(Glib::ArrayHandler<Glib::RefPtr<DBusAnnotationInfo> >::vector_to_array ($3).data())')
+  _WRAP_METHOD(static Glib::ustring info_lookup(const std::vector< Glib::RefPtr<DBusAnnotationInfo> >& annotations, const Glib::ustring& name), g_dbus_annotation_info_lookup)
 };
 
 /** DBusArgInfo - Stores information about an argument for a method or a
diff --git a/gio/src/dbusmessage.ccg b/gio/src/dbusmessage.ccg
index b2229f4..640dbe9 100644
--- a/gio/src/dbusmessage.ccg
+++ b/gio/src/dbusmessage.ccg
@@ -18,6 +18,9 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
+
 #ifdef G_OS_UNIX
 #include <giomm/unixfdlist.h>
 #endif //G_OS_UNIX
diff --git a/gio/src/dbusmessage.hg b/gio/src/dbusmessage.hg
index 25afc3b..e73de16 100644
--- a/gio/src/dbusmessage.hg
+++ b/gio/src/dbusmessage.hg
@@ -126,8 +126,8 @@ public:
 
   _WRAP_METHOD(void set_header(DBusMessageHeaderField header_field, const Glib::VariantBase& value), g_dbus_message_set_header)
 
-  #m4 _CONVERSION(`guchar*',`Glib::ArrayHandle<guchar>',`Glib::ArrayHandle<guchar>($3)')
-  _WRAP_METHOD(Glib::ArrayHandle<guchar> get_header_fields() const, g_dbus_message_get_header_fields)
+#m4 _CONVERSION(`guchar*',`std::vector<guchar>',`Glib::ArrayHandler<guchar>::array_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector<guchar> get_header_fields() const, g_dbus_message_get_header_fields)
 
   _WRAP_METHOD(Glib::ustring get_destination() const, g_dbus_message_get_destination)
   _WRAP_METHOD(void set_destination(const Glib::ustring& value), g_dbus_message_set_destination)
diff --git a/gio/src/dbusproxy.ccg b/gio/src/dbusproxy.ccg
index 3df1754..e4c190c 100644
--- a/gio/src/dbusproxy.ccg
+++ b/gio/src/dbusproxy.ccg
@@ -18,6 +18,9 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
+
 #include <giomm/asyncresult.h>
 #include <giomm/dbusconnection.h>
 #include <giomm/dbusintrospection.h>
diff --git a/gio/src/dbusproxy.hg b/gio/src/dbusproxy.hg
index 0d795bf..b56931f 100644
--- a/gio/src/dbusproxy.hg
+++ b/gio/src/dbusproxy.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <glibmm/object.h>
 #include <giomm/initable.h>
 #include <giomm/asyncinitable.h>
@@ -252,8 +254,8 @@ public:
 
   _WRAP_METHOD(void set_cached_property(const Glib::ustring& property_name, const Glib::VariantBase& value), g_dbus_proxy_set_cached_property)
 
-#m4 _CONVERSION(`gchar**', `Glib::StringArrayHandle', `Glib::StringArrayHandle($3)')
-  _WRAP_METHOD(Glib::StringArrayHandle get_cached_property_names() const, g_dbus_proxy_get_cached_property_names)
+#m4 _CONVERSION(`gchar**', `std::vector<Glib::ustring>', `Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> get_cached_property_names() const, g_dbus_proxy_get_cached_property_names)
 
   _WRAP_METHOD(void set_interface_info(const Glib::RefPtr<DBusInterfaceInfo>& info), g_dbus_proxy_set_interface_info)
   _WRAP_METHOD(Glib::RefPtr<DBusInterfaceInfo> get_interface_info(), g_dbus_proxy_get_interface_info)
diff --git a/gio/src/drive.ccg b/gio/src/drive.ccg
index a51d749..11d67fd 100644
--- a/gio/src/drive.ccg
+++ b/gio/src/drive.ccg
@@ -18,6 +18,9 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
+
 #include <giomm/volume.h>
 #include <glibmm/error.h>
 #include <glibmm/exceptionhandler.h>
diff --git a/gio/src/drive.hg b/gio/src/drive.hg
index 872dd4d..ff7f518 100644
--- a/gio/src/drive.hg
+++ b/gio/src/drive.hg
@@ -60,8 +60,8 @@ public:
 
   _WRAP_METHOD(bool has_volumes() const, g_drive_has_volumes)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Volume> > get_volumes(), g_drive_get_volumes)
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<Volume> >',`Glib::ListHandler< Glib::RefPtr<Volume> >::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<Volume> > get_volumes(), g_drive_get_volumes)
 
   _WRAP_METHOD(bool is_media_removable() const, g_drive_is_media_removable)
   _WRAP_METHOD(bool has_media() const, g_drive_has_media)
@@ -124,8 +124,8 @@ public:
 
   _WRAP_METHOD(std::string get_identifier(const std::string& kind) const, g_drive_get_identifier)
   
-  #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle enumerate_identifiers() const, g_drive_enumerate_identifiers)
+  #m4 _CONVERSION(`char**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> enumerate_identifiers() const, g_drive_enumerate_identifiers)
 
   /** @newin{2,22} */
   void start(const Glib::RefPtr<MountOperation>& mount_operation, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, DriveStartFlags flags = DRIVE_START_NONE);
diff --git a/gio/src/emblemedicon.ccg b/gio/src/emblemedicon.ccg
index c146baa..4b56cd4 100644
--- a/gio/src/emblemedicon.ccg
+++ b/gio/src/emblemedicon.ccg
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
diff --git a/gio/src/emblemedicon.hg b/gio/src/emblemedicon.hg
index 86a732c..6884c33 100644
--- a/gio/src/emblemedicon.hg
+++ b/gio/src/emblemedicon.hg
@@ -53,10 +53,10 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<Icon> get_icon(), g_emblemed_icon_get_icon)
   _WRAP_METHOD(Glib::RefPtr<const Icon> get_icon() const, g_emblemed_icon_get_icon, constversion)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle<Glib::RefPtr<Emblem> >',`$2($3, Glib::OWNERSHIP_NONE)')
-  _WRAP_METHOD(Glib::ListHandle<Glib::RefPtr<Emblem> > get_emblems(), g_emblemed_icon_get_emblems)
+#m4 _CONVERSION(`GList*',`std::vector<Glib::RefPtr<Emblem> >',`Glib::ListHandler<Glib::RefPtr<Emblem> >::list_to_vector($3, Glib::OWNERSHIP_NONE)')
+  _WRAP_METHOD(std::vector<Glib::RefPtr<Emblem> > get_emblems(), g_emblemed_icon_get_emblems)
   // TODO: need constversion?
-  //_WRAP_METHOD(Glib::ListHandle<Glib::RefPtr<const Emblem> > get_emblems() const, g_emblemed_icon_get_emblems, constversion)
+  //_WRAP_METHOD(std::vector<Glib::RefPtr<const Emblem> > get_emblems() const, g_emblemed_icon_get_emblems, constversion)
   _WRAP_METHOD(void add_emblem(const Glib::RefPtr<Emblem>& emblem), g_emblemed_icon_add_emblem)
 };
 
diff --git a/gio/src/fileenumerator.ccg b/gio/src/fileenumerator.ccg
index 840efc4..4fe67dd 100644
--- a/gio/src/fileenumerator.ccg
+++ b/gio/src/fileenumerator.ccg
@@ -18,9 +18,12 @@
  */
 
 #include <gio/gio.h>
-#include <giomm/file.h>
 #include <glibmm/error.h>
 #include <glibmm/exceptionhandler.h>
+#include <glibmm/vectorutils.h>
+
+#include <giomm/file.h>
+
 #include "slot_async.h"
 
 namespace Gio
diff --git a/gio/src/fileenumerator.hg b/gio/src/fileenumerator.hg
index 3ce9b89..56ca428 100644
--- a/gio/src/fileenumerator.hg
+++ b/gio/src/fileenumerator.hg
@@ -18,8 +18,6 @@
  */
 
 #include <glibmm/object.h>
-#include <glibmm/arrayhandle.h>
-#include <glibmm/listhandle.h>
 #include <giomm/asyncresult.h>
 #include <giomm/cancellable.h>
 #include <giomm/fileinfo.h>
@@ -113,8 +111,8 @@ public:
   void next_files_async(const SlotAsyncReady& slot, int num_files = 1, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_enumerator_next_files_async)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<FileInfo> >', `$2(($3), Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<FileInfo> > next_files_finish(const Glib::RefPtr<AsyncResult>& result),
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<FileInfo> >', `Glib::ListHandler<Glib::RefPtr<FileInfo> >::list_to_vector(($3), Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<FileInfo> > next_files_finish(const Glib::RefPtr<AsyncResult>& result),
                g_file_enumerator_next_files_finish,
                errthrow)
 
diff --git a/gio/src/fileinfo.ccg b/gio/src/fileinfo.ccg
index 8d7bd9a..5b6847d 100644
--- a/gio/src/fileinfo.ccg
+++ b/gio/src/fileinfo.ccg
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio {
 
 // FileAttributeMatcher
diff --git a/gio/src/fileinfo.hg b/gio/src/fileinfo.hg
index 5a722c0..8e6f50d 100644
--- a/gio/src/fileinfo.hg
+++ b/gio/src/fileinfo.hg
@@ -17,7 +17,6 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <glibmm/arrayhandle.h>
 #include <glibmm/object.h>
 #include <glibmm/timeval.h>
 #include <giomm/fileattributeinfolist.h>
@@ -91,8 +90,8 @@ public:
   _WRAP_METHOD(bool has_attribute(const std::string& attribute) const,
                g_file_info_has_attribute)
                
-  #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle list_attributes(const std::string& name_space) const,
+  #m4 _CONVERSION(`char**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> list_attributes(const std::string& name_space) const,
                g_file_info_list_attributes)
                
   _WRAP_METHOD(FileAttributeType get_attribute_type(const std::string& attribute) const,
diff --git a/gio/src/filelist.am b/gio/src/filelist.am
index 6f5a281..6fc845f 100644
--- a/gio/src/filelist.am
+++ b/gio/src/filelist.am
@@ -25,7 +25,7 @@ giomm_files_any_hg =			\
 	credentials.hg			\
 	datainputstream.hg		\
 	dataoutputstream.hg		\
-        dbusaddress.hg \
+	dbusaddress.hg \
 	dbusauthobserver.hg \
 	dbusconnection.hg \
 	dbuserror.hg \
diff --git a/gio/src/filenamecompleter.ccg b/gio/src/filenamecompleter.ccg
index 996ac32..62fb40f 100644
--- a/gio/src/filenamecompleter.ccg
+++ b/gio/src/filenamecompleter.ccg
@@ -17,9 +17,12 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <giomm/file.h>
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
+#include <giomm/file.h>
+
 namespace Gio {
 
 
diff --git a/gio/src/filenamecompleter.hg b/gio/src/filenamecompleter.hg
index 7b7e5a2..08792a7 100644
--- a/gio/src/filenamecompleter.hg
+++ b/gio/src/filenamecompleter.hg
@@ -45,8 +45,8 @@ public:
 
   _WRAP_METHOD(std::string get_completion_suffix(const std::string& initial_text) const, g_filename_completer_get_completion_suffix)
   
-  #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle get_completions(const std::string& initial_text) const, g_filename_completer_get_completions)
+  #m4 _CONVERSION(`char**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> get_completions(const std::string& initial_text) const, g_filename_completer_get_completions)
   _WRAP_METHOD(void set_dirs_only(bool dirs_only = true), g_filename_completer_set_dirs_only)
 
   _WRAP_SIGNAL(void got_completion_data(), got_completion_data)
diff --git a/gio/src/mount.ccg b/gio/src/mount.ccg
index 3177869..a3e9234 100644
--- a/gio/src/mount.ccg
+++ b/gio/src/mount.ccg
@@ -16,10 +16,12 @@
  * License along with this library; if not, write to the Free
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
+#include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
 
 #include <giomm/drive.h>
 #include <giomm/volume.h>
-#include <gio/gio.h>
 #include "slot_async.h"
 
 namespace Gio
diff --git a/gio/src/mount.hg b/gio/src/mount.hg
index 987b031..19e3121 100644
--- a/gio/src/mount.hg
+++ b/gio/src/mount.hg
@@ -201,10 +201,10 @@ public:
   void guess_content_type_sync(bool force_rescan = true);
   _IGNORE(g_mount_guess_content_type_sync)
 
-  #m4 _CONVERSION(`gchar**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
+  #m4 _CONVERSION(`gchar**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
 
   //TODO: Correct the documentation:
-  _WRAP_METHOD(Glib::StringArrayHandle guess_content_type_finish(const Glib::RefPtr<AsyncResult>& result), g_mount_guess_content_type_finish, errthrow)
+  _WRAP_METHOD(std::vector<Glib::ustring> guess_content_type_finish(const Glib::RefPtr<AsyncResult>& result), g_mount_guess_content_type_finish, errthrow)
 
   _WRAP_METHOD(bool is_shadowed() const, g_mount_is_shadowed)
   _WRAP_METHOD(void shadow(), g_mount_shadow)
diff --git a/gio/src/mountoperation.ccg b/gio/src/mountoperation.ccg
index 70b732c..7b7f1c1 100644
--- a/gio/src/mountoperation.ccg
+++ b/gio/src/mountoperation.ccg
@@ -18,3 +18,5 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
diff --git a/gio/src/mountoperation.hg b/gio/src/mountoperation.hg
index 03350dc..b86e5a5 100644
--- a/gio/src/mountoperation.hg
+++ b/gio/src/mountoperation.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -80,15 +82,14 @@ public:
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
   _WRAP_SIGNAL(void ask_password(const Glib::ustring& message, const Glib::ustring& default_user, const Glib::ustring& default_domain, AskPasswordFlags flags), ask_password)
 
-  //TODO: We really need some test to make sure that our use of StringArrayHandle is correct. murrayc.
-#m4 _CONVERSION(`const Glib::StringArrayHandle&',`const gchar**',`const_cast<const gchar**>(($3).data())')
-#m4 _CONVERSION(`const gchar**',`const Glib::StringArrayHandle&',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_SIGNAL(void ask_question(const Glib::ustring& message, const Glib::StringArrayHandle& choices), ask_question)
+  //TODO: We really need some test to make sure that our use of std::vector<Glib::ustring> is correct. murrayc.
+#m4 _CONVERSION(`const std::vector<Glib::ustring>&',`const gchar**',`const_cast<const gchar**>(Glib::ArrayHandler<Glib::ustring>::vector_to_array($3).data())')
+#m4 _CONVERSION(`const gchar**',`const std::vector<Glib::ustring>&',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_SIGNAL(void ask_question(const Glib::ustring& message, const std::vector<Glib::ustring>& choices), ask_question)
 
   _WRAP_SIGNAL(void reply(MountOperationResult result), reply)
 
-  //TODO: Remove no_default_handler when we can break ABI:
-  _WRAP_SIGNAL(void aborted(), aborted, no_default_handler)
+  _WRAP_SIGNAL(void aborted(), aborted)
 
   //TODO: The array of char* is not very pleasant to wrap:
   //_WRAP_SIGNAL( void show_processes(const Glib::ustring& message, GArray* processes, const gchar *choices[]);
diff --git a/gio/src/proxyresolver.ccg b/gio/src/proxyresolver.ccg
index d34fdcd..44587ce 100644
--- a/gio/src/proxyresolver.ccg
+++ b/gio/src/proxyresolver.ccg
@@ -17,19 +17,23 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <gio/gio.h>
 #include <utility>
+
+#include <gio/gio.h>
+
 #include <glibmm/error.h>
 #include <glibmm/exceptionhandler.h>
+#include <glibmm/vectorutils.h>
+
 #include "slot_async.h"
 
 namespace Gio
 {
 
-Glib::StringArrayHandle ProxyResolver::lookup(const Glib::ustring& uri)
+std::vector<Glib::ustring> ProxyResolver::lookup(const Glib::ustring& uri)
 {
   GError* gerror = 0;
-  Glib::StringArrayHandle retvalue = Glib::StringArrayHandle(g_proxy_resolver_lookup(gobj(), uri.c_str(), 0, &(gerror)), Glib::OWNERSHIP_DEEP);
+  std::vector<Glib::ustring> retvalue = Glib::ArrayHandler<Glib::ustring>::array_to_vector(g_proxy_resolver_lookup(gobj(), uri.c_str(), 0, &(gerror)), Glib::OWNERSHIP_DEEP);
   if(gerror)
     ::Glib::Error::throw_exception(gerror);
 
diff --git a/gio/src/proxyresolver.hg b/gio/src/proxyresolver.hg
index 387e813..0ae5004 100644
--- a/gio/src/proxyresolver.hg
+++ b/gio/src/proxyresolver.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <glibmm/error.h>
 #include <glibmm/interface.h>
 #include <giomm/asyncresult.h>
@@ -52,12 +54,12 @@ public:
   _WRAP_METHOD(bool is_supported() const, g_proxy_resolver_is_supported)
 
   //TODO: Use std::string instead of ustring (StringArrayHandle uses ustring)?:
-#m4 _CONVERSION(`gchar**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle lookup(const Glib::ustring& uri,
+#m4 _CONVERSION(`gchar**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> lookup(const Glib::ustring& uri,
 						 const Glib::RefPtr<Cancellable>& cancellable), g_proxy_resolver_lookup, errthrow)
 	
 	//TODO: Documentation
-	Glib::StringArrayHandle lookup(const Glib::ustring& uri);
+	std::vector<Glib::ustring> lookup(const Glib::ustring& uri);
 						 
   //TODO: Documentation
   void lookup_async(const Glib::ustring& uri, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
@@ -67,7 +69,7 @@ public:
 
   _IGNORE(g_proxy_resolver_lookup_async)
 
-  _WRAP_METHOD(Glib::StringArrayHandle lookup_finish(const Glib::RefPtr<AsyncResult>& result), g_proxy_resolver_lookup_finish, errthrow)
+  _WRAP_METHOD(std::vector<Glib::ustring> lookup_finish(const Glib::RefPtr<AsyncResult>& result), g_proxy_resolver_lookup_finish, errthrow)
 
 };
 
diff --git a/gio/src/resolver.ccg b/gio/src/resolver.ccg
index 4134c59..b64af1f 100644
--- a/gio/src/resolver.ccg
+++ b/gio/src/resolver.ccg
@@ -18,6 +18,9 @@
  */
 
 #include <gio/gio.h>
+
+#include <glibmm/vectorutils.h>
+
 #include "slot_async.h"
 
 namespace Gio
@@ -33,10 +36,10 @@ void Resolver::set_default(const Glib::RefPtr<Resolver>& resolver)
     g_resolver_set_default(Glib::unwrap(resolver));
 }
 
-Glib::ListHandle< Glib::RefPtr<InetAddress> > Resolver::lookup_by_name(const Glib::ustring& hostname)
+std::vector< Glib::RefPtr<InetAddress> > Resolver::lookup_by_name(const Glib::ustring& hostname)
 {
   GError* gerror = 0;
-  Glib::ListHandle< Glib::RefPtr<InetAddress> > retvalue = Glib::ListHandle< Glib::RefPtr<InetAddress> >(g_resolver_lookup_by_name(gobj(), hostname.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW);
+  std::vector< Glib::RefPtr<InetAddress> > retvalue = Glib::ListHandler< Glib::RefPtr<InetAddress> >::list_to_vector(g_resolver_lookup_by_name(gobj(), hostname.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW);
   if(gerror)
     ::Glib::Error::throw_exception(gerror);
 
@@ -55,10 +58,10 @@ Glib::ustring Resolver::lookup_by_address(const Glib::RefPtr<InetAddress>& addre
 
 }
 
-ListHandle_SrvTarget Resolver::lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain)
+std::vector<Gio::SrvTarget> Resolver::lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain)
 {
   GError* gerror = 0;
-  ListHandle_SrvTarget retvalue = ListHandle_SrvTarget(g_resolver_lookup_service(gobj(), service.c_str(), protocol.c_str(), domain.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW);
+  std::vector<Gio::SrvTarget> retvalue = Glib::ListHandler<Gio::SrvTarget, SrvTargetTraits>::list_to_vector (g_resolver_lookup_service(gobj(), service.c_str(), protocol.c_str(), domain.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW);
   if(gerror)
     ::Glib::Error::throw_exception(gerror);
 
diff --git a/gio/src/resolver.hg b/gio/src/resolver.hg
index f3ffe43..04c86bb 100644
--- a/gio/src/resolver.hg
+++ b/gio/src/resolver.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <glibmm/object.h>
 #include <giomm/inetaddress.h>
 #include <giomm/cancellable.h>
@@ -58,15 +60,14 @@ public:
   // g_resolver_free_addresses is just a C convenience function
   _IGNORE(g_resolver_free_addresses)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<InetAddress> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<InetAddress> > lookup_by_name(const Glib::ustring& hostname, const Glib::RefPtr<Cancellable>& cancellable), g_resolver_lookup_by_name, errthrow)
-  Glib::ListHandle< Glib::RefPtr<InetAddress> > lookup_by_name(const Glib::ustring& hostname);
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<InetAddress> >',`Glib::ListHandler< Glib::RefPtr<InetAddress> >::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<InetAddress> > lookup_by_name(const Glib::ustring& hostname, const Glib::RefPtr<Cancellable>& cancellable), g_resolver_lookup_by_name, errthrow)
+  std::vector< Glib::RefPtr<InetAddress> > lookup_by_name(const Glib::ustring& hostname);
   void lookup_by_name_async(const Glib::ustring& hostname, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
   void lookup_by_name_async(const Glib::ustring& hostname, const SlotAsyncReady& slot);
   _IGNORE(g_resolver_lookup_by_name_async)
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<InetAddress> > lookup_by_name_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_by_name_finish, errthrow)
+  _WRAP_METHOD(std::vector< Glib::RefPtr<InetAddress> > lookup_by_name_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_by_name_finish, errthrow)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<InetAddress> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
   _WRAP_METHOD(Glib::ustring lookup_by_address(const Glib::RefPtr<InetAddress>& address, const Glib::RefPtr<Cancellable>& cancellable), g_resolver_lookup_by_address, errthrow)
   Glib::ustring lookup_by_address(const Glib::RefPtr<InetAddress>& address);
   void lookup_by_address_async(const Glib::RefPtr<InetAddress>& address, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
@@ -74,17 +75,16 @@ public:
   _IGNORE(g_resolver_lookup_by_address_async)
   _WRAP_METHOD(Glib::ustring lookup_by_address_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_by_address_finish, errthrow)
 
-#m4 _CONVERSION(`GList*',`ListHandle_SrvTarget',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(ListHandle_SrvTarget lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const Glib::RefPtr<Cancellable>& cancellable), g_resolver_lookup_service, errthrow)
-  ListHandle_SrvTarget lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain);
+#m4 _CONVERSION(`GList*',`std::vector<Gio::SrvTarget>',`Glib::ListHandler<Gio::SrvTarget, SrvTargetTraits>::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector<Gio::SrvTarget> lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const Glib::RefPtr<Cancellable>& cancellable), g_resolver_lookup_service, errthrow)
+  std::vector<Gio::SrvTarget> lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain);
   void lookup_service_async(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
   void lookup_service_async(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const SlotAsyncReady& slot);
   _IGNORE(g_resolver_lookup_service_async)
-  _WRAP_METHOD(ListHandle_SrvTarget lookup_service_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_service_finish, errthrow)
+  _WRAP_METHOD(std::vector<Gio::SrvTarget> lookup_service_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_service_finish, errthrow)
 
 
-  //TODO: Remove no_default_handler when we can break ABI:
-  _WRAP_SIGNAL(void reload(), reload, no_default_handler)
+  _WRAP_SIGNAL(void reload(), reload)
 };
 
 std::string hostname_to_ascii (const Glib::ustring& hostname);
diff --git a/gio/src/settings.ccg b/gio/src/settings.ccg
index 2af9f32..de84458 100644
--- a/gio/src/settings.ccg
+++ b/gio/src/settings.ccg
@@ -17,6 +17,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
diff --git a/gio/src/settings.hg b/gio/src/settings.hg
index 231e0f8..9ff4a6d 100644
--- a/gio/src/settings.hg
+++ b/gio/src/settings.hg
@@ -15,6 +15,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <glibmm/object.h>
 #include <glibmm/variant.h>
 #include <giomm/settingsbackend.h>
@@ -74,10 +76,10 @@ public:
   _WRAP_METHOD(double get_double(const Glib::ustring& key) const, g_settings_get_double)
   _WRAP_METHOD(void set_double(const Glib::ustring& key, double value), g_settings_set_double)
 
-  #m4 _CONVERSION(`gchar**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle get_string_array(const Glib::ustring& key) const, g_settings_get_strv)
-
-  _WRAP_METHOD(bool set_string_array(const Glib::ustring& key,  const Glib::StringArrayHandle& value), g_settings_set_strv)
+#m4 _CONVERSION(`gchar**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> get_string_array(const Glib::ustring& key) const, g_settings_get_strv)
+#m4 _CONVERSION(`const std::vector<Glib::ustring>&',`const gchar*-const*',`Glib::ArrayHandler<Glib::ustring>::vector_to_array ($3).data ()')
+  _WRAP_METHOD(bool set_string_array(const Glib::ustring& key, const std::vector<Glib::ustring>& value), g_settings_set_strv)
 
   _WRAP_METHOD(int get_enum(const Glib::ustring& key) const, g_settings_get_enum )
   _WRAP_METHOD(bool get_enum(const Glib::ustring& key, int value), g_settings_set_enum)
@@ -98,10 +100,10 @@ public:
 
   _WRAP_METHOD(void reset(const Glib::ustring& key), g_settings_reset)
 
-  //TODO: _WRAP_METHOD(Glib::StringArrayHandle list_schemas() const, g_settings_list_schemas)
+  //TODO: _WRAP_METHOD(std::vector<Glib::ustring> list_schemas() const, g_settings_list_schemas)
 
-  _WRAP_METHOD(Glib::StringArrayHandle list_children() const, g_settings_list_children)
-  _WRAP_METHOD(Glib::StringArrayHandle list_keys() const, g_settings_list_keys)
+  _WRAP_METHOD(std::vector<Glib::ustring> list_children() const, g_settings_list_children)
+  _WRAP_METHOD(std::vector<Glib::ustring> list_keys() const, g_settings_list_keys)
   //TODO: Choose an appropriate Variant template type: GVariant* g_settings_get_range(const gchar* key)
 
   _WRAP_METHOD(bool range_check(const Glib::ustring& key, const Glib::VariantBase& value) const, g_settings_range_check)
@@ -114,7 +116,7 @@ public:
   void bind_writable(const Glib::ustring& key, const Glib::PropertyProxy_Base& property_proxy, bool inverted=false);
   // TODO: unbind is not actually a class method
 
-  //TODO?: _WRAP_SIGNAL(bool change_event(const Glib::ArrayHandle<Glib::QueryQuark>& keys, int n_keys), "change-event")
+  //TODO?: _WRAP_SIGNAL(bool change_event(const std::vector<Glib::QueryQuark>& keys, int n_keys), "change-event")
 
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
   _WRAP_SIGNAL(void changed(const Glib::ustring& key), "changed")
diff --git a/gio/src/srvtarget.hg b/gio/src/srvtarget.hg
index 8700892..2bc8a19 100644
--- a/gio/src/srvtarget.hg
+++ b/gio/src/srvtarget.hg
@@ -15,8 +15,6 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <glibmm/listhandle.h>
-
 // unfortunately we need to include the C header for the type traits
 // implementation
 #include <gio/gio.h>
@@ -61,7 +59,7 @@ public:
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-struct SrvTargetListTraits
+struct SrvTargetTraits
 {
   typedef Gio::SrvTarget CppType;
   typedef const GSrvTarget* CType;
@@ -75,7 +73,5 @@ struct SrvTargetListTraits
 
 #endif // DOXYGEN_SHOULD_SKIP_THIS
 
-typedef Glib::ListHandle<Gio::SrvTarget, SrvTargetListTraits> ListHandle_SrvTarget;
-
 } // namespace Gio
 
diff --git a/gio/src/themedicon.ccg b/gio/src/themedicon.ccg
index 5f471ef..d17f0ca 100644
--- a/gio/src/themedicon.ccg
+++ b/gio/src/themedicon.ccg
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
@@ -27,9 +29,9 @@ ThemedIcon::ThemedIcon(const std::string& iconname, bool use_default_callbacks)
   _CONSTRUCT("name", iconname.c_str(), "use-default-fallbacks", gboolean(use_default_callbacks))
 {}
 
-Glib::StringArrayHandle ThemedIcon::get_names() const
+std::vector<std::string> ThemedIcon::get_names() const
 {
- return Glib::StringArrayHandle(
+ return Glib::ArrayHandler<std::string>::array_to_vector(
     g_themed_icon_get_names(const_cast<GThemedIcon*>(gobj())),
     Glib::OWNERSHIP_DEEP);
 
diff --git a/gio/src/themedicon.hg b/gio/src/themedicon.hg
index b7260a9..a6039c1 100644
--- a/gio/src/themedicon.hg
+++ b/gio/src/themedicon.hg
@@ -60,10 +60,10 @@ public:
   _WRAP_METHOD(void append_name(const std::string& iconname), g_themed_icon_append_name)
 
   //TODO: USe _WRAP_METHOD() instead, but:
-  //#m4 _CONVERSION(`const char*const*',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
+  //#m4 _CONVERSION(`const char*const*',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
   //TODO: gmmproc complains about the wrong number of arguments, but I can't see why. murrayc.
-  //_WRAP_METHOD(Glib::StringArrayHandle get_names() const, g_themed_icon_get_names)
-  Glib::StringArrayHandle get_names() const;
+  //_WRAP_METHOD(std::vector<Glib::ustring> get_names() const, g_themed_icon_get_names)
+  std::vector<std::string> get_names() const;
   _IGNORE(g_themed_icon_get_names)
 
 
diff --git a/gio/src/unixfdlist.ccg b/gio/src/unixfdlist.ccg
index 26cfe99..cf0795f 100644
--- a/gio/src/unixfdlist.ccg
+++ b/gio/src/unixfdlist.ccg
@@ -19,28 +19,30 @@
 
 #include <gio/gunixfdlist.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio
 {
 
-UnixFDList::UnixFDList(const Glib::ArrayHandle<int>& fds)
-: _CONSTRUCT("fds", fds.data(), "n_fds", fds.size())
+UnixFDList::UnixFDList(const std::vector<int>& fds)
+: _CONSTRUCT("fds", Glib::ArrayHandler<int>::vector_to_array(fds).data(), "n_fds", fds.size())
 {}
 
-const Glib::ArrayHandle<int> UnixFDList::peek_fds() const
+const std::vector<int> UnixFDList::peek_fds() const
 {
   int length = 0;
   const int* fds = g_unix_fd_list_peek_fds(const_cast<GUnixFDList*>(gobj()),
     &length);
   // (length - 1) is used because the array is terminated with a -1.
-  return Glib::ArrayHandle<int>(fds, length - 1, Glib::OWNERSHIP_NONE);
+  return Glib::ArrayHandler<int>::array_to_vector (fds, length - 1, Glib::OWNERSHIP_NONE);
 }
 
-Glib::ArrayHandle<int> UnixFDList::steal_fds()
+std::vector<int> UnixFDList::steal_fds()
 {
   int length = 0;
   const int* fds = g_unix_fd_list_steal_fds(gobj(), &length);
   // (length - 1) is used because the array is terminated with a -1.
-  return Glib::ArrayHandle<int>(fds, length - 1, Glib::OWNERSHIP_DEEP);
+  return Glib::ArrayHandler<int>::array_to_vector (fds, length - 1, Glib::OWNERSHIP_DEEP);
 }
 
 } // namespace Gio
diff --git a/gio/src/unixfdlist.hg b/gio/src/unixfdlist.hg
index 7cd152c..a58c57d 100644
--- a/gio/src/unixfdlist.hg
+++ b/gio/src/unixfdlist.hg
@@ -45,10 +45,10 @@ protected:
   _CTOR_DEFAULT
   _IGNORE(g_unix_fd_list_new)
 
-  explicit UnixFDList(const Glib::ArrayHandle<int>& fds);
+  explicit UnixFDList(const std::vector<int>& fds);
 
-#m4 _CONVERSION(`const Glib::ArrayHandle<int>&', `const gint*', `$3.data()')
-  _WRAP_CTOR(UnixFDList(const Glib::ArrayHandle<int>& fds, int n_fds), g_unix_fd_list_new_from_array)
+#m4 _CONVERSION(`const std::vector<int>&', `const gint*', `Glib::ArrayHandler<int>::vector_to_array($3).data()')
+  _WRAP_CTOR(UnixFDList(const std::vector<int>& fds, int n_fds), g_unix_fd_list_new_from_array)
 
 public:
   _WRAP_METHOD_DOCS_ONLY(g_unix_fd_list_new)
@@ -62,10 +62,10 @@ public:
    * @param fds The list of file descriptors to use for creation.
    * @return A new UnixFDList.
    */
-  _WRAP_CREATE(const Glib::ArrayHandle<int>& fds)
+  _WRAP_CREATE(const std::vector<int>& fds)
 
   _WRAP_METHOD_DOCS_ONLY(g_unix_fd_list_new_from_array)
-  _WRAP_CREATE(const Glib::ArrayHandle<int>& fds, int n_fds)
+  _WRAP_CREATE(const std::vector<int>& fds, int n_fds)
 
   _WRAP_METHOD(int get_length() const, g_unix_fd_list_get_length)
   _WRAP_METHOD(int get(int index) const, g_unix_fd_list_get, errthrow)
@@ -79,7 +79,7 @@ public:
    *
    * @newin{2,28}
    */
-  const Glib::ArrayHandle<int> peek_fds() const;
+  const std::vector<int> peek_fds() const;
   _IGNORE(g_unix_fd_list_peek_fds)
 
   /** Returns the array of file descriptors that is contained in this object.
@@ -94,7 +94,7 @@ public:
    *
    * @newin{2,28}
    */
-  Glib::ArrayHandle<int> steal_fds();
+  std::vector<int> steal_fds();
   _IGNORE(g_unix_fd_list_steal_fds)
 
   _WRAP_METHOD_DOCS_ONLY(g_unix_fd_list_append)
diff --git a/gio/src/unixfdmessage.ccg b/gio/src/unixfdmessage.ccg
index 6ac74d6..a8dd920 100644
--- a/gio/src/unixfdmessage.ccg
+++ b/gio/src/unixfdmessage.ccg
@@ -18,17 +18,20 @@
  */
 
 #include <gio/gunixfdmessage.h>
+
+#include <glibmm/vectorutils.h>
+
 #include <giomm/unixfdlist.h>
 
 namespace Gio
 {
 
-Glib::ArrayHandle<int> UnixFDMessage::steal_fds()
+std::vector<int> UnixFDMessage::steal_fds()
 {
   int length = 0;
   const int* fds = g_unix_fd_message_steal_fds(gobj(), &length);
   // (length - 1) is used because the array is terminated with a -1.
-  return Glib::ArrayHandle<int>(fds, length - 1, Glib::OWNERSHIP_DEEP);
+  return Glib::ArrayHandler<int>::array_to_vector (fds, length - 1, Glib::OWNERSHIP_DEEP);
 }
 
 } // namespace Gio
diff --git a/gio/src/unixfdmessage.hg b/gio/src/unixfdmessage.hg
index 9f22fb0..5dcf0f0 100644
--- a/gio/src/unixfdmessage.hg
+++ b/gio/src/unixfdmessage.hg
@@ -17,6 +17,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <vector>
+
 #include <giomm/socketcontrolmessage.h>
 
 _DEFS(giomm,gio)
@@ -73,7 +75,7 @@ public:
    *
    * @newin{2,28}
    */
-  Glib::ArrayHandle<int> steal_fds();
+  std::vector<int> steal_fds();
   _IGNORE(g_unix_fd_message_steal_fds)
 
   _WRAP_PROPERTY("fd-list", Glib::RefPtr<UnixFDList>)
diff --git a/gio/src/volume.ccg b/gio/src/volume.ccg
index 2a7b6bd..c10f90c 100644
--- a/gio/src/volume.ccg
+++ b/gio/src/volume.ccg
@@ -17,12 +17,14 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <gio/gio.h>
 
 #include <glibmm/error.h>
 #include <glibmm/exceptionhandler.h>
+#include <glibmm/vectorutils.h>
+
 #include <giomm/file.h>
 #include <giomm/drive.h>
-#include <gio/gio.h>
 #include "slot_async.h"
 
 namespace Gio {
diff --git a/gio/src/volume.hg b/gio/src/volume.hg
index 615250c..baf225f 100644
--- a/gio/src/volume.hg
+++ b/gio/src/volume.hg
@@ -135,8 +135,8 @@ public:
   _WRAP_METHOD(std::string get_identifier(const std::string& kind) const,
                g_volume_get_identifier)
 
-  #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
-  _WRAP_METHOD(Glib::StringArrayHandle enumerate_identifiers() const,
+  #m4 _CONVERSION(`char**',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector ($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(std::vector<Glib::ustring> enumerate_identifiers() const,
                g_volume_enumerate_identifiers)
 
   _WRAP_METHOD(Glib::RefPtr<File> get_activation_root(), g_volume_get_activation_root)
diff --git a/gio/src/volumemonitor.ccg b/gio/src/volumemonitor.ccg
index f87a48e..15e387f 100644
--- a/gio/src/volumemonitor.ccg
+++ b/gio/src/volumemonitor.ccg
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <glibmm/vectorutils.h>
+
 namespace Gio {
 
 
diff --git a/gio/src/volumemonitor.hg b/gio/src/volumemonitor.hg
index fbec111..64df53f 100644
--- a/gio/src/volumemonitor.hg
+++ b/gio/src/volumemonitor.hg
@@ -21,6 +21,8 @@
 #undef G_DISABLE_DEPRECATED
 #m4 _POP()
 
+#include <vector>
+
 #include <giomm/drive.h>
 #include <giomm/volume.h>
 #include <giomm/mount.h>
@@ -47,14 +49,14 @@ public:
 
   _WRAP_METHOD(static Glib::RefPtr<VolumeMonitor> get(), g_volume_monitor_get)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Drive> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Drive> > get_connected_drives(), g_volume_monitor_get_connected_drives)
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<Drive> >',`Glib::ListHandler< Glib::RefPtr<Drive> >::list_to_vector ($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<Drive> > get_connected_drives(), g_volume_monitor_get_connected_drives)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Volume> > get_volumes(), g_volume_monitor_get_volumes)
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<Volume> >',`Glib::ListHandler< Glib::RefPtr<Volume> >::list_to_vector ($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<Volume> > get_volumes(), g_volume_monitor_get_volumes)
 
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Mount> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Mount> > get_mounts(), g_volume_monitor_get_mounts)
+#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<Mount> >',`Glib::ListHandler< Glib::RefPtr<Mount> >::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
+  _WRAP_METHOD(std::vector< Glib::RefPtr<Mount> > get_mounts(), g_volume_monitor_get_mounts)
 
   _WRAP_METHOD(Glib::RefPtr<Volume> get_volume_for_uuid(const std::string& uuid), g_volume_monitor_get_volume_for_uuid, refreturn)
   _WRAP_METHOD(Glib::RefPtr<Mount> get_mount_for_uuid(const std::string& uuid), g_volume_monitor_get_mount_for_uuid, refreturn)



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