glibmm 2.34.1

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

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

Public Types | Public Member Functions | List of all members
Glib::Container_Helpers::ArrayKeeper< Tr > Class Template Reference

A keeper class for C array. More...

`#include <glibmm/vectorutils.h>`

## Public Types

typedef Tr::CppType | CppType
typedef Tr::CType | CType

## Public Member Functions

| ArrayKeeper (const CType* array, std::size_t array_size, Glib::OwnershipType ownership)
| Constructs an ArrayKeeper holding array of size .
| ArrayKeeper (const ArrayKeeper& keeper)
| ~ArrayKeeper ()
CType* | data () const
| Gets data the keeper holds.

## Detailed Description

### template<typename Tr>
class Glib::Container_Helpers::ArrayKeeper< Tr >

A keeper class for C array.

Primarily used by C++ wrappers like gtkmm.

Its main purpose is to free its data when they are not needed. What will be destroyed depends on passed ownership upon construction.

The most common usage of Glib::ArrayKeeper is getting its data when converting std::vector to a C array:

void G::Temp::do_something(const std::vector<int>& v)
{
g_temp_do_something(gobj(), Glib::ArrayHandler<int>::vector_to_array(v).data());
}

Variables of this class are seldom defined directly - it is mostly used as a temporary variable returned by Glib::ArrayHandler::vector_to_array().

Note that the usage above is correct with regards to C++ standard point 12.2.3. That means that data returned by data() method is valid through whole g_temp_do_something function and is destroyed, when this function returns.

## Member Typedef Documentation

template <typename Tr >

typedef Tr::CppType Glib::Container_Helpers::ArrayKeeper< Tr >::CppType

template <typename Tr >

typedef Tr::CType Glib::Container_Helpers::ArrayKeeper< Tr >::CType

## Constructor & Destructor Documentation

template <typename Tr >

Glib::Container_Helpers::ArrayKeeper< Tr >::ArrayKeeper | ( | const CType* | array,
|  | std::size_t | array_size,
|  | Glib::OwnershipType | ownership
| ) |  |

inline explicit

Constructs an ArrayKeeper holding array of size .

ownership tells what should be destroyed with keeper destruction:

- Glib::OWNERSHIP_NONE - keeper won't destroy data it holds.
- Glib::OWNERSHIP_SHALLOW - keeper will destroy only container it holds.
- Glib::OWNERSHIP_DEEP - keeper will destroy data and container it holds.

Parameters

  array | - C array to hold.
  array_size | - length of array.
  ownership | - ownership definition.

template <typename Tr >

Glib::Container_Helpers::ArrayKeeper< Tr >::ArrayKeeper | ( | const ArrayKeeper< Tr >& | keeper | ) |

inline

template <typename Tr >

Glib::Container_Helpers::ArrayKeeper< Tr >::~ArrayKeeper | ( |  | ) |

## Member Function Documentation

template <typename Tr >

CType* Glib::Container_Helpers::ArrayKeeper< Tr >::data | ( |  | ) | const

inline

Gets data the keeper holds.

Note that this data is owned by the keeper, so there is no need to free it.

Returns
  C array owned by ArrayKeeper.