GObject

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
GObject
Тип

Библиотека

Разработчик

GNOME Foundation

Написана на

C

Операционная система

Кроссплатформенное ПО

Языки интерфейса

Multilingual

Аппаратная платформа

Кроссплатформенное ПО

Последняя версия

2.32.2 (1 мая 2012 года)

Тестовая версия

2.33.1 (2 мая 2012 года)

Состояние

Active

Лицензия

GNU Lesser General Public License

Сайт

library.gnome.org/devel/gobject/stable/

Объектная система GLib или GObject — библиотека с открытым исходным кодом (лицензируется под LGPL), представляющая портируемую объектную систему и прозрачную межъязыковую совместимость. GObject спроектирован для использования как в C, так и в других языках при помощи привязок.

История[править | править исходный текст]

Находясь в зависимости только от GLib и Libc, GObject является важной частью GNOME и используется в GTK+, Pango, Accessibility Toolkit и других высокоуровневых библиотеках GNOME. До GTK+ 2.0, GObject был частью GTK+. (Название «GObject» тогда не использовалось — общий индексный тип назывался GtkObject.)

Связь с GLib[править | править исходный текст]

Несмотря на то, что GObject имеет свой собственный отдельный набор документации [1] и обычно компилируется в отдельные разделяемые библиотеки, исходный код для GObject находится в дереве GLib и распространяется вместе с GLib (например, Debian поставляет GObject в пакете libglib2.0). В связи с этим GObject использует те же номера версий, что и GLib.

Система типов[править | править исходный текст]

На самом базовом уровне GObject лежит динамическая система типов, которая называется GType. Система GType отвечает за описание времени исполнения всех объектов, позволяющих писать связанный код, для использования с разными языковыми привязками. Система типов может справиться с любой классовой структурой с единичным наследованием, а также с не-классными типами, такими, как непрозрачный указатель, строка, целое число и число с плавающей точкой.

Система типов знает, каким образом копировать, передавать, и уничтожать значения, принадлежащие к любому зарегистрированному типу. Это тривиально для простых типов, таких, как целые числа, но некоторые сложные объекты используют подсчёт ссылок, а некоторые — нет. Если сложный объект использует подсчёт ссылок, то при его копировании количество ссылок просто увеличивается на 1. Иначе, объект будет скопирован путём выделения дополнительной памяти.

Эта базовая функциональность используется в реализации GValue, общего контейнера типов, который может содержать значения любого типа, известного системе типов. Такие контейнеры особенно полезны при взаимодействии с динамически типизируемыми языками, где все родные значения находятся в контейнерах, меченых типами (англ. type-tagged container).

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

  1. GObject Reference Manual (англ.) (HTML). Проверено 12 августа 2010.

Ссылки[править | править исходный текст]