Справочное описание 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.
|