StringG

A GString is an object that handles the memory management of a C string for you. The emphasis of GString is on text, typically UTF-8. Crucially, the "str" member of a GString is guaranteed to have a trailing nul character, and it is therefore always safe to call functions such as strchr() or g_strdup() on it.

However, a GString can also hold arbitrary binary data, because it has a "len" member, which includes any possible embedded nul characters in the data. Conceptually then, GString is like a GByteArray with the addition of many convenience methods for text, and a guaranteed nul terminator.

Constructors

this
this(GString* gString)

Sets our main struct and passes it to the parent class

this
this(string init)

Creates a new GString with len bytes of the init buffer. Because a length is provided, init need not be nul-terminated, and can contain embedded nul bytes. Since this function does not stop at nul bytes, it is the caller's responsibility to ensure that init has at least len addressable bytes.

Members

Functions

append
StringG append(string val)

Appends len bytes of val to string. Because len is provided, val may contain embedded nuls and need not be nul-terminated. Since this function does not stop at nul bytes, it is the caller's responsibility to ensure that val has at least len addressable bytes.

appendC
StringG appendC(char c)

Adds a byte onto the end of a GString, expanding it if necessary.

appendUnichar
StringG appendUnichar(gunichar wc)

Converts a Unicode character into UTF-8, and appends it to the string.

appendUriEscaped
StringG appendUriEscaped(string unescaped, string reservedCharsAllowed, int allowUtf8)

Appends unescaped to string, escaped any characters that are reserved in URIs using URI-style escape sequences. Since 2.16

appendVprintf
void appendVprintf(string format, void* args)

Appends a formatted string onto the end of a GString. This function is similar to g_string_append_printf() except that the arguments to the format string are passed as a va_list. Since 2.14

assign
StringG assign(string rval)

Copies the bytes from a string into a GString, destroying any previous contents. It is rather like the standard strcpy() function, except that you do not have to worry about having enough space to copy the string.

down
StringG down()

Warning g_string_down has been deprecated since version 2.2 and should not be used in newly-written code. This function uses the locale-specific tolower() function, which is almost never the right thing. Use g_string_ascii_down() or g_utf8_strdown() instead. Converts a GString to lowercase.

equal
int equal(StringG v2)

Compares two strings for equality, returning TRUE if they are equal. For use with GHashTable.

erase
StringG erase(gssize pos, gssize len)

Removes len bytes from a GString, starting at position pos. The rest of the GString is shifted down to fill the gap.

free
string free(int freeSegment)

Frees the memory allocated for the GString. If free_segment is TRUE it also frees the character data. If it's FALSE, the caller gains ownership of the buffer and must free it after use with g_free().

freeToBytes
Bytes freeToBytes()

Transfers ownership of the contents of string to a newly allocated GBytes. The GString structure itself is deallocated, and it is therefore invalid to use string after invoking this function. Note that while GString ensures that its buffer always has a trailing nul character (not reflected in its "len"), the returned GBytes does not include this extra nul; i.e. it has length exactly equal to the "len" member. Since 2.34

getStringGStruct
GString* getStringGStruct()

Get the main Gtk struct

getStruct
void* getStruct()

the main Gtk struct as a void*

hash
uint hash()

Creates a hash code for str; for use with GHashTable.

insert
StringG insert(gssize pos, string val)

Inserts len bytes of val into string at pos. Because len is provided, val may contain embedded nuls and need not be nul-terminated. If pos is -1, bytes are inserted at the end of the string. Since this function does not stop at nul bytes, it is the caller's responsibility to ensure that val has at least len addressable bytes.

insertC
StringG insertC(gssize pos, char c)

Inserts a byte into a GString, expanding it if necessary.

insertUnichar
StringG insertUnichar(gssize pos, gunichar wc)

Converts a Unicode character into UTF-8, and insert it into the string at the given position.

overwrite
StringG overwrite(gsize pos, string val)

Overwrites part of a string, lengthening it if necessary. This function will work with embedded nuls. Since 2.14

prepend
StringG prepend(string val)

Prepends len bytes of val to string. Because len is provided, val may contain embedded nuls and need not be nul-terminated. Since this function does not stop at nul bytes, it is the caller's responsibility to ensure that val has at least len addressable bytes.

prependC
StringG prependC(char c)

Adds a byte onto the start of a GString, expanding it if necessary.

prependUnichar
StringG prependUnichar(gunichar wc)

Converts a Unicode character into UTF-8, and prepends it to the string.

setSize
StringG setSize(gsize len)

Sets the length of a GString. If the length is less than the current length, the string will be truncated. If the length is greater than the current length, the contents of the newly added area are undefined. (However, as always, string->str[string->len] will be a nul byte.)

truncate
StringG truncate(gsize len)

Cuts off the end of the GString, leaving the first len bytes.

up
StringG up()

Warning g_string_up has been deprecated since version 2.2 and should not be used in newly-written code. This function uses the locale-specific toupper() function, which is almost never the right thing. Use g_string_ascii_up() or g_utf8_strup() instead. Converts a GString to uppercase.

vprintf
void vprintf(string format, void* args)

Writes a formatted string into a GString. This function is similar to g_string_printf() except that the arguments to the format string are passed as a va_list. Since 2.14

Static functions

sizedNew
StringG sizedNew(gsize dflSize)

Creates a new GString, with enough space for dfl_size bytes. This is useful if you are going to add a lot of text to the string and don't want it to be reallocated too often.

Variables

gString
GString* gString;

the main Gtk struct

Meta