Synopsis#include <glib.h> GStringChunk; GStringChunk* g_string_chunk_new (gsize size); gchar* g_string_chunk_insert (GStringChunk *chunk, const gchar *string); gchar* g_string_chunk_insert_const (GStringChunk *chunk, const gchar *string); gchar* g_string_chunk_insert_len (GStringChunk *chunk, const gchar *string, gssize len); void g_string_chunk_clear (GStringChunk *chunk); void g_string_chunk_free (GStringChunk *chunk); DescriptionString chunks are used to store groups of strings. Memory is allocated in blocks, and as strings are added to the GStringChunk they are copied into the next free position in a block. When a block is full a new block is allocated.
When storing a large number of strings, string chunks are more efficient
than using
By adding strings with
To create a new GStringChunk use
To add strings to a GStringChunk use
To add strings to a GStringChunk, but without duplicating strings which are
already in the GStringChunk, use
To free the entire GStringChunk use DetailsGStringChunktypedef struct _GStringChunk GStringChunk; An opaque data structure representing String Chunks. It should only be accessed by using the following functions. g_string_chunk_new ()GStringChunk* g_string_chunk_new (gsize size); Creates a new GStringChunk.
g_string_chunk_insert ()gchar* g_string_chunk_insert (GStringChunk *chunk, const gchar *string);
Adds a copy of
Unlike
g_string_chunk_insert_const ()gchar* g_string_chunk_insert_const (GStringChunk *chunk, const gchar *string);
Adds a copy of This function is useful if you need to copy a large number of strings but do not want to waste space storing duplicates. But you must remember that there may be several pointers to the same string, and so any changes made to the strings should be done very carefully.
Note that
g_string_chunk_insert_len ()gchar* g_string_chunk_insert_len (GStringChunk *chunk, const gchar *string, gssize len);
Adds a copy of the first
Since this function does not stop at nul bytes, it is the caller's
responsibility to ensure that The characters in the returned string can be changed, if necessary, though you should not change anything after the end of the string.
Since 2.4 g_string_chunk_clear ()void g_string_chunk_clear (GStringChunk *chunk);
Frees all strings contained within the GStringChunk.
After calling
Since 2.14 g_string_chunk_free ()void g_string_chunk_free (GStringChunk *chunk);
Frees all memory allocated by the GStringChunk.
After calling
|