GObject
| GObject | |
|---|---|
| | |
| Тип | Библиотека |
| Разработчик | GNOME Foundation |
| Написана на | C |
| Операционная система | Кроссплатформенное ПО |
| Языки интерфейса | Multilingual |
| Аппаратная платформа | Кроссплатформенное ПО |
| Последняя версия | 2.81.0 (28 июня 2024 года) |
| Репозиторий | gitlab.gnome.org/GNOME/g… |
| Состояние | 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
Примечания
- ↑ GObject Reference Manual (англ.) (HTML). Дата обращения: 12 августа 2010. Архивировано 24 февраля 2011 года.
Ссылки
- The GObject Reference Manual (and tutorial) (англ.) (HTML). Дата обращения: 12 августа 2010.
- GObject Tutorial Aug 2004 (англ.) (HTML). Дата обращения: 12 августа 2010. Архивировано из оригинала 2 февраля 2017 года.
- GOB2 — the GObject Builder (англ.) (HTML). Дата обращения: 12 августа 2010.
- Vala Homepage (англ.) (HTML). Дата обращения: 12 августа 2010.
- Справочное описание GObject (рус.)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.