Как получить полное описание класса С++ для биндинга?

Модератор: Модераторы разделов

Ответить
ozone baby
Сообщения: 221
ОС: Ubuntu i386/Ubuntu amd64

Как получить полное описание класса С++ для биндинга?

Сообщение ozone baby »

Начал делать биндинг Qt для ЯП D. руками портировал 3 класса и в каждом необходимые методы, реализовал переопределение виртуальных функций. Теперь хочу это автоматизировать. Для этого надо получить полное описание С++ класса. Вижу для себя варианта, первый, использовать doxygen, он умеет выдавать xml, правда не знаю в каком виде. Второй - парсить html документацию Qt - она xml совместима, и по большому счету это будет намного удобнее, так как в документации - только тот API, который нужен, без лишнего мусора в виде макросов и прочего в хидерах. Таким же методом насколько я поняли делают биндинг к GTK+ для D.
Есть ли другие способы, вы знаете?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Как получить полное описание класса С++ для биндинга?

Сообщение watashiwa_daredeska »

ozone baby писал(а):
23.10.2008 16:08
Есть ли другие способы, вы знаете?

http://gccxml.org
Спасибо сказали:
ozone baby
Сообщения: 221
ОС: Ubuntu i386/Ubuntu amd64

Re: Как получить полное описание класса С++ для биндинга?

Сообщение ozone baby »

спасибо, буду пробовать.
Спасибо сказали:
ozone baby
Сообщения: 221
ОС: Ubuntu i386/Ubuntu amd64

Re: Как получить полное описание класса С++ для биндинга?

Сообщение ozone baby »

gccxml оказался немного не тем что мне нужно. Вместо этого использую doxygen - у него есть подробный вывод в xml. Но я столкнулся с другой проблемой. Qt активно использует виртуальные функции - пользователь перегружает виртуальную функцию и определяет свое поведение для этого события. Для биндинга нужно перехватить вызов виртуальной функции для данного класса, проверить есть ли переопределена ли виртуальная функция в биндинге. Последнее - это касается D, а вот первое мне не ясно - каким образом можно перехватить вызов виртуального метода объекта класа в C++?
Спасибо сказали:
Ответить