glibmm: Glib::ListHandler< T, Tr > Class Template Reference

A utility for converting between std::vector and GList. More...

#include <glibmm/vectorutils.h>

Public Types

using CType = typename Tr::CType
using CppType = T
using VectorType = std::vector < CppType >
using GListKeeperType = typename Glib::Container_Helpers::GListKeeper < Tr >
using ListIteratorType = typename Glib::Container_Helpers::ListIterator < Tr >

Static Public Member Functions

static VectorType list_to_vector (GList* glist, Glib::OwnershipType ownership)
static GListKeeperType vector_to_list (const VectorType & vector)

Detailed Description

template<typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>

class Glib::ListHandler< T, Tr >

A utility for converting between std::vector and GList.

This would normally only be used by glibmm or gtkmm itself, or similar libraries that wrap C APIs.

For instance:

or

void Window::set_icon_list( const std::vector < Glib::RefPtr<Gdk::Pixbuf> >& pixbufs)
{
gdk_window_set_icon_list(gobj(), Glib::ListHandler < Glib::RefPtr<Gdk::Pixbuf>
>:: vector_to_list (pixbufs).data ());
}

Note that usage below is wrong - data() returns a pointer to data owned by a temporary ListKeeper returned by vector_to_list() , which is destroyed at the end of this instruction. For details, see Glib::ListKeeper.

Member Typedef Documentation

template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
using Glib::ListHandler < T, Tr >:: CppType = T
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
using Glib::ListHandler < T, Tr >:: CType = typename Tr::CType
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
using Glib::ListHandler < T, Tr >:: GListKeeperType = typename Glib::Container_Helpers::GListKeeper <Tr>
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
using Glib::ListHandler < T, Tr >:: ListIteratorType = typename Glib::Container_Helpers::ListIterator <Tr>
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
using Glib::ListHandler < T, Tr >:: VectorType = std::vector < CppType >

Member Function Documentation

template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
static VectorType Glib::ListHandler < T, Tr >::list_to_vector ( GList * glist ,
Glib::OwnershipType ownership
)
static
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
static GListKeeperType Glib::ListHandler < T, Tr >::vector_to_list ( const VectorType & vector )
static