GObject часть 2

g_object_new ()

gpointer            g_object_new                        (GType object_type,
                                                         const gchar *first_property_name,
                                                         ...);

Создаёт новый экземпляр GObject подтипа (subtype) и устанавливает его свойства.

Конструкционные параметры (смотрите G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) которые определены не явно, устанавливаются в их значения по умолчанию.

object_type :

типовой id подтипа GObject для экземпляра

first_property_name :

имя первого свойства

... :

значение первого свойства, опционально следующие пары name/value, зтем NULL

Возвращает :

новый экземпляр object_type

g_object_newv ()

gpointer            g_object_newv                       (GType object_type,
                                                         guint n_parameters,
                                                         GParameter *parameters);

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

Конструкционные параметры (смотрите G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) которые не были установлены явно, устанавливаются в их значения по умолчанию.

object_type :

типовой id подтипа GObject для экземпляра

n_parameters :

длина массива parameters

parameters :

массив GParameter

Возвращает :

новый экземпляр object_type

GParameter

Вспомогательная структура GParameter используется для размещения параметных пар name/value в g_object_newv().

const gchar *name;

имя параметра

GValue value;

значение параметра

g_object_ref ()

Увеличивает количество ссылок object.

object :

Возвращает :

тот же object

g_object_unref ()

Уменьшает количество ссылок object. Когда количество ссылок достигает 0, объект финализируется (то есть память связанная с этим объектом освобождается).

object :

g_object_ref_sink ()

Увеличивает количество ссылок object, и возможно удаляет плавающую ссылку, если object имеет плавающую ссылку.

Другими словами, если объект плавающий, то этот вызов "принимает владение" плавающей ссылкой, преобразует её в обычную ссылку очищая плавающий флаг оставляя неизменным количество ссылок. Если объект не плавающий, то этот вызов добавляет обычную ссылку увеличивая количество ссылок на одну.

object :

Возвращает :

object

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

GInitiallyUnowned

Все поля в структуре GInitiallyUnowned являются закрытыми для реализации GInitiallyUnowned и к ним нет непосредственного доступа.

GInitiallyUnownedClass

Классовая структура для типа GInitiallyUnowned.

G_TYPE_INITIALLY_UNOWNED

Тип для GInitiallyUnowned.

g_object_is_floating ()

Проверяет имеет ли object плавающую ссылку.

object :

Возвращает :

TRUE если object имеет плавающую ссылку

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

g_object_force_floating ()

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

object :

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

GWeakNotify ()

Функция GWeakNotify может быть добавлена в объект как callback-функция которая вызывается когда объект финализирован. Так как объект уже финализирован когда вызываетсяGWeakNotify, вы ничего не можете делать с объектом, кроме как использовать его адрес как hash-index или нечто подобное.

data :

данные обеспечиваемые при установке слабых ссылок

where_the_object_was :

объект для финализации

g_object_weak_ref ()

Добавляет слабую ссылку callback-функции в объект. Слабые ссылки используются для уведомления при финализации объекта. Они называются "слабые ссылки" ("weak references") потому что позволяют вам безопасно удерживать указатель на объект без вызова g_object_ref() (g_object_ref() добавляет строгую ссылку, которая заставляет объект существовать).

object :

GObject для слабой ссылки

notify :

callback-функция вызываемая перед освобождением объекта

data :

дополнительные данные помещаемые в уведомление

g_object_weak_unref ()

Удаляет слабую ссылку callback-функции для объекта.

object :

GObject для удаления слабой ссылки

notify :

callback-функция для поиска

data :

данные для поиска

g_object_add_weak_pointer ()

Добавляет слабую ссылку из weak_pointer в object указывая что указатель расположенный в weak_pointer_location допустим только в течение жизненного цикла object. Когда object финализирован, weak_pointer будет установлен в NULL.

object :

Объект для слабой ссылки.

weak_pointer_location :

адрес указателя в памяти.

g_object_remove_weak_pointer ()

Удаляет слабую ссылку из object которая была предварительно добавлена используя g_object_add_weak_pointer(). weak_pointer_location должен соответствовать использованному с g_object_add_weak_pointer().

object :

Объект для слабой ссылки.

weak_pointer_location :

адрес указателя в памяти.

GToggleNotify ()

Callback-функция используемая для уведомления о переключении состояния ссылки. Смотрите g_object_add_toggle_ref().

data :

Callback-данные помещаемые в g_object_add_toggle_ref()

object :

Объект для которого вызвана g_object_add_toggle_ref().

is_last_ref :

TRUE если переключаемая ссылка последняя ссылка на объект. FALSE если переключаемая ссылка была последней ссылкой а теперь есть другая ссылка.

g_object_add_toggle_ref ()

Увеличивает счётчик ссылок объекта на одну и устанавливает callback-функцию вызываемую когда все ссылки на объект будут сброшены, или когда это уже последняя ссылка на объект и другая ссылка установлена.

Эти функциональные возможности предназначены для привязки object к объекту посреднику управляемому другим менеджером памяти. Это выполняется двумя парами ссылок: строгая ссылка добавляется g_object_add_toggle_ref() а противоположная в объект посредник который является либо строгой ссылкой либо слабой ссылкой.

Установка заключается в том что когда нет других ссылок на object, только слабая ссылка размещается в обратном направлении из object в объект посредник, но когда есть другие ссылки размещённые в object, строгая ссылка удерживается. Callback-функция notify вызывается когда ссылка из object в объекте посреднике должна быть переключена из строгой в слабую (is_last_ref true) или из слабой в строгую (is_last_ref false).

Так как (обычная) ссылка должна содержаться в объекте перед вызовом g_object_toggle_ref(), начальное состояние обратной ссылки всегда строгое (strong).

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

object :

notify :

функция вызываемая когда ссылка является последней ссылкой на объект, или больше не последняя ссылка на объект.

data :

данные помещаемые в notify

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

g_object_remove_toggle_ref ()

Удаляет ссылку добавленную с помощью g_object_add_toggle_ref(). Количество ссылок на объект уменьшается на одну.

object :

notify :

функция вызываемая когда ссылка является последней ссылкой на объект, или когда она больше не является последней ссылкой на объект.

data :

данные помещаемые в notify

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

g_object_connect ()

Удобная функция для подключения множество сигналов сразу.

Спецификации сигналов ожидаемых этой функцией имеет форму "modifier::signal_name", где modifier может быть одним из следующего:

signal

эквивалент g_signal_connect_data (...)

object_signal, object-signal

эквивалент g_signal_connect_object (...)

swapped_signal, swapped-signal

эквивалент g_signal_connect_data (..., G_CONNECT_SWAPPED)

swapped_object_signal, swapped-object-signal

эквивалент g_signal_connect_object (..., G_CONNECT_SWAPPED)

signal_after, signal-after

эквивалент g_signal_connect_data (..., G_CONNECT_AFTER)

object_signal_after, object-signal-after

эквивалент g_signal_connect_object (..., G_CONNECT_AFTER)

swapped_signal_after, swapped-signal-after

эквивалент g_signal_connect_data (..., G_CONNECT_SWAPPED | G_CONNECT_AFTER)

swapped_object_signal_after, swapped-object-signal-after

эквивалент g_signal_connect_object (..., G_CONNECT_SWAPPED | G_CONNECT_AFTER)

object :

signal_spec :

спецификация первого сигнала

... :

GCallback-функция для первого сигнала, зтем данные для первого сигнала, зтем опционально следующие spec/callback/data, завершается NULL

Возвращает :

object

g_object_disconnect ()

Удобная функция для отключения множества сигналов сразу.

Спецификация сигналов ожидаемых этой функцией имеет форму "any_signal", которая означает отключение любых сигналов с соответствующими callback-функциями и данными, или "any_signal::signal_name", которая отключает только сигнал с именем "signal_name".

object :

signal_spec :

спецификация для первого сигнала

... :

GCallback-функция для первого сигнала, зтем данные для первого сигнала, зтем опционально остальные spec/callback/data, завершается NULL

g_object_set ()

Устанавливает свойства на объект.

object :

first_property_name :

имя первого устанавливаемого свойства

... :

значение для первого свойства, зтем опционально следующие name/value pairs, завершается NULL

g_object_get ()

Получает свойства объекта.

В основном, копия делается содержимого свойства и вызывающий функцию отвечает за освобождение памяти так как это делается для типа, например вызовом g_free() илиg_object_unref().

Пример 5. Использование g_object_get()

Пример использования g_object_get() для получения содержимого трёх свойств - одного типа G_TYPE_INT, одного типа G_TYPE_STRING и одного типа ""

object :

first_property_name :

имя первого свойства для получения

... :

возвращаемое расположение для первого свойства, зтем опционально следующие пары name/return, завершается NULL

g_object_notify ()

Издаёт сигнал "notify" для свойства property_name в object.

object :

property_name :

имя свойства установленное в класс object.

g_object_freeze_notify ()

Останавливает эмиссию сигнала "notify" в object. Сигналы ставятся в очередь пока g_object_thaw_notify() не вызвана для object.

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

object :

g_object_thaw_notify ()

Обратный эффект от предыдущего вызова g_object_freeze_notify(). Это заставит все сигналы "notify" поставленные в очередь издаться на object.

object :

g_object_get_data ()

Получает именованное поле из таблицы объектов ассоциации (смотрите g_object_set_data()).

object :

GObject содержащий ассоциации

key :

имя ключа для этой ассоциации

Возвращает :

данные если найдены, или NULL если нет существующих данных.

g_object_set_data ()

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

Если объект уже содержит ассоциацию с таким именем, старая ассоциация будет уничтожена.

object :

GObject содержащий ассоциации.

key :

имя ключа

data :

данные связанные с этим ключом

g_object_set_data_full ()

Как g_object_set_data() кроме того добавляет уведомление о том когда ассоциация уничтожена, или установлена в другое значение или когда объект уничтожен.

Помните что destroy callback-функция не вызывается если data это NULL.

object :

GObject содержащий ассоциации

key :

имя ключа

data :

данные связанные с ключом

destroy :

функция вызываемая при уничтожении ассоциации

g_object_steal_data ()

Удаляет определённую величину из объектных данных ассоциаций, без вызова обработчика уничтожения ассоциаций.

object :

GObject содержащий ассоциации

key :

имя ключа

Возвращает :

данные если найдены, или NULL если такие данные не существуют.

g_object_get_qdata ()

Эта функция получает назад пользовательские указатели данных сохранённые через g_object_set_qdata().

object :

GObject для получения сохраненных указателей пользовательских данных

quark :

GQuark, именующий указатель пользовательских данных

Возвращает :

Набор указателей пользовательских данных, или NULL

g_object_set_qdata ()

Устанавливает непрозрачный именованный указатель в объект. Имя определяется через GQuark (находится например через g_quark_from_static_string()), и указатель может быть получен обратно из object с помощью g_object_get_qdata() пока object не финализирован. Предварительная установка набора указателей пользовательских данных, переписывает (освобождает) старый набор указателей, используя NULL поскольку указатель по существу удаляет сохранённые данные.

object :

GObject для хранения набора пользовательских указателей данных

quark :

GQuark, именованный указатель пользовательских данных

data :

Непрозрачный указатель пользовательских данных

g_object_set_qdata_full ()

Эта функция работает так же как g_object_set_qdata(), но в дополнение, может быть определена функция void (*destroy) (gpointer) которая вызывается с data в качестве аргумента при финализации object, или данные переписываются вызовом g_object_set_qdata() с таким же quark.

object :

GObject для хранения указателя набора пользовательских данных

quark :

GQuark, именованный указатель пользовательских данных

data :

Непрозрачный указатель пользовательских данных

destroy :

Функция вызываемая с data как аргумент, когда data нужно освободить

g_object_steal_qdata ()

Эта функция получает назад указатели пользовательских данных сохранённые через g_object_set_qdata() и удаляет data из объекта без вызова функции destroy() (если они были установлены). Обычно, вызов этой функции запросит только обновление указателей пользовательских данных с уведомлением разрушения, например:

Использование g_object_get_qdata() в примере выше, вместо g_object_steal_qdata() отменило бы установку функции уничтожения, и поэтому часть списка строк освобождается через g_object_set_qdata_full().

object :

GObject для получения сохранённого указателя пользовательских данных

quark :

GQuark, именованный указатель пользовательских данных

Возвращает :

Установленный указатель пользовательских данных, или NULL

g_object_set_property ()

Устанавливает свойство для объекта.

object :

property_name :

имя устанавливаемого свойства

value :

значение

g_object_get_property ()

Получает свойство объекта.

В основном, делается копия содержимого свойства и вызывающий должен отвечать за освобождение памяти с помощью вызова g_value_unset().

Помните что g_object_get_property() фактически предназначен для языковых привязок, g_object_get() намного удобнее для C программирования.

object :

property_name :

имя получаемого свойства

value :

расположение возвращаемого значения свойства

g_object_new_valist ()

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

Параметры конструкции (смотрите G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) которые явно не определены устанавливаются в значение по умолчанию.

object_type :

типовой id подтипа GObject для инстанциирования

first_property_name :

имя первого свойства

var_args :

значение первого свойства, зтем опционально следующие пары name/value, завершает NULL

Возвращает :

новый экземпляр object_type

g_object_set_valist ()

Устанавливает свойства объекта.

object :

first_property_name :

имя первого свойства для установки

var_args :

значение первого свойства, fзтем опционально следующие пары name/value, завершает NULL

g_object_get_valist ()

Получает свойства объекта.

В основном, создаётся копия содержимого свойства и вызывающий отвечает за освобождение памяти так как это делается для типа, например вызовом g_free() илиg_object_unref().

Смотрите g_object_get().

object :

first_property_name :

имя первого свойства для получения

var_args :

расположение возвращаемого первого свойства, зтем опционально следующие пары name/return, завершает NULL

g_object_watch_closure ()

Эта функция по существу лимитирует время жизни closure до времени жизни объекта. Таким образом, когда объект финализирован, closure ликвидируется вызовомg_closure_invalidate(), чтобы предотвратить вызов замыкания с несуществующим объектом. Кроме того, g_object_ref() и g_object_unref() добавляются как защищённые маршаллеры closure, гарантируя что дополнительный счётчик ссылок содержит object в течение вызова closure. Обычно, эта функция вызывается в замыканиях которые используют этот object в качестве данных для замыкания.

object :

GObject ограничивающий жизненное время closure

closure :

GClosure для отслеживания

g_object_run_dispose ()

Высвобождает все ссылки на другие объекты. Это может быть использовано для прерывания циклов ссылки.

Помните

Эти функции должны вызываться только из системы реализации объекта.

object :

G_OBJECT_WARN_INVALID_PROPERTY_ID()

Этот макрос должен использоваться для издания стандартного предупреждения о несуществующем свойстве в реализациях set_property() и get_property().

object :

GObject в котором были вызваны set_property() или get_property()

property_id :

числовой id свойства

pspec :

GParamSpec свойства

Детали сигналов

The "notify" signal

Сигнал уведомления издаётся на объекте когда одно из его свойств изменяется. Помните что получение этого сигнала не гарантирует что значение свойства фактически изменилось, он может так же издаваться когда установщик свойства вызван для переустановки предыдущего значения.

Этот сигнал обычно используется для получения уведомления об изменении единственного свойства, определяя имя свойства как детальный параметр в вызове g_signal_connect(), например:

Важно отметить что вы должны использовать canonical параметр называемый как детальная строка для сигнала уведомления.

pspec :

GParamSpec свойства которое изменяется

gobject :

объект который получает сигнал.

user_data :

пользовательские данные устанавливаемые при подключении обработчика сигнала.

Last updated

Was this helpful?