[personal profile] dmitry_vk

В GObject не существует способа узнать, какие методы есть у объектов. Даже для интерфейсов нельзя узнать, какие есть методы, и где они расположены в vtable интерфейса. Вот для свойств и конструкторов объектов и информации об иерархии классов сделали возможность запросить информацию. Поэтому, можно довольно просто и быстро сгенерировать обертки для всех классов и типов из библиотек, использующих GObject (на самом деле, это не совсем так; для gtk+ это справедливо, а с другими библиотеками ситуация хуже). А для методов такого не сделали, надо будет как-то изворачиваться.

В проектах PyGTK и Gtk# используют парсинг заголовочных файлов и с частичным ручным редактированием для получения этой информации. Есть еще проект GObject-Introspection, в котором есть репозитории с информацией об API разных библиотек и инструментами по автоматической генерации этих репозиториев. Но что-то я не понял пока, как им можно воспользоваться.

Date: 2009-01-30 11:57 pm (UTC)
From: [identity profile] andy128k.livejournal.com
GObject Introspection -- это и есть парсинг заголовочных файлов. Разница в том, что его уже сделали за вас, и результат предоставили в удобоваримом (для всякого рода bindings) виде. Можно самому прочитать XML или воспользоватся библиотекой и прочитать из бинарного файла.

Радостно то, что GObject Introspection предоставляет этот самый Introspection не только для библиотек основаных на GObject.

Date: 2009-01-31 12:28 am (UTC)
From: [identity profile] dmitry-vk.livejournal.com
А мне казалось, что парсинг заголовочных файлов в GIR — это только один из способов получения информации (например, для GObject часть информации доступна без парсинга заголовочных файлов, как и для библиотек, основанных на XPCOM, UNO и подобных).
В любом случае, эта информация есть и ей надо научиться пользоваться. Только я пока не нашел у них описания API GTK+.

Date: 2009-01-31 12:35 am (UTC)
From: [identity profile] andy128k.livejournal.com
Вообще говоря, как получен GIR для написания bindings не важно :). Он (GIR) есть -- вот и славно.

У меня (Debian Sid) весь GTK+ уместился в одном файле /usr/share/gir/Gtk-2.0.gir.

Profile

dmitry_vk

April 2023

S M T W T F S
      1
234567 8
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 5th, 2026 10:45 pm
Powered by Dreamwidth Studios