mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-10-02 03:46:39 +02:00
2005-05-05 Owen Taylor <otaylor@redhat.com> * gobject.[ch] gobject.symbols: Add g_object_add/remove_toggle_ref() functions to get notification when a reference count is the last remaining reference; this enables better memory management for language bindings. (http://mail.gnome.org/archives/gtk-devel-list/2005-April/msg00095.html) 2005-05-05 Owen Taylor <otaylor@redhat.com> * glib/gdataset.[ch] glib/gdatasetprivate.h: Add g_datalist_set/unset_flags(), g_datalist_get_flags() functions to squeeze some bits into a GDataSet... this is needed for efficient implementation of toggle references in GObject. * tests/gobject/references.c tests/gobject/Makefile.am: Add a test case for weak and toggle references. * glib/gfileutils.[ch]: Rename g_file_replace() back to g_file_set_contents(). * glib/glib.symbols: Update. 2005-05-05 Owen Taylor <otaylor@redhat.com> * glib/Makefile.am glib/glib-sections.txt gobject/gobject-sections.txt: Update * gobject/tmpl/objects.sgml: Document toggle-references.
125 lines
3.5 KiB
Plaintext
125 lines
3.5 KiB
Plaintext
<!-- ##### SECTION Title ##### -->
|
|
String Chunks
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
efficient storage of groups of strings.
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
When storing a large number of strings, string chunks are more efficient
|
|
than using g_strdup() since fewer calls to <function>malloc()</function>
|
|
are needed, and less memory is wasted in memory allocation overheads.
|
|
</para>
|
|
<para>
|
|
By adding strings with g_string_chunk_insert_const() it is also possible
|
|
to remove duplicates.
|
|
</para>
|
|
<para>
|
|
To create a new #GStringChunk use g_string_chunk_new().
|
|
</para>
|
|
<para>
|
|
To add strings to a #GStringChunk use g_string_chunk_insert().
|
|
</para>
|
|
<para>
|
|
To add strings to a #GStringChunk, but without duplicating strings which are
|
|
already in the #GStringChunk, use g_string_chunk_insert_const().
|
|
</para>
|
|
<para>
|
|
To free the entire #GStringChunk use g_string_chunk_free().
|
|
It is not possible to free individual strings.
|
|
</para>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
<!-- ##### SECTION Stability_Level ##### -->
|
|
|
|
|
|
<!-- ##### STRUCT GStringChunk ##### -->
|
|
<para>
|
|
An opaque data structure representing String Chunks.
|
|
It should only be accessed by using the following functions.
|
|
</para>
|
|
|
|
|
|
<!-- ##### FUNCTION g_string_chunk_new ##### -->
|
|
<para>
|
|
Creates a new #GStringChunk.
|
|
</para>
|
|
|
|
@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.
|
|
|
|
|
|
<!-- ##### FUNCTION g_string_chunk_insert ##### -->
|
|
<para>
|
|
Adds a copy of @string to the #GStringChunk.
|
|
It returns a pointer to the new copy of the string in the #GStringChunk.
|
|
The characters in the string can be changed, if necessary, though you
|
|
should not change anything after the end of the string.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
@chunk: a #GStringChunk.
|
|
@string: the string to add.
|
|
@Returns: a pointer to the copy of @string within the #GStringChunk.
|
|
|
|
|
|
<!-- ##### FUNCTION g_string_chunk_insert_const ##### -->
|
|
<para>
|
|
Adds a copy of @string to the #GStringChunk, unless the same string has
|
|
already been added to the #GStringChunk with g_string_chunk_insert_const().
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
@chunk: a #GStringChunk.
|
|
@string: the string to add.
|
|
@Returns: a pointer to the new or existing copy of @string within the
|
|
#GStringChunk.
|
|
|
|
|
|
<!-- ##### FUNCTION g_string_chunk_insert_len ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@chunk:
|
|
@string:
|
|
@len:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_string_chunk_free ##### -->
|
|
<para>
|
|
Frees all memory allocated by the #GStringChunk.
|
|
After calling g_string_chunk_free() it is not safe to
|
|
access any of the strings which were contained within it.
|
|
</para>
|
|
|
|
@chunk: a #GStringChunk.
|
|
|
|
|