glibmm 2.29.12
Public Types | Static Public Member Functions

Glib::SListHandler< T, Tr > Class Template Reference

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

#include <glibmm/vectorutils.h>

List of all members.

Public Types

typedef Tr::CType CType
typedef T CppType
typedef std::vector< CppTypeVectorType
typedef
Glib::Container_Helpers::GSListKeeper
< Tr > 
GSListKeeperType
typedef
Glib::Container_Helpers::SListIterator
< Tr > 
SListIteratorType

Static Public Member Functions

static VectorType slist_to_vector (GSList* gslist, Glib::OwnershipType ownership)
static GSListKeeperType vector_to_slist (const VectorType& vector)

Detailed Description

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

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

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

For instance:

 std::vector< Glib::RefPtr<Display> > DisplayManager::list_displays()
 {
   return Glib::SListHandler<Glib::RefPtr<Display> >::slist_to_vector(gdk_display_manager_list_displays(gobj()), Glib::OWNERSHIP_SHALLOW);
 }

or

 void Stuff::set_slist(const std::vector<int>& ints)
 {
   g_stuff_set_slist(gobj(), Glib::SListHandler<int>::vector_to_slist(ints).data ());
 }

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


Member Typedef Documentation

template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef T Glib::SListHandler< T, Tr >::CppType
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Tr::CType Glib::SListHandler< T, Tr >::CType
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Glib::Container_Helpers::GSListKeeper<Tr> Glib::SListHandler< T, Tr >::GSListKeeperType
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef Glib::Container_Helpers::SListIterator<Tr> Glib::SListHandler< T, Tr >::SListIteratorType
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
typedef std::vector<CppType> Glib::SListHandler< T, Tr >::VectorType

Member Function Documentation

template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
static VectorType Glib::SListHandler< T, Tr >::slist_to_vector ( GSList *  gslist,
Glib::OwnershipType  ownership 
) [static]
template <typename T, typename Tr = Glib::Container_Helpers::TypeTraits<T>>
static GSListKeeperType Glib::SListHandler< T, Tr >::vector_to_slist ( const VectorType vector) [static]