StringChunk
- class StringChunk(*args, **kwargs)
GStringChunk
provides efficient storage of groups of strings
String 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 strdup
since fewer calls to malloc()
are needed, and less memory is wasted in memory allocation overheads.
By adding strings with insert_const
it is also
possible to remove duplicates.
To create a new GStringChunk
use new
.
To add strings to a GStringChunk
use insert
.
To add strings to a GStringChunk
, but without duplicating strings
which are already in the GStringChunk
, use insert_const
.
To free the entire GStringChunk
use free
.
It is not possible to free individual strings.
Methods
- class StringChunk
- clear() None
Frees all strings contained within the
StringChunk
. After callingclear()
it is not safe to access any of the strings which were contained within it.Added in version 2.14.
- free() None
Frees all memory allocated by the
StringChunk
. After callingfree()
it is not safe to access any of the strings which were contained within it.
- insert(string: str) str
Adds a copy of
string
to theStringChunk
. It returns a pointer to the new copy of the string in theStringChunk
. The characters in the string can be changed, if necessary, though you should not change anything after the end of the string.Unlike
insert_const()
, this function does not check for duplicates. Also strings added withinsert()
will not be searched byinsert_const()
when looking for duplicates.- Parameters:
string – the string to add
- insert_const(string: str) str
Adds a copy of
string
to theStringChunk
, unless the same string has already been added to theStringChunk
withinsert_const()
.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
insert_const()
will not return a pointer to a string added withinsert()
, even if they do match.- Parameters:
string – the string to add
- insert_len(string: str, len: int) str
Adds a copy of the first
len
bytes ofstring
to theStringChunk
. The copy is nul-terminated.Since this function does not stop at nul bytes, it is the caller’s responsibility to ensure that
string
has at leastlen
addressable bytes.The characters in the returned string can be changed, if necessary, though you should not change anything after the end of the string.
Added in version 2.4.
- Parameters:
string – bytes to insert
len – number of bytes of
string
to insert, or -1 to insert a nul-terminated string