GObject

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

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 и 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.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.