The OpenNET Project / Index page

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

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

Keyed Data Lists

Keyed Data Lists — Списки элементов данных которые являются доступными при помощи строки или GQuark идентификатора.

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


#include <glib.h>


            GData;
void        g_datalist_init                 (GData **datalist);

#define     g_datalist_id_set_data          (dl, q, d)
void        g_datalist_id_set_data_full     (GData **datalist,
                                             GQuark key_id,
                                             gpointer data,
                                             GDestroyNotify destroy_func);
gpointer    g_datalist_id_get_data          (GData **datalist,
                                             GQuark key_id);
#define     g_datalist_id_remove_data       (dl, q)
gpointer    g_datalist_id_remove_no_notify  (GData **datalist,
                                             GQuark key_id);

#define     g_datalist_set_data             (dl, k, d)
#define     g_datalist_set_data_full        (dl, k, d, f)
#define     g_datalist_get_data             (dl, k)
#define     g_datalist_remove_data          (dl, k)
#define     g_datalist_remove_no_notify     (dl, k)

void        g_datalist_foreach              (GData **datalist,
                                             GDataForeachFunc func,
                                             gpointer user_data);
void        g_datalist_clear                (GData **datalist);
void        g_datalist_set_flags            (GData **datalist,
                                             guint flags);
void        g_datalist_unset_flags          (GData **datalist,
                                             guint flags);
guint       g_datalist_get_flags            (GData **datalist);
#define     G_DATALIST_FLAGS_MASK

Описание

Списки ключевых данных обеспечивают списки произвольных элементов данных к которым можно обратиться либо с помощью строки, либо с помощью GQuark соответствующим строке.

GQuark метод быстрее, так как строки всё равно конвертируются в GQuarks.

Списки данных используются для связи произвольных данных с GObjects, используя g_object_set_data() и родственные функции.

Для создания списка данных, используйте g_datalist_init().

Для добавления элементов данных в список данных используйте g_datalist_id_set_data(), g_datalist_id_set_data_full(), g_datalist_set_data() и g_datalist_set_data_full().

Для получения элементов данных из списка данных используйте g_datalist_id_get_data() и g_datalist_get_data().

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

Для удаления элементов данных из списка данных используйте g_datalist_id_remove_data() и g_datalist_remove_data().

Для удаления всех элементов из списка данных, используйте g_datalist_clear().

Детали

GData

typedef struct _GData GData;

Структура GData - это непрозрачная структура данных представляющая Keyed Data List. доступ к ней должен осуществляться только с помощью следующих функций.


g_datalist_init ()

void        g_datalist_init                 (GData **datalist);

Сбрасывает список данных в NULL. Она не освобождает память и не вызывает функции уничтожения.

datalist : указатель на указатель в списке данных.

g_datalist_id_set_data()

#define     g_datalist_id_set_data(dl, q, d)

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

dl : список данных.
q : GQuark для идентификации элемента данных.
d : элемент данных, или NULL для удаления любых предыдущих элементов соответствующих q.

g_datalist_id_set_data_full ()

void        g_datalist_id_set_data_full     (GData **datalist,
                                             GQuark key_id,
                                             gpointer data,
                                             GDestroyNotify destroy_func);

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

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

g_datalist_id_get_data ()

gpointer    g_datalist_id_get_data          (GData **datalist,
                                             GQuark key_id);

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

datalist : список данных.
key_id : GQuark идентификатор элемента данных.
Возвращает : элемент данных, или NULL если он не найден.

g_datalist_id_remove_data()

#define     g_datalist_id_remove_data(dl, q)

Удаляет элемент, используя его GQuark идентификатор.

dl : список данных.
q : GQuark идентификатор элемента данных.

g_datalist_id_remove_no_notify ()

gpointer    g_datalist_id_remove_no_notify  (GData **datalist,
                                             GQuark key_id);

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

datalist : список данных.
key_id : GQuark идентификатор элемента данных.
Возвращает : предыдущие данные key_id, или NULL ели нет.

g_datalist_set_data()

#define     g_datalist_set_data(dl, k, d)

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

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

g_datalist_set_data_full()

#define     g_datalist_set_data_full(dl, k, d, f)

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

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

g_datalist_get_data()

#define     g_datalist_get_data(dl, k)

Выдаёт элемент данных, используя его строку идентификатор. Это медленнее чем g_datalist_id_get_data() потомучто строка сначала конвертируется в GQuark.

dl : список данных.
k : строка идентификатор элемента данных.
Возвращает : элемент данных, или NULL если он не найден.

g_datalist_remove_data()

#define     g_datalist_remove_data(dl, k)

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

dl : список данных.
k : строка идентификатор элемента данных.

g_datalist_remove_no_notify()

#define     g_datalist_remove_no_notify(dl, k)

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

dl : список данных.
k : строка идентификатор элемента данных.

g_datalist_foreach ()

void        g_datalist_foreach              (GData **datalist,
                                             GDataForeachFunc func,
                                             gpointer user_data);

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

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

g_datalist_clear ()

void        g_datalist_clear                (GData **datalist);

Освобождает все элементы данных в списке данных. Элементы данных уничтожаются функциями вызываемыми если она была установлена.

datalist : список данных.

g_datalist_set_flags ()

void        g_datalist_set_flags            (GData **datalist,
                                             guint flags);

Включает значение флажка для списка данных. Эта функция используется для хранения небольшого числа логических флажков в объекте со списком данных без использования любого дополнительного пространства. Она в основном бесполезна, кроме ситуаций когда пространство сильно уплотнено. (Она в основном типе GObject, например.)

datalist : указатель на расположение которое содержит список
flags : флажки для включения. Значения флажков ограничены G_DATALIST_FLAGS_MASK (в настоящее время 3; представляя два возможных логических флажка). Значение для flags которое не соответствует маске - ошибика.

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


g_datalist_unset_flags ()

void        g_datalist_unset_flags          (GData **datalist,
                                             guint flags);

Выключает значения флажка для списка данных. Смотрите g_datalist_unset_flags()

datalist : указатель на расположение которое содержит список
flags : флажки для выключения. Значения флажков ограничены G_DATALIST_FLAGS_MASK (в настоящее время 3: представляя два возможных логических флажка). Значение для flags которое не соответствует маске - ошибка.

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


g_datalist_get_flags ()

guint       g_datalist_get_flags            (GData **datalist);

Определяет значения флажков упакованных вместе со списком данных. Смотрите g_datalist_set_flags().

datalist : указатель на расположение которое содержит список
Возвращает : флажки списка данных

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


G_DATALIST_FLAGS_MASK

#define G_DATALIST_FLAGS_MASK 0x3

Битовая маска которая ограничивает возможные флажки помещаемые в g_datalist_set_flags(). Помещаемые значения флажков где флажки & ~G_DATALIST_FLAGS_MASK != 0 - это ошибка.




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

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