GBoxed

GBoxed — Механизм упаковки непрозрачных C структур регистрируемых системой типов

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


#include <glib-object.h>


gpointer            (*GBoxedCopyFunc)                   (gpointer boxed);
void                (*GBoxedFreeFunc)                   (gpointer boxed);
gpointer            g_boxed_copy                        (GType boxed_type,
                                                         gconstpointer src_boxed);
void                g_boxed_free                        (GType boxed_type,
                                                         gpointer boxed);
GType               g_boxed_type_register_static        (const gchar *name,
                                                         GBoxedCopyFunc boxed_copy,
                                                         GBoxedFreeFunc boxed_free);
GType               g_pointer_type_register_static      (const gchar *name);

#define             G_TYPE_HASH_TABLE
#define             G_TYPE_DATE
#define             G_TYPE_GSTRING
#define             G_TYPE_STRV
#define             G_TYPE_REGEX
typedef             GStrv;

Описание

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

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

Детали

GBoxedCopyFunc ()

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

boxed :

Упакованная структура для копирования.

Возвращает :

Вновь созданная копия упакованной сструктуры.

GBoxedFreeFunc ()

Эта функция обеспечивается пользователем и должна освобождать структуру помещённую в контейнере.

boxed :

Упакованная структура для освобождения.

g_boxed_copy ()

Обеспечивает копию упакованной сструктуры src_boxed с типом boxed_type.

boxed_type :

Тип src_boxed.

src_boxed :

Упакованная структура для копирования.

Возвращает :

Вновь созданная копия упакованной сструктуры.

g_boxed_free ()

Освобождает упакованную структуру boxed с типом boxed_type.

boxed_type :

Тип boxed.

boxed :

Упакованная структура для освобождения.

g_boxed_type_register_static ()

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

name :

Имя нового упаковочного типа.

boxed_copy :

Функция копирования упакованной сструктуры.

boxed_free :

Функция освобождения упакованной сструктуры.

Возвращает :

Новый произведённый G_TYPE_BOXED типовой id для name.

g_pointer_type_register_static ()

Создаёт новый производный G_TYPE_POINTER типовой id для нового типа указателя с именем name.

name :

имя нового типа указателя.

Возвращает :

новый производный G_TYPE_POINTER типовой id для name.

G_TYPE_HASH_TABLE

GType упаковочного типа для содержания ссылки GHashTable.

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

G_TYPE_DATE

GType для GDate.

G_TYPE_GSTRING

GType для GString.

G_TYPE_STRV

GType для упаковочного типа содержащего NULL-завершённый массив строк.

Фрагменты кода в следующем примере демонстрируют использование типового свойства G_TYPE_STRV с помощью g_object_class_install_property(), g_object_set() и g_object_get().

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

G_TYPE_REGEX

GType упаковочного типа содержащий ссылку GRegex.

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

GStrv

'C' репрезентабельное типовое имя для G_TYPE_STRV.

Смотрите также

GParamSpecBoxed, g_param_spec_boxed()

Last updated

Was this helpful?