The OpenNET Project / Index page

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

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

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

gpointer            (*GBoxedCopyFunc)                   (gpointer boxed);

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

boxed : Упакованная структура для копирования.
Возвращает : Вновь созданная копия упакованной сструктуры.

GBoxedFreeFunc ()

void                (*GBoxedFreeFunc)                   (gpointer boxed);

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

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

g_boxed_copy ()

gpointer            g_boxed_copy                        (GType boxed_type,
                                                         gconstpointer src_boxed);

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

boxed_type : Тип src_boxed.
src_boxed : Упакованная структура для копирования.
Возвращает : Вновь созданная копия упакованной сструктуры.

g_boxed_free ()

void                g_boxed_free                        (GType boxed_type,
                                                         gpointer boxed);

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

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

g_boxed_type_register_static ()

GType               g_boxed_type_register_static        (const gchar *name,
                                                         GBoxedCopyFunc boxed_copy,
                                                         GBoxedFreeFunc boxed_free);

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

name : Имя нового упаковочного типа.
boxed_copy : Функция копирования упакованной сструктуры.
boxed_free : Функция освобождения упакованной сструктуры.
Возвращает : Новый произведённый G_TYPE_BOXED типовой id для name.

g_pointer_type_register_static ()

GType               g_pointer_type_register_static      (const gchar *name);

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

name : имя нового типа указателя.
Возвращает : новый производный G_TYPE_POINTER типовой id для name.

G_TYPE_HASH_TABLE

#define	G_TYPE_HASH_TABLE	(g_hash_table_get_type ())

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

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


G_TYPE_DATE

#define	G_TYPE_DATE	        (g_date_get_type ())

GType для GDate.


G_TYPE_GSTRING

#define	G_TYPE_GSTRING		(g_gstring_get_type ())

GType для GString.


G_TYPE_STRV

#define	G_TYPE_STRV	        (g_strv_get_type ())

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

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

g_object_class_install_property (object_class,
                                 PROP_AUTHORS,
                                 g_param_spec_boxed ("authors",
                                                     _("Authors"),
                                                     _("List of authors"),
                                                     G_TYPE_STRV,
                                                     G_PARAM_READWRITE));


gchar *authors[] = { "Owen", "Tim", NULL };
g_object_set (obj, "authors", authors, NULL);


gchar *writers[];
g_object_get (obj, "authors", &writers, NULL);
/* do something with writers */
g_strfreev (writers);

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


G_TYPE_REGEX

#define	G_TYPE_REGEX		(g_regex_get_type ())

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

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


GStrv

typedef gchar** GStrv;

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

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

GParamSpecBoxed, g_param_spec_boxed()




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

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