|
glibmm
2.33.2
|
A utility for converting between std::vector and plain C arrays. More...
#include <glibmm/vectorutils.h>
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) |
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 ();
| typedef T Glib::ArrayHandler::CppType |
| typedef Tr::CType Glib::ArrayHandler::CType |
| static VectorType Glib::ArrayHandler::array_to_vector | ( | const CType* | array, |
| size_t | array_size, | ||
| Glib::OwnershipType | ownership | ||
| ) | [static] |
| static VectorType Glib::ArrayHandler::array_to_vector | ( | const CType* | array, |
| Glib::OwnershipType | ownership | ||
| ) | [static] |
| static ArrayKeeperType Glib::ArrayHandler::vector_to_array | ( | const VectorType& | vector | ) | [static] |
1.7.5