Справочное описание GLib | ||||
---|---|---|---|---|
#include <glib.h>
typedef GQuark;
GQuark g_quark_from_string (const gchar *string);
GQuark g_quark_from_static_string (const gchar *string);
const gchar* g_quark_to_string (GQuark quark);
GQuark g_quark_try_string (const gchar *string);
const gchar* g_intern_string (const gchar *string);
const gchar* g_intern_static_string (const gchar *string);
Кварк является связью между строками и целочисленными идентификаторами. Получая либо строку, либо GQuark идентификатор, можно найти либо то, либо другое.
Кварки используются и для Datasets и для Keyed Data Lists.
Для создания нового кварка из строки, используйте g_quark_from_string()
или
g_quark_from_static_string()
.
Для поиска строки соответствующей полученному GQuark,
используйте g_quark_to_string()
.
Для поиска GQuark соответствующего полученной строке,
используйте g_quark_try_string()
.
Другой способ использования для строкового пула поддерживающего функции кварка интернирования строки,
использование g_intern_string()
или
g_intern_static_string()
.
Интернированная строка это канонически представленная строка. Одно важно преимущество интернированных строк в том,
что они могут сравниваться на эквивалентность с помощью простого сравнения указателя, в отличие от использования
strcmp()
.
typedef guint32 GQuark;
GQuark это уникальный целочисленный идентификатор специфичной строки.
GQuark g_quark_from_string (const gchar *string);
Определяет GQuark идентификатор указанной строки. Если строка не имеет текущего связанного с ней GQuark, создаётся новый GQuark, используя копию строки.
string : |
строка. |
Возвращает : | GQuark идентификатор строки. |
GQuark g_quark_from_static_string (const gchar *string);
Определяет GQuark идентификатор указанной (статичной) строки. Если строка не имеет связанного с ней GQuark, создаётся новый GQuark, связывая с указанной строкой.
Помните что эта функция идентична g_quark_from_string()
,
исключая то, что если новый GQuark создан, используется сама строка, а не
её копия. Это сохраняет память, но может использоваться только если строка всегда существует.
Она может использоваться со статически распределёнными строками в основной программе, но не со статически распределённой памятью в
динамически загружаемых модулях, если вы планируете выгружать модуль снова (например не используйте эту функцию в движках GTK+ тем).
string : |
строка. |
Возвращает : | GQuark идентификатор строки. |
const gchar* g_quark_to_string (GQuark quark);
Определяет строку связанную с полученным GQuark.
GQuark g_quark_try_string (const gchar *string);
Определяет GQuark связанный с полученной строкой, или 0 если строка не связана с GQuark.
Если вы хотите чтобы GQuark был создан, если он не существует, используйте
g_quark_from_string()
,
или g_quark_from_static_string()
.
const gchar* g_intern_string (const gchar *string);
Возвращает каноническое представление string
. Интернированные строки могут сравниваться
на эквивалентность с помощью сравнения указателей, вместо использования strcmp()
.
string : |
строка |
Возвращает : | каноническое представление строки |
Начиная с версии 2.10
const gchar* g_intern_static_string (const gchar *string);
Возвращает каноническое представление string
. Интернированные строки могут сравниваться на
эквивалентность с помощью сравнения указателей, вместо использования strcmp()
.
g_intern_static_string()
не копирует строку,
однако string
не должна освобождаться или изменяться.
string : |
статичная строка |
Возвращает : | каноническое представление строки |
Начиная с версии 2.10