glibmm  2.42.0
Public Types | Static Public Member Functions | List of all members
Glib::ListHandler< T, Tr > Class Template Reference

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

#include <glibmm/vectorutils.h>

Public Types

typedef Tr::CType CType
 
typedef T CppType
 
typedef std::vector< CppTypeVectorType
 
typedef
Glib::Container_Helpers::GListKeeper
< Tr > 
GListKeeperType
 
typedef
Glib::Container_Helpers::ListIterator
< Tr > 
ListIteratorType
 

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:

std::vector< Glib::RefPtr<Window> > Window::get_children()
{
}

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>>
typedef T Glib::ListHandler< T, Tr >::CppType
template <typename T , typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Tr::CType Glib::ListHandler< T, Tr >::CType
template <typename T , typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Glib::Container_Helpers::GListKeeper<Tr> Glib::ListHandler< T, Tr >::GListKeeperType
template <typename T , typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Glib::Container_Helpers::ListIterator<Tr> Glib::ListHandler< T, Tr >::ListIteratorType
template <typename T , typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef std::vector<CppType> Glib::ListHandler< T, Tr >::VectorType

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