Datasets

Datasets — Связь групп элементов данных со специфическим расположением памяти.

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

#include <glib.h> #define g_dataset_id_set_data (l, k, d) void g_dataset_id_set_data_full (gconstpointer dataset_location, GQuark key_id, gpointer data, GDestroyNotify destroy_func); void (*GDestroyNotify) (gpointer data); gpointer g_dataset_id_get_data (gconstpointer dataset_location, GQuark key_id); #define g_dataset_id_remove_data (l, k) gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location, GQuark key_id); #define g_dataset_set_data (l, k, d) #define g_dataset_set_data_full (l, k, d, f) #define g_dataset_get_data (l, k) #define g_dataset_remove_data (l, k) #define g_dataset_remove_no_notify (l, k) void g_dataset_foreach (gconstpointer dataset_location, GDataForeachFunc func, gpointer user_data); void (*GDataForeachFunc) (GQuark key_id, gpointer data, gpointer user_data); void g_dataset_destroy (gconstpointer dataset_location);

Описание

Наборы данных связывают группы элементов данных со специфическим расположением памяти. Это полезно если вам необходимо связать данные со структурами возвращаемыми из внешних библиотек. Так как вы не изменяете структуру, вы используете её расположение в памяти как ключ в наборе данных, в котором вы можете связать любое количество элементов данных.

Есть две формы большинства функций набора данных. Первая форма использовать строки для идентификации элементов данных связанных с расположением. Вторая форма использует идентификаторы GQuark, которые создаются с помощью вызова g_quark_from_string() или g_quark_from_static_string(). Вторая форма быстрее, так как она не требует поиска строки в хеш таблице идентификаторов GQuark.

Нет функции для создания набора данных. Он автоматически создаётся когда вы добавляете элемент в него.

Для добавления элемента в набор данных используйте g_dataset_id_set_data(), g_dataset_id_set_data_full(), g_dataset_set_data() and g_dataset_set_data_full().

Для получения элемента данных из набора данных используйте g_dataset_id_get_data() и g_dataset_get_data().

Для перемещения по всем элементам данных в наборе данных используйте g_dataset_foreach() (not thread-safe).

Для удаления элементов данных из набора данных используйте g_dataset_id_remove_data() и g_dataset_remove_data().

Для уничтожения набора данных, используйте g_dataset_destroy().

Детали

g_dataset_id_set_data()

#define g_dataset_id_set_data(l, k, d)

Устанавливает элемент данных связанный с указанным GQuark идентификатором. Любые предыдущие данные с тем же ключом удаляются и вызывается функция их уничтожения.

l : расположение идентифицирующее набор данных.
k : GQuark для идентификации элемента данных.
d : элемент данных.

g_dataset_id_set_data_full ()

void g_dataset_id_set_data_full (gconstpointer dataset_location, GQuark key_id, gpointer data, GDestroyNotify destroy_func);

Устанавливает элемент данных связанный с указанным GQuark, а также функцию вызываемую для разрушения элемента данных. Любые предыдущие данные с тем же ключом удаляются и вызывается функция их уничтожения.

dataset_location : расположение идентифицирующее набор данных.
key_id : GQuark идентифицирующий элемент данных.
data : элемент данных.
destroy_func : функция вызываемая при удалении элемента данных. Эта функция вызывается с элементом данных и может использоваться для освобождения любой памяти распределённой для него.

GDestroyNotify ()

void (*GDestroyNotify) (gpointer data);

Определяет тип функции которая вызывается когда элемент уничтожается. В неё помещается указатель на элемент данных и она должна освободить всю память и все ресурсы распределённые для этого элемента.

data : элемент данных.

g_dataset_id_get_data ()

gpointer g_dataset_id_get_data (gconstpointer dataset_location, GQuark key_id);

Выдает элемент данных соответствующий GQuark.

dataset_location : расположение идентифицирующее набор данных.
key_id : GQuark идентифицирующий элемент данных.
Возвращает : элемент данных соответствующий GQuark, или NULL если он не найден.

g_dataset_id_remove_data()

#define g_dataset_id_remove_data(l, k)

Удаляет элемент данных из набора данных. Функция уничтожения элемента данных вызывается если была установлена.

l : расположение идентифицирующее набор данных.
k : GQuark идентифицирующий элемент данных.

g_dataset_id_remove_no_notify ()

gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location, GQuark key_id);

Удаляет элемент, не вызывая разрушающую функцию для него.

dataset_location : расположение идентифицирующее набор данных.
key_id : GQuark ID идентифицирующий элемент данных.
Возвращает : предыдущие данные с key_id, или NULL если нет.

g_dataset_set_data()

#define g_dataset_set_data(l, k, d)

Устанавливает данные соответствующие указанному строковому идентификатору.

l : расположение идентифицирующее набор данных.
k : строка строка идентифицирующая элемент данных.
d : элемент данных.

g_dataset_set_data_full()

#define g_dataset_set_data_full(l, k, d, f)

Устанавливает данные соответствующие указанному строковому идентификатору, и функцию уничтожающую элемент данных.

l : расположение идентифицирующее набор данных.
k : строка строка идентифицирующая элемент данных.
d : элемент данных.
f : функция вызываемая когда удаляется элемент данных. Эта функция вызывается с элементом данных и может использоваться для освобождения любой памяти и ресурсов распределённых для него.

g_dataset_get_data()

#define g_dataset_get_data(l, k)

Выдаёт элемент данных соответствующий строке.

l : расположение идентифицирующее набор данных.
k : строка идентифицирующая элемент данных.
Возвращает : элемент данных соответствующий строке, или NULL если он не найден.

g_dataset_remove_data()

#define g_dataset_remove_data(l, k)

Удаляет элемент данных соответствующий строке. Она вызывает функцию уничтожения если та установлена.

l : расположение идентифицирующее набор данных.
k : строка identifying элемент данных.

g_dataset_remove_no_notify()

#define g_dataset_remove_no_notify(l, k)

Удаляет элемент, без вызова функции уничтожения.

l : расположение идентифицирующее набор данных.
k : строка идентифицирующая элемент данных.

g_dataset_foreach ()

void g_dataset_foreach (gconstpointer dataset_location, GDataForeachFunc func, gpointer user_data);

Вызывает указанную функцию для каждого элемента данных который связан с указанным расположением. Помните что эта функция потоко-небезопасна. Поэтому если datalist не может быть защищен от любых изменений в течении вызова этой функции, она не должна вызываться.

dataset_location : расположение идентифицирующее набор данных.
func : функция вызываемая для каждого элемента данных.
user_data : пользовательские данные помещаемые в функцию.

GDataForeachFunc ()

void (*GDataForeachFunc) (GQuark key_id, gpointer data, gpointer user_data);

Определяет тип функции помещаемой в g_dataset_foreach(). Она вызывается с каждым GQuark id и связывает элемент днных, вместе с параметром user_data поставляемым в g_dataset_foreach().

key_id : GQuark идентифицирующий элемент данных.
data : элемент данных.
user_data : пользовательские данные для g_dataset_foreach().

g_dataset_destroy ()

void g_dataset_destroy (gconstpointer dataset_location);

Уничтожает набор данных, освобождая всю распределённую память и вызывая любую функцию уничтожения установленную для элементов данных.

dataset_location : расположение идентифицирующее набор данных.