Byte Arrays
arrays of bytes, which grow automatically as elements are added.
#GByteArray is based on #GArray, to provide arrays of bytes which grow
automatically as elements are added.
To create a new #GByteArray use g_byte_array_new().
To add elements to a #GByteArray, use g_byte_array_append(), and
g_byte_array_prepend().
To set the size of a #GByteArray, use g_byte_array_set_size().
To free a #GByteArray, use g_byte_array_free().
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);
The GByteArray struct allows access to the public fields of a GByteArray.
@data: a pointer to the element data. The data may be moved as elements are
added to the #GByteArray.
@len: the number of elements in the #GByteArray.
Creates a new #GByteArray.
@Returns: the new #GByteArray.
Creates a new #GByteArray with @reserved_size bytes preallocated. This
avoids frequent reallocation, if you are going to add 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.
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.
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.
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.
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.
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.
@Since: 2.4
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.
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.
Sets the size of the #GByteArray, expanding it if necessary.
@array: a #GByteArray.
@length: the new size of the #GByteArray.
@Returns: the #GByteArray.
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: