Byte Arrays — arrays of bytes which grow automatically as elements are added.
glib.lib
#include <glib.h>
GByteArray;
GByteArray* g_byte_array_new (void);
GByteArray* g_byte_array_sized_new (guint reserved_size);
GByteArray* g_byte_array_append (GByteArray *array, const guint8 *data, guint len);
GByteArray* g_byte_array_prepend (GByteArray *array, const guint8 *data, guint len);
GByteArray* g_byte_array_remove_index (GByteArray *array, guint index_);
GByteArray* g_byte_array_remove_index_fast (GByteArray *array, guint index_);
GByteArray* g_byte_array_remove_range (GByteArray *array, guint index_, guint length);
void g_byte_array_sort (GByteArray *array, GCompareFunc compare_func);
void g_byte_array_sort_with_data (GByteArray *array, GCompareDataFunc compare_func, gpointer user_data);
GByteArray* g_byte_array_set_size (GByteArray *array, guint length);
guint8* g_byte_array_free (GByteArray *array, gboolean free_segment);
GByteArray is based on GArray, to provide arrays of bytes which grow automatically as elements are added.
g_byte_array_new()
.
g_byte_array_append()
, and
g_byte_array_prepend()
.
g_byte_array_set_size()
.
g_byte_array_free()
.
Example 8. Using a GByteArray
GByteArray *gbarray; gint i; gbarray = g_byte_array_new (); for (i = 0; i < 10000; i++) g_byte_array_append (gbarray, (guint8*) "abcd", 4); for (i = 0; i < 10000; i++) { g_assert (gbarray->data[4*i] == 'a'); g_assert (gbarray->data[4*i+1] == 'b'); g_assert (gbarray->data[4*i+2] == 'c'); g_assert (gbarray->data[4*i+3] == 'd'); } g_byte_array_free (gbarray, TRUE);
Details
typedef struct {
guint8 *data;
guint len;
} GByteArray;
The GByteArray struct allows access to the public fields of a GByteArray.
guint8 *data ; |
a pointer to the element data. The data may be moved as elements are added to the GByteArray. |
guint len ; |
the number of elements in the GByteArray. |
GByteArray* g_byte_array_new (void);
Creates a new GByteArray.
Returns : | the new GByteArray. |
GByteArray* g_byte_array_sized_new (guint reserved_size);
Creates a new
GByteArray with
reserved_size
bytes preallocated. This avoids frequent reallocation, when adding many bytes to the array. Note however that the size of
the array is
still 0.
reserved_size : |
number of bytes preallocated. |
Returns : | the new GByteArray. |
GByteArray* g_byte_array_append (GByteArray *array, const guint8 *data, guint len);
Adds the given bytes to the end of the GByteArray. The array will grow in size automatically if necessary.
array : |
a GByteArray. |
data : |
the byte data to be added. |
len : |
the number of bytes to add. |
Returns : | the GByteArray. |
GByteArray* g_byte_array_prepend (GByteArray *array, const guint8 *data, guint len);
Adds the given data to the start of the GByteArray. The array will grow in size automatically if necessary.
array : |
a GByteArray. |
data : |
the byte data to be added. |
len : |
the number of bytes to add. |
Returns : | the GByteArray. |
GByteArray* g_byte_array_remove_index (GByteArray *array, guint index_);
Removes the byte at the given index from a GByteArray. The following bytes are moved down one place.
array : |
a GByteArray. |
index_ : |
the index of the byte to remove. |
Returns : | the GByteArray. |
GByteArray* g_byte_array_remove_index_fast (GByteArray *array, guint index_);
Removes the byte at the given index from a
GByteArray.
The last element in the array is used to fill in the space, so this function
does not preserve the order of the GByteArray.
But it is faster than
g_byte_array_remove_index()
.
array : |
a GByteArray. |
index_ : |
the index of the byte to remove. |
Returns : | the GByteArray. |
GByteArray* g_byte_array_remove_range (GByteArray *array, guint index_, guint length);
Removes the given number of bytes starting at the given index from a GByteArray. The following elements are moved to close the gap.
array : |
a GByteArray .
|
index_ : |
the index of the first byte to remove. |
length : |
the number of bytes to remove. |
Returns : | the GByteArray. |
void g_byte_array_sort (GByteArray *array, GCompareFunc compare_func);
Sorts a byte array, using compare_func
which should be a qsort()
-style comparison
function (returns -1 for first arg is less than second arg, 0 for equal, 1
if first arg is greater than second arg).
array : |
a GByteArray. |
compare_func : |
comparison function. |
void g_byte_array_sort_with_data (GByteArray *array, GCompareDataFunc compare_func, gpointer user_data);
Like
g_byte_array_sort()
, but the comparison function
takes a user data argument.
array : |
a GByteArray. |
compare_func : |
comparison function. |
user_data : |
data to pass to compare_func .
|
GByteArray* g_byte_array_set_size (GByteArray *array, guint length);
Sets the size of the GByteArray, expanding it if necessary.
array : |
a GByteArray. |
length : |
the new size of the GByteArray. |
Returns : | the GByteArray. |
guint8* g_byte_array_free (GByteArray *array, gboolean free_segment);
Frees the memory allocated by the
GByteArray.
If free_segment
is
TRUE
it frees the actual byte data.
array : |
a GByteArray. |
free_segment : |
if TRUE the actual byte
data is freed as well.
|
Returns : | the element data if
free_segment
is FALSE , otherwise
NULL
|
For additional information or queries on this page send feedback
© 2005-2007 Nokia |