Interested Article - GObject

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

История

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

Связь с GLib

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

Система типов

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

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

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

См. также

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

Примечания

  1. (англ.) (HTML). Дата обращения: 12 августа 2010. 24 февраля 2011 года.

Ссылки

  • (англ.) (HTML). Дата обращения: 12 августа 2010.
  • (англ.) (HTML). Дата обращения: 12 августа 2010. Архивировано из 2 февраля 2017 года.
  • (англ.) (HTML). Дата обращения: 12 августа 2010.
  • (англ.) (HTML). Дата обращения: 12 августа 2010.
  • (рус.)
Источник —

Same as GObject