The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

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 : расположение идентифицирующее набор данных.



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру