Quarks

Quarks — Два способа связать строку и уникальный целочисленный идентификатор.

Краткое описание

#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().

Детали

GQuark

typedef guint32 GQuark;

GQuark это уникальный целочисленный идентификатор специфичной строки.


g_quark_from_string ()

GQuark g_quark_from_string (const gchar *string);

Определяет GQuark идентификатор указанной строки. Если строка не имеет текущего связанного с ней GQuark, создаётся новый GQuark, используя копию строки.

string : строка.
Возвращает : GQuark идентификатор строки.

g_quark_from_static_string ()

GQuark g_quark_from_static_string (const gchar *string);

Определяет GQuark идентификатор указанной (статичной) строки. Если строка не имеет связанного с ней GQuark, создаётся новый GQuark, связывая с указанной строкой.

Помните что эта функция идентична g_quark_from_string(), исключая то, что если новый GQuark создан, используется сама строка, а не её копия. Это сохраняет память, но может использоваться только если строка всегда существует. Она может использоваться со статически распределёнными строками в основной программе, но не со статически распределённой памятью в динамически загружаемых модулях, если вы планируете выгружать модуль снова (например не используйте эту функцию в движках GTK+ тем).

string : строка.
Возвращает : GQuark идентификатор строки.

g_quark_to_string ()

const gchar* g_quark_to_string (GQuark quark);

Определяет строку связанную с полученным GQuark.

quark : GQuark.
Возвращает : строка связанная с GQuark.

g_quark_try_string ()

GQuark g_quark_try_string (const gchar *string);

Определяет GQuark связанный с полученной строкой, или 0 если строка не связана с GQuark.

Если вы хотите чтобы GQuark был создан, если он не существует, используйте g_quark_from_string(), или g_quark_from_static_string().

string : строка.
Возвращает : GQuark связанный со строкой, или 0, если нет GQuark связанного со строкой.

g_intern_string ()

const gchar* g_intern_string (const gchar *string);

Возвращает каноническое представление string. Интернированные строки могут сравниваться на эквивалентность с помощью сравнения указателей, вместо использования strcmp().

string : строка
Возвращает : каноническое представление строки

Начиная с версии 2.10


g_intern_static_string ()

const gchar* g_intern_static_string (const gchar *string);

Возвращает каноническое представление string. Интернированные строки могут сравниваться на эквивалентность с помощью сравнения указателей, вместо использования strcmp(). g_intern_static_string() не копирует строку, однако string не должна освобождаться или изменяться.

string : статичная строка
Возвращает : каноническое представление строки

Начиная с версии 2.10