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

glibmm 2.31.18.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Examples

- Class List
- Class Index
- Class Hierarchy
- Class Members

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< CppType > | VectorType
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.

     GSList* gslist = Glib::SListHandler< Glib::RefPtr<Display> >::vector_to_slist(vec).data();

## 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]`