1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/* Copyright (C) 2013 The glibmm Development Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
_DEFS(glibmm,glib)
#include <cstddef> // std::size_t
#include <sigc++/slot.h>
#include <glibmm/refptr.h>
#include <glibmm/value.h>
#include <glibmm/wrap.h>
#include <glib.h>
#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef struct _GByteArray GByteArray;
#endif
namespace Glib
{
/** ByteArray - Arrays of bytes.
* ByteArray is a mutable array of bytes, to provide arrays of bytes which grow
* automatically as elements are added.
*
* To create a new ByteArray use create(). To add elements to a ByteArray, use
* append(), and prepend().
*
* To set the size of a ByteArray, use set_size().
*
* @newin{2,36}
*/
class ByteArray
{
_CLASS_OPAQUE_REFCOUNTED(ByteArray, GByteArray, NONE, g_byte_array_ref, g_byte_array_unref)
_IGNORE(g_byte_array_ref, g_byte_array_unref)
public:
/** A Slot type to compare two elements in the array. The slot should return
* -1 if the first value is less than the second, 0 if they are equal and 1
* if the first value is greater than the second.
*
* Slot Prototype:
*
* <code>
* int compare(const guint8* first, const guint8* second);
* </code>
*/
typedef sigc::slot<int, const guint8*, const guint8*> SlotCompare;
_WRAP_METHOD(static Glib::RefPtr<ByteArray> create(), g_byte_array_new)
_WRAP_METHOD(Glib::RefPtr<ByteArray> append(const guint8* data, guint len), g_byte_array_append)
_WRAP_METHOD(Glib::RefPtr<ByteArray> prepend(const guint8* data, guint len), g_byte_array_prepend)
/** Gets the size of the byte array.
* @return The size.
* @newin{2,36}
*/
guint size() const;
/** Gets the data of the byte array.
* @return The data.
* @newin{2,36}
*/
guint8* get_data();
/** Gets the data of the byte array.
* @return The data.
* @newin{2,36}
*/
const guint8* get_data() const;
_WRAP_METHOD(Glib::RefPtr<ByteArray> remove_index(guint index_), g_byte_array_remove_index)
_WRAP_METHOD(Glib::RefPtr<ByteArray> remove_index_fast(guint index_), g_byte_array_remove_index_fast)
_WRAP_METHOD(Glib::RefPtr<ByteArray> remove_range(guint index_, guint length), g_byte_array_remove_range)
_WRAP_METHOD(void sort(const SlotCompare& slot), g_byte_array_sort_with_data, slot_name slot, slot_callback ByteArray_Compare_Data_Func, no_slot_copy)
_IGNORE(g_byte_array_sort)
_WRAP_METHOD(Glib::RefPtr<ByteArray> set_size(guint length), g_byte_array_set_size)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
static GType get_type() G_GNUC_CONST;
#endif
};
#ifndef DOXYGEN_SHOULD_SKIP_THIS
template <>
class Value< Glib::RefPtr<Glib::ByteArray> > : public ValueBase_Boxed
{
public:
static GType value_type() { return Glib::ByteArray::get_type(); }
void set(const Glib::RefPtr<Glib::ByteArray>& array) { set_boxed(Glib::unwrap(array)); }
Glib::RefPtr<Glib::ByteArray> get() { return Glib::RefPtr<Glib::ByteArray>(reinterpret_cast<Glib::ByteArray*>(get_boxed())); }
};
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
} // namespace Glib
|