GObject

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Gromolyak (обсуждение | вклад) в 18:12, 6 февраля 2021 (→‎История). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
GObject
Скриншот программы GObject
Тип Библиотека
Разработчик GNOME Foundation
Написана на C
Операционная система Кроссплатформенное ПО
Языки интерфейса Multilingual
Аппаратная платформа Кроссплатформенное ПО
Последняя версия 2.48.1 (13 мая 2016 года)
Тестовая версия 2.33.1 (2 мая 2012 года)
Состояние Active
Лицензия GNU Lesser General Public License
Сайт library.gnome.org/devel/…

Объектная система 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).

См. также

  • Vala — язык программирования на основе GObject с синтаксисом C#. Транспайлер в Си
  • Genie — альтернативныный парсер синтаксиса для компилятора Vala в стиле Python

Примечания

  1. GObject Reference Manual (англ.) (HTML). Дата обращения: 12 августа 2010.

Ссылки