| Справочное описание GObject | ||||
|---|---|---|---|---|
#include <glib-object.h> #define G_TYPE_IS_PARAM (type) #define G_PARAM_SPEC (pspec) #define G_IS_PARAM_SPEC (pspec) #define G_PARAM_SPEC_CLASS (pclass) #define G_IS_PARAM_SPEC_CLASS (pclass) #define G_PARAM_SPEC_GET_CLASS (pspec) #define G_PARAM_SPEC_TYPE (pspec) #define G_PARAM_SPEC_TYPE_NAME (pspec) #define G_PARAM_SPEC_VALUE_TYPE (pspec) GParamSpec; GParamSpecClass; enum GParamFlags; #define G_PARAM_READWRITE #define G_PARAM_STATIC_STRINGS #define G_PARAM_MASK #define G_PARAM_USER_SHIFT GParamSpec* g_param_spec_ref (GParamSpec *pspec); void g_param_spec_unref (GParamSpec *pspec); void g_param_spec_sink (GParamSpec *pspec); GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec); void g_param_value_set_default (GParamSpec *pspec, GValue *value); gboolean g_param_value_defaults (GParamSpec *pspec, GValue *value); gboolean g_param_value_validate (GParamSpec *pspec, GValue *value); gboolean g_param_value_convert (GParamSpec *pspec, const GValue *src_value, GValue *dest_value, gboolean strict_validation); gint g_param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2); const gchar* g_param_spec_get_name (GParamSpec *pspec); const gchar* g_param_spec_get_nick (GParamSpec *pspec); const gchar* g_param_spec_get_blurb (GParamSpec *pspec); gpointer g_param_spec_get_qdata (GParamSpec *pspec, GQuark quark); void g_param_spec_set_qdata (GParamSpec *pspec, GQuark quark, gpointer data); void g_param_spec_set_qdata_full (GParamSpec *pspec, GQuark quark, gpointer data, GDestroyNotify destroy); gpointer g_param_spec_steal_qdata (GParamSpec *pspec, GQuark quark); GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec); gpointer g_param_spec_internal (GType param_type, const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); GParamSpecTypeInfo; GType g_param_type_register_static (const gchar *name, const GParamSpecTypeInfo *pspec_info); GParamSpecPool; GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing); void g_param_spec_pool_insert (GParamSpecPool *pool, GParamSpec *pspec, GType owner_type); void g_param_spec_pool_remove (GParamSpecPool *pool, GParamSpec *pspec); GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool, const gchar *param_name, GType owner_type, gboolean walk_ancestors); GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool, GType owner_type, guint *n_pspecs_p); GList* g_param_spec_pool_list_owned (GParamSpecPool *pool, GType owner_type);
GParamSpec is an object structure that encapsulates the metadata required to specify parameters, such as e.g. GObject properties.
Имя параметра должно начинаться с букв (a-z или A-Z). Последующие символы могут быть буквами, цифрами или символом '-'. Все другие символы заменяются символом '-' в процессе конструирования. Результат этого замещения называется каноническим именем параметра.
#define G_TYPE_IS_PARAM(type) (G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM)
Определяет соответствует ли type "is a" G_TYPE_PARAM.
type : |
GType ID |
#define G_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
Преобразует производный объект GParamSpec (например тип GParamSpecInt) в объект GParamSpec.
pspec : |
допустимая структура GParamSpec |
#define G_IS_PARAM_SPEC(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM))
Проверяет является ли pspec "is a" допустимой структурой
GParamSpec типа
G_TYPE_PARAM
или производной.
pspec : |
GParamSpec |
#define G_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass))
Преобразует производную структуру GParamSpecClass в структуру GParamSpecClass.
pclass : |
допустимая структура GParamSpecClass |
#define G_IS_PARAM_SPEC_CLASS(pclass) (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM))
Проверяет является ли pclass "is a" допустимой структурой
GParamSpecClass типа
G_TYPE_PARAM или производной.
pclass : |
GParamSpecClass |
#define G_PARAM_SPEC_GET_CLASS(pspec) (G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
Находит GParamSpecClass из GParamSpec.
pspec : |
допустимая структура GParamSpec |
#define G_PARAM_SPEC_TYPE(pspec) (G_TYPE_FROM_INSTANCE (pspec))
Находит GType этой pspec.
pspec : |
допустимая структура GParamSpec |
#define G_PARAM_SPEC_TYPE_NAME(pspec) (g_type_name (G_PARAM_SPEC_TYPE (pspec)))
Находит GType имя этой pspec.
pspec : |
допустимая структура GParamSpec |
#define G_PARAM_SPEC_VALUE_TYPE(pspec) (G_PARAM_SPEC (pspec)->value_type)
Находит GType для инициализации GValue этого параметра.
pspec : |
допустимая структура GParamSpec |
typedef struct {
GTypeInstance g_type_instance;
gchar *name;
GParamFlags flags;
GType value_type;
GType owner_type; /* class or interface using this property */
} GParamSpec;
Все поля сструктуры GParamSpec закрыты и не должны использоваться непосредственно, за исключением следующих:
GTypeInstance
g_type_instance; |
закрытая часть GTypeInstance |
gchar
*name; |
имя этого параметра |
GParamFlags flags; |
GParamFlags флаги для этого параметра |
GType value_type; |
тип GValue для этого параметра |
GType owner_type; |
тип GType который использует (вводит) этот параметр |
typedef struct {
GTypeClass g_type_class;
GType value_type;
void (*finalize) (GParamSpec *pspec);
/* GParam methods */
void (*value_set_default) (GParamSpec *pspec,
GValue *value);
gboolean (*value_validate) (GParamSpec *pspec,
GValue *value);
gint (*values_cmp) (GParamSpec *pspec,
const GValue *value1,
const GValue *value2);
} GParamSpecClass;
Классовая структура для GParamSpec.
Обычно, классовая GParamSpec заполняется с помощью
g_param_type_register_static().
GTypeClass g_type_class; |
родительский класс |
GType value_type; |
тип GValue для этого параметра |
finalize () |
Функция финализации экземпляра (опционально), должна прикрепляться к методу родительского класса. |
value_set_default () |
Сбрасывает value в значение по умолчанию для этого типа
(рекомендуемое значение по умолчанию - g_value_reset()),
смотрите g_param_value_set_default().
|
value_validate () |
Гарантирует что содержимое value выполняет спецификацию
установленную этим типом (опционально), смотрите g_param_value_set_validate().
|
values_cmp () |
Сравнивает value1 с value2 согласно этого типа
(рекомендуемое значение по умолчанию - memcmp()),
смотрите g_param_values_cmp().
|
typedef enum
{
G_PARAM_READABLE = 1 << 0,
G_PARAM_WRITABLE = 1 << 1,
G_PARAM_CONSTRUCT = 1 << 2,
G_PARAM_CONSTRUCT_ONLY = 1 << 3,
G_PARAM_LAX_VALIDATION = 1 << 4,
G_PARAM_STATIC_NAME = 1 << 5,
#ifndef G_DISABLE_DEPRECATED
G_PARAM_PRIVATE = G_PARAM_STATIC_NAME,
#endif
G_PARAM_STATIC_NICK = 1 << 6,
G_PARAM_STATIC_BLURB = 1 << 7
} GParamFlags;
Через значения GParamFlags, могут конфигурироваться определённые аспекты параметра.
G_PARAM_READABLE |
параметр можно прочесть |
G_PARAM_WRITABLE |
параметр можно записать |
G_PARAM_CONSTRUCT |
параметр будет установлен на конструкцию объекта |
G_PARAM_CONSTRUCT_ONLY |
параметр будет установлен только на конструкцию объекта |
G_PARAM_LAX_VALIDATION |
при преобразовании параметра не требуется строгая проверка правильности
(смотрите g_param_value_convert())
|
G_PARAM_STATIC_NAME |
строка используемая как имя параметра при конструировании параметра гарантированно останется допустимой и неизменной в процессе жизненного цикла параметра. Начиная с версии 2.8 |
G_PARAM_PRIVATE |
|
G_PARAM_STATIC_NICK |
|
G_PARAM_STATIC_BLURB |
строка используемая как описание параметра при конструировании параметра гарантированно останется допустимой и неизменной в процессе жизненного цикла параметра. Начиная с версии 2.8 |
#define G_PARAM_READWRITE (G_PARAM_READABLE | G_PARAM_WRITABLE)
GParamFlags значение псевдонима для
G_PARAM_READABLE | G_PARAM_WRITABLE.
#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
GParamFlags значение псевдонима для G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB.
#define G_PARAM_MASK (0x000000ff)
Маска содержащая биты GParamSpec.flags которые зарезервированы для GLib.
#define G_PARAM_USER_SHIFT (8)
Минимальный сдвиг счетчика используемый для флагов определяемых пользователем, сохраняемых в GParamSpec.flags.
GParamSpec* g_param_spec_ref (GParamSpec *pspec);
Увеличивает количество ссылок pspec.
pspec : |
допустимая структура GParamSpec |
| Возвращает : | GParamSpec которая была помещена в эту функцию |
void g_param_spec_unref (GParamSpec *pspec);
Уменьшает количество ссылок pspec.
pspec : |
допустимая структура GParamSpec |
void g_param_spec_sink (GParamSpec *pspec);
Инициализирует единицей счётчик ссылок вновь созданной GParamSpec,
даже если g_param_spec_ref() не была вызвана явно.
Таким образом счётчик ссылок помечается как "плавающий" ("floating"), пока кто нибудь не вызовет
g_param_spec_ref (pspec); g_param_spec_sink (pspec);
в такой последовательности, переинициализировав счётчик ссылок
(таким образом счётчик ссылок pspec остаётся равным 1, но больше не помечен как "плавающий").
pspec : |
допустимая структура GParamSpec |
GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec);
Удобная функция для создания ссылки и отмены плавающей GParamSpec.
pspec : |
допустимая структура GParamSpec |
| Возвращает : | GParamSpec которая помещается в функцию |
Начиная с версии 2.10
void g_param_value_set_default (GParamSpec *pspec, GValue *value);
Устанавливает value в значение по умолчанию как определено в
pspec.
pspec : |
допустимая структура GParamSpec |
value : |
GValue правильного типа для
pspec
|
gboolean g_param_value_defaults (GParamSpec *pspec, GValue *value);
Проверяет содержит ли value значение по умолчанию определённое в
pspec.
pspec : |
допустимая структура GParamSpec |
value : |
GValue правильного типа для
pspec
|
| Возвращает : | содержит ли value каноническое значение по умолчанию для этой
pspec
|
gboolean g_param_value_validate (GParamSpec *pspec, GValue *value);
Гарантирует что содержимое value соответствует спецификации установленной с помощью
pspec. Например, GParamSpecInt может потребовать чтобы целочисленные хранящиеся в value
были не меньше чем -42 и не больше чем +42. Если целочисленное содержимое value выходит за этот
диапазон, оно соответственно изменяется, чтобы результирующее значение вписывалось в диапазон -42 .. +42.
pspec : |
допустимая структура GParamSpec |
value : |
GValue правильного типа для
pspec
|
| Возвращает : | необходимо ли изменить value чтобы гарантировать его допустимость
|
gboolean g_param_value_convert (GParamSpec *pspec, const GValue *src_value, GValue *dest_value, gboolean strict_validation);
Преобразует src_value в dest_value если возможно,
а зтем утверждает dest_value для соответствия pspec.
Если strict_validation это TRUE, эта функция выполнится успешно только если преобразованный
dest_value соответствует pspec без изменений.
Смотрите также g_value_type_transformable(), g_value_transform() и
g_param_value_validate().
pspec : |
допустимая структура GParamSpec |
src_value : |
исходная GValue |
dest_value : |
целевая GValue правильного типа для
pspec
|
strict_validation : |
TRUE требует чтобы
dest_value соответствовало pspec без изменений
|
| Возвращает : | TRUE
если преобразование и утверждение истинности полностью выполнены, иначе
FALSE и
dest_value остаётся нетронутым.
|
gint g_param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2);
Сравнивает value1 с value2 согласно
pspec, и возвращает -1, 0 или +1,
если value1 найдено но меньше, равно или больше чем value2,
соответственно.
pspec : |
допустимая структура GParamSpec |
value1 : |
GValue правильного типа для
pspec
|
value2 : |
GValue правильного типа для
pspec
|
| Возвращает : | -1, 0 или +1, для меньше, равно или больше чем результат |
const gchar* g_param_spec_get_name (GParamSpec *pspec);
Возвращает имя GParamSpec.
pspec : |
допустимая структура GParamSpec |
| Возвращает : | имя pspec.
|
const gchar* g_param_spec_get_nick (GParamSpec *pspec);
Возвращает псевдоним GParamSpec.
pspec : |
допустимая структура GParamSpec |
| Возвращает : | псевдоним pspec.
|
const gchar* g_param_spec_get_blurb (GParamSpec *pspec);
Возвращает короткое описание GParamSpec.
pspec : |
допустимая структура GParamSpec |
| Возвращает : | короткое описание pspec.
|
gpointer g_param_spec_get_qdata (GParamSpec *pspec, GQuark quark);
Получает назад указатели пользовательских данных сохранённые через
g_param_spec_set_qdata().
pspec : |
допустимая структура GParamSpec |
quark : |
GQuark, именующий указатель пользовательских данных |
| Возвращает : | установленный указатель пользовательских данных, или
NULL
|
void g_param_spec_set_qdata (GParamSpec *pspec, GQuark quark, gpointer data);
Устанавливает непрозрачный, именованный указатель в
GParamSpec. Имя определяется через
GQuark (найденный например через
g_quark_from_static_string()),
а указатель может быть возвращён из pspec с помощью
g_param_spec_get_qdata().
Устанавливаемый набор указателей пользовательских данных, переписывает (освобождает) старый набор указателей,
используя NULL,
так как указатель фактически удаляет хранящиеся данные.
pspec : |
GParamSpec для хранения установленного указателя пользовательских данных |
quark : |
GQuark, именованный указатель пользовательских данных |
data : |
непрозрачный указатель пользовательских данных |
void g_param_spec_set_qdata_full (GParamSpec *pspec, GQuark quark, gpointer data, GDestroyNotify destroy);
Эта функция работает как g_param_spec_set_qdata(),
но дополнительно, может быть определена функция void (*destroy) (gpointer) которая вызывается с
data в качестве аргумента при финализации pspec,
или данные перезаписываются вызовом g_param_spec_set_qdata() с тем же самым quark.
pspec : |
GParamSpec для хранения установленного указателя пользовательских данных |
quark : |
GQuark, именующий указатель пользовательских данных |
data : |
непрозрачный указатель пользовательских данных |
destroy : |
функция вызываемая с data в качестве аргумента,
когда data необходимо освободить
|
gpointer g_param_spec_steal_qdata (GParamSpec *pspec, GQuark quark);
Получает обратно указатели пользовательских данных сохранённые через
g_param_spec_set_qdata() и удаляет
data из pspec без вызова её destroy() функции (если была установлена).
Обычно, вызов этой функции требуется только для обновления указателей пользовательских данных с уведомлением о разрушении.
pspec : |
GParamSpec для получения сохраненного указателя пользовательских данных |
quark : |
GQuark, именующий указатель пользовательских данных |
| Возвращает : | установленный указатель пользовательских данных, или
NULL
|
GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec);
Если спецификация параметра перенаправила операции в другую спецификацию параметра (paramspec),
возвращается эта спецификация параметра. Перенаправление обычно используется для обеспечения новой реализации свойств в производном типе
сохраняя все свойства родительского типа. Перенаправление устанавливается созданием свойства типа
GParamSpecOverride.
Смотрите пример использования этой возможности в g_object_override_property().
pspec : |
GParamSpec |
| Возвращает : | спецификация параметра в которую переадресованы операции, или
NULL если нет.
|
Начиная с версии 2.4
gpointer g_param_spec_internal (GType param_type, const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags);
Создаёт новый экземпляр GParamSpec.
Имя свойства содержит ASCII буквы и цифры, разделённые символом '-' или '_'. Первый символ имени свойства должен быть буквой. Имена которые нарушают это правило приводят к неопределённому поведению.
При создании и поиске GParamSpec, каждый разделитель может быть использован, но они не могут быть смешаны. Использование '-' наиболее эффективно и фактически требуется когда имена свойств используются как детальные строки для сигналов.
param_type : |
GType для свойства; должна быть производной из G_TYPE_PARAM |
name : |
каноническое имя свойства |
nick : |
псевдоним свойства |
blurb : |
короткое описание свойства |
flags : |
комбинация GParamFlags |
| Возвращает : | вновь распределённый экземпляр GParamSpec |
typedef struct {
/* type system portion */
guint16 instance_size; /* obligatory */
guint16 n_preallocs; /* optional */
void (*instance_init) (GParamSpec *pspec); /* optional */
/* class portion */
GType value_type; /* obligatory */
void (*finalize) (GParamSpec *pspec); /* optional */
void (*value_set_default) (GParamSpec *pspec, /* recommended */
GValue *value);
gboolean (*value_validate) (GParamSpec *pspec, /* optional */
GValue *value);
gint (*values_cmp) (GParamSpec *pspec, /* recommended */
const GValue *value1,
const GValue *value2);
} GParamSpecTypeInfo;
Эта структура используется для обеспечения системы типов информацией требующейся для инициализации и уничтожения (финализации)
класса параметра и его экземпляра. Инициализированная структура помещается в
g_param_type_register_static()
система типов делает глубокую копию этой сструктуры, поэтому память не используется между вызовами
g_param_type_register_static().
guint16
instance_size; |
Размер экземпляра сструктуры (объекта). |
guint16
n_preallocs; |
До версии GLib 2.10, определял количество предварительно распределённых (кешированных) экземпляров для резервирования памяти (0 указывал на отсутствие кеша). Начиная с версии GLib 2.10, игнорируется, так как теперь экземпляры распределяются с помощью slice allocator. |
instance_init () |
Расположение функции инициализации экземпляра (опционально). |
GType value_type; |
GType значение соответствующее этой GParamSpec |
finalize () |
Функция финализации экземпляра (опционально). |
value_set_default () |
Сбрасывает value в значение по умолчанию для pspec
(рекомендуемое значение по умолчанию - g_value_reset()),
смотрите g_param_value_set_default().
|
value_validate () |
Гарантирует что содержимое value соответствует спецификации
pspec (опционально), смотрите g_param_value_set_validate().
|
values_cmp () |
Сравнивает value1 с value2
согласно pspec (рекомендуемое значение по умолчанию - memcmp()),
смотрите g_param_values_cmp().
|
GType g_param_type_register_static (const gchar *name, const GParamSpecTypeInfo *pspec_info);
Регистрирует name как имя нового статичного типа унаследованного из
G_TYPE_PARAM.
Система типов использует информацию содержащуюся в структуре
GParamSpecTypeInfo указанной с помощью
info для управления
GParamSpec и её экземплярами.
name : |
0-завершённая строка используемая как имя нового типа GParamSpec. |
pspec_info : |
GParamSpecTypeInfo для этого типа GParamSpec. |
| Возвращает : | Новый идентификатор типа. |
typedef struct _GParamSpecPool GParamSpecPool;
GParamSpecPool содержащая накопленные GParamSpec быстрый доступ к которым может осуществляться по имени и владельцу. Реализованное свойство GObject система использует как пул для хранения свойств GParamSpecs всех типовых объектов.
GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing);
Создаёт новую GParamSpecPool.
Если type_prefixing это
TRUE, поиск во вновь созданном пуле
позволит определять владельца как отделённый двоеточием префикс имени свойства, например "GtkContainer:border-width".
Эта особенность устарела, поэтому вы должны всегда устанавливать type_prefixing в значение
FALSE.
type_prefixing : |
Поддерживает ли пул имена свойств с типовыми префиксами. |
| Возвращает : | вновь распределённый GParamSpecPool. |
void g_param_spec_pool_insert (GParamSpecPool *pool, GParamSpec *pspec, GType owner_type);
Вставляет GParamSpec в пул.
pool : |
GParamSpecPool. |
pspec : |
вставляемая GParamSpec |
owner_type : |
GType идентифицирующий владельца
pspec
|
void g_param_spec_pool_remove (GParamSpecPool *pool, GParamSpec *pspec);
Удаляет GParamSpec из пула.
pool : |
GParamSpecPool |
pspec : |
GParamSpec для удаления |
GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool, const gchar *param_name, GType owner_type, gboolean walk_ancestors);
Ищет GParamSpec в пуле.
pool : |
GParamSpecPool |
param_name : |
имя для поиска |
owner_type : |
владелец для поиска |
walk_ancestors : |
Если TRUE,
попробует искать GParamSpec с
param_name которая принадлежит предку owner_type.
|
| Возвращает : | Найденная GParamSpec, или
NULL если соответствующая
GParamSpec не найдена.
|
GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool, GType owner_type, guint *n_pspecs_p);
Получает массив всех GParamSpec принадлежащих
owner_type в пуле.
pool : |
GParamSpecPool |
owner_type : |
владелец для поиска |
n_pspecs_p : |
расположение длины возвращаемого массива |
| Возвращает : | вновь распределённый массив содержащий указатели на все
GParamSpec принадлежащие
owner_type в пуле
|
GList* g_param_spec_pool_list_owned (GParamSpecPool *pool, GType owner_type);
Получает GList всех
GParamSpec принадлежащие
owner_type в пуле.
pool : |
GParamSpecPool |
owner_type : |
владелец для поиска |
| Возвращает : | GList всех
GParamSpec принадлежащие
owner_type в пуле GParamSpecs.
|