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

glibmm 2.29.13

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

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

Public Types | Static Public Member Functions

# Glib::ArrayHandler< T, Tr > Class Template Reference

A utility for converting between std::vector and plain C arrays. 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::ArrayKeeper < Tr > | ArrayKeeperType
typedef Glib::Container_Helpers::ArrayIterator < Tr > | ArrayIteratorType
## Static Public Member Functions
static VectorType | array_to_vector (const CType* array, size_t array_size, Glib::OwnershipType ownership)
static VectorType | array_to_vector (const CType* array, Glib::OwnershipType ownership)
static ArrayKeeperType | vector_to_array (const VectorType& vector)

## Detailed Description

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

A utility for converting between std::vector and plain C arrays.

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

For instance:

     std::vector<Glib::ustring> PixbufFormat::get_mime_types() const
     {
       return Glib::ArrayHandler<Glib::ustring>::array_to_vector(gdk_pixbuf_format_get_mime_types(const_cast<GdkPixbufFormat*>(gobj())), Glib::OWNERSHIP_DEEP);
     }

or

     void Display::store_clipboard(const Glib::RefPtr<Gdk::Window>& clipboard_window, guint32 time_, const std::vector<Glib::ustring>& targets)
     {
       if (!targets.size ())
       {
         gdk_display_store_clipboard(gobj(),
                                     Glib::unwrap (clipboard_window),
                                     time_,
                                     Glib::ArrayHandler<Glib::ustring, AtomUstringTraits>::vector_to_array(targets).data (),
                                     targets.size ());
       }
     }

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

     const char** array = Glib::ArrayHandler<Glib::ustring>::vector_to_array(vec).data ();

## Member Typedef Documentation

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

typedef Glib::Container_Helpers::ArrayIterator<Tr> Glib::ArrayHandler< T, Tr >::ArrayIteratorType

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

typedef Glib::Container_Helpers::ArrayKeeper<Tr> Glib::ArrayHandler< T, Tr >::ArrayKeeperType

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

typedef T Glib::ArrayHandler< T, Tr >::CppType

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

typedef Tr::CType Glib::ArrayHandler< T, Tr >::CType

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

typedef std::vector<CppType> Glib::ArrayHandler< T, Tr >::VectorType

## Member Function Documentation

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

static VectorType Glib::ArrayHandler< T, Tr >::array_to_vector | ( | const CType* | array,
|  | size_t | array_size,
|  | Glib::OwnershipType | ownership
| ) |  | `[static]`

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

static VectorType Glib::ArrayHandler< T, Tr >::array_to_vector | ( | const CType* | array,
|  | Glib::OwnershipType | ownership
| ) |  | `[static]`

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

static ArrayKeeperType Glib::ArrayHandler< T, Tr >::vector_to_array | ( | const VectorType & | vector | ) | `[static]`