Class StringChunk
- All Implemented Interfaces:
Proxy
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 GLib.strdup(java.lang.String)
since fewer calls to malloc()
are needed, and less memory is wasted in memory allocation overheads.
By adding strings with insertConst(java.lang.String)
it is also
possible to remove duplicates.
To create a new GStringChunk
use new_(long)
.
To add strings to a GStringChunk
use insert(java.lang.String)
.
To add strings to a GStringChunk
, but without duplicating strings
which are already in the GStringChunk
, use insertConst(java.lang.String)
.
To free the entire GStringChunk
use free()
.
It is not possible to free individual strings.
-
Constructor Summary
ConstructorDescriptionStringChunk
(MemorySegment address) Create a StringChunk proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Frees all strings contained within theGStringChunk
.void
free()
Frees all memory allocated by theGStringChunk
.Adds a copy ofstring
to theGStringChunk
.insertConst
(String string) Adds a copy ofstring
to theGStringChunk
, unless the same string has already been added to theGStringChunk
with g_string_chunk_insert_const().Adds a copy of the firstlen
bytes ofstring
to theGStringChunk
.static StringChunk
new_
(long size) Creates a newGStringChunk
.Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
StringChunk
Create a StringChunk proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
-
Method Details
-
new_
Creates a newGStringChunk
.- Parameters:
size
- the default size of the blocks of memory which are allocated to store the strings. If a particular string is larger than this default size, a larger block of memory will be allocated for it.- Returns:
- a new
GStringChunk
-
clear
public void clear()Frees all strings contained within theGStringChunk
. After calling g_string_chunk_clear() it is not safe to access any of the strings which were contained within it. -
free
public void free()Frees all memory allocated by theGStringChunk
. After calling g_string_chunk_free() it is not safe to access any of the strings which were contained within it. -
insert
Adds a copy ofstring
to theGStringChunk
. It returns a pointer to the new copy of the string in theGStringChunk
. The characters in the string can be changed, if necessary, though you should not change anything after the end of the string.Unlike g_string_chunk_insert_const(), this function does not check for duplicates. Also strings added with g_string_chunk_insert() will not be searched by g_string_chunk_insert_const() when looking for duplicates.
- Parameters:
string
- the string to add- Returns:
- a pointer to the copy of
string
within theGStringChunk
-
insertConst
Adds a copy ofstring
to theGStringChunk
, unless the same string has already been added to theGStringChunk
with g_string_chunk_insert_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 g_string_chunk_insert_const() will not return a pointer to a string added with g_string_chunk_insert(), even if they do match.
- Parameters:
string
- the string to add- Returns:
- a pointer to the new or existing copy of
string
within theGStringChunk
-
insertLen
Adds a copy of the firstlen
bytes ofstring
to theGStringChunk
. 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.
- Parameters:
string
- bytes to insertlen
- number of bytes ofstring
to insert, or -1 to insert a nul-terminated string- Returns:
- a pointer to the copy of
string
within theGStringChunk
-