Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 08:32
Оценка:
Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.
Интересует библиотека как можно более удовлетворяющая требования в таком порядке:

1. Портабельная
2. Быстрая
3. Удобная
4. Бесплатная

Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.
... << RSDN@Home 1.1.3 stable >>
Re: Reflection for C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.03.05 09:36
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.

Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:

Y>1. Портабельная

Y>2. Быстрая
Y>3. Удобная
Y>4. Бесплатная

Y>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.


Не плохо было бы еще и требования к функциональности озвучить.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 10:23
Оценка:
Здравствуйте, eao197, Вы писали:

Y>>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.


E>Не плохо было бы еще и требования к функциональности озвучить.


чем больше тем лучше
а вообще по функциональности можно что-то сравнимое с тем, что по ссылке. а что, так много возможных решений, что нужно по ф-циональности фильтровать? ну так завали меня ссылками!
... << RSDN@Home 1.1.3 stable >>
Re: Reflection for C++
От: Tonal- Россия www.promsoft.ru
Дата: 07.03.05 11:10
Оценка:
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.
Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:

Y>1. Портабельная

Y>2. Быстрая
Y>3. Удобная
Y>4. Бесплатная

Это смотрел?
Reflection Package for C++
... << RSDN@Home 1.1.4 beta 4 rev. 343>>
Re[3]: Reflection for C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.03.05 11:29
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, eao197, Вы писали:


Y>>>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.


E>>Не плохо было бы еще и требования к функциональности озвучить.


Y>чем больше тем лучше

Y>а вообще по функциональности можно что-то сравнимое с тем, что по ссылке. а что, так много возможных решений, что нужно по ф-циональности фильтровать? ну так завали меня ссылками!

Боюсь, что кроме уже предложенной ссылки на работу Константина Книжника, предложить не могу.

Просто у меня уже есть код, который по специальному DDL описанию строит вспомогательный код по созданию C++ объектов по их именам. Если направление рефлекшена будет востребовано, то я задумаюсь о том, чтобы поддержать это направление у себя. Поэтому мне и интересно, что именно от рефлекшена хочется получить:
— получение списка безовых типов?
— возможность инстанцирования и уничтожения объектов по именам типов?
— получение списка атрибутов? Получения указателей на атрибуты или значения атрибутов (как тогда быть с инкапсуляцией)?
— получение указателей на методы или непосредственный вызов указателей?

Что касается решения по ссылке, то мне оно не понравилось из-за обилия ручного кодирования.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 11:30
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Это смотрел?

T>Reflection Package for C++

да. а по лучше ничего нету?
та либа от Batiskaf мне больше понравилась.
... << RSDN@Home 1.1.3 stable >>
Re[4]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 11:38
Оценка:
Здравствуйте, eao197, Вы писали:

E>Боюсь, что кроме уже предложенной ссылки на работу Константина Книжника, предложить не могу.


E>Просто у меня уже есть код, который по специальному DDL описанию строит вспомогательный код по созданию C++ объектов по их именам. Если направление рефлекшена будет востребовано, то я задумаюсь о том, чтобы поддержать это направление у себя. Поэтому мне и интересно, что именно от рефлекшена хочется получить:

E>- получение списка безовых типов?
E>- возможность инстанцирования и уничтожения объектов по именам типов?
E>- получение списка атрибутов? Получения указателей на атрибуты или значения атрибутов (как тогда быть с инкапсуляцией)?
E>- получение указателей на методы или непосредственный вызов указателей?

в идеале — все. нужно, чтобы создавалась динамическая объектная модель приложения, с которой можно будет работать как на С++ так и на встроенном скриптовом языке. а варианты с DDL и специальными парсерами мне очень не нравятся — все должно быть на С++

E>Что касается решения по ссылке, то мне оно не понравилось из-за обилия ручного кодирования.


Сложности, связанные с использованием рефлексии посредством С++ в этой либе меня не сильно пугают, т.к. основная работа с иерархией объектов приложения будет проводится посредством скрипта.

по сути единственное, что меня не устраивает в той библиотеке — необкатанность и неподдерживаемость. ну и еще то, что она Loki использует
... << RSDN@Home 1.1.3 stable >>
Re: Reflection for C++
От: FreshMeat Россия http://www.rsdn.org
Дата: 07.03.05 11:39
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.

Небольшой список ссылок — http://gzip.rsdn.ru/forum/?mid=937642.

Y>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.

Судя по всему, тоскливо с reflection на C++. Однако, если найдешь что-то интересное, отпиши плз
Хорошо там, где мы есть! :)
Re[2]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 12:37
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>Здравствуйте, yxiie, Вы писали:


Y>>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.

FM>Небольшой список ссылок — http://gzip.rsdn.ru/forum/?mid=937642.

да, видел я его когдато, и оказывается даже отметился в той теме. жаль, что там ниче толкового нету.

Y>>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.

FM>Судя по всему, тоскливо с reflection на C++. Однако, если найдешь что-то интересное, отпиши плз

вот эта вещь — то что мне нужно.
http://www.boost-consulting.com/writing/oopsla04.html
только она умерла так и не родившись как я понял, или нет?
... << RSDN@Home 1.1.3 stable >>
Re: Reflection for C++
От: hth  
Дата: 07.03.05 14:12
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.

Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:

Y>1. Портабельная

Y>2. Быстрая
Y>3. Удобная
Y>4. Бесплатная

Y>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.


http://root.cern.ch/root/Cint.html

обеспечивает "Full RTTI" ...
даже, какой коментарий стоял напротив class method или data member.
Например, генерация HTML документации полностью реализована на RTTI,
e.g. http://root.cern.ch/root/htmldoc/TRootGuiBuilder.html

соответствует всем перечисленным условиям
Re[2]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 14:24
Оценка:
Здравствуйте, hth, Вы писали:

hth>обеспечивает "Full RTTI" ...

hth>даже, какой коментарий стоял напротив class method или data member.
hth>Например, генерация HTML документации полностью реализована на RTTI,
hth>e.g. http://root.cern.ch/root/htmldoc/TRootGuiBuilder.html

hth>соответствует всем перечисленным условиям


Cint это же интерпретатор С++, при чем здесь библиотека для рефлексии?
... << RSDN@Home 1.1.3 stable >>
Re: Reflection for C++
От: hth  
Дата: 07.03.05 14:31
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.

Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:

Y>1. Портабельная

Y>2. Быстрая
Y>3. Удобная
Y>4. Бесплатная

Y>Эта вещь мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.


++
libBFD — http://sourceware.org/binutils/docs-2.15/bfd/index.html

libbfd — это библиотека, на которой написаны всe
GNU binutils: nm, objdump ... более того, на ней написаны
ld, gdb, libtool
В двух словах, она позволяет добыть всю информацию
доступную GDB: function memory entry points, demangling,
global variables etc. Доступна на linux all flavors, bsds,
solaris, sgi etc.
Re[3]: Reflection for C++
От: hth  
Дата: 07.03.05 14:37
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, hth, Вы писали:


hth>>обеспечивает "Full RTTI" ...

hth>>даже, какой коментарий стоял напротив class method или data member.
hth>>Например, генерация HTML документации полностью реализована на RTTI,
hth>>e.g. http://root.cern.ch/root/htmldoc/TRootGuiBuilder.html

hth>>соответствует всем перечисленным условиям


Y>Cint это же интерпретатор С++, при чем здесь библиотека для рефлексии?


его можно использовать и, как dictionary/(reflection information) generator .
Re[4]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 14:46
Оценка:
Здравствуйте, hth, Вы писали:

hth>его можно использовать и, как dictionary/(reflection information) generator .


можно подробнее объяснить что и как?
... << RSDN@Home 1.1.3 stable >>
Re[2]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 14:46
Оценка:
Здравствуйте, hth, Вы писали:

hth>++

hth>libBFD — http://sourceware.org/binutils/docs-2.15/bfd/index.html

hth>libbfd — это библиотека, на которой написаны всe

hth>GNU binutils: nm, objdump ... более того, на ней написаны
hth>ld, gdb, libtool
hth>В двух словах, она позволяет добыть всю информацию
hth>доступную GDB: function memory entry points, demangling,
hth>global variables etc. Доступна на linux all flavors, bsds,
hth>solaris, sgi etc.

да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец.
либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.
также запрещено использовать C++RTTI (typeid) и exceptions.
повторюсь — мне нравится либа Batiskaf-a, за исключением некоторых нюансов. есть что-то подобное?
... << RSDN@Home 1.1.3 stable >>
Re[3]: Reflection for C++
От: hth  
Дата: 07.03.05 16:07
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, hth, Вы писали:


hth>>++

hth>>libBFD — http://sourceware.org/binutils/docs-2.15/bfd/index.html

hth>>libbfd — это библиотека, на которой написаны всe

hth>>GNU binutils: nm, objdump ... более того, на ней написаны
hth>>ld, gdb, libtool
hth>>В двух словах, она позволяет добыть всю информацию
hth>>доступную GDB: function memory entry points, demangling,
hth>>global variables etc. Доступна на linux all flavors, bsds,
hth>>solaris, sgi etc.

Y>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец.


oops ... GCC, и не только! ELF format он и в африке ELF format.
btw,libbfd работает и с другими форматами ...

Y>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.

Y>также запрещено использовать C++RTTI (typeid) и exceptions.
Y>повторюсь — мне нравится либа Batiskaf-a, за исключением некоторых нюансов. есть что-то подобное?

ну, тогда только CINT (rootcint) —
platform-compiler незавсимое решение
Re[3]: Reflection for C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.03.05 16:27
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, hth, Вы писали:


hth>>++

hth>>libBFD — http://sourceware.org/binutils/docs-2.15/bfd/index.html

<...>

Y>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец.

Y>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.

Боюсь, что если без парсеров и DDL, то объем ручного программирования в конце-концов приведет к невозможности использования такого решения. Ведь сам оцени, во что выльется сопровождение кода в варианте Batiskaf-а, если потребуется изменить формат метода, который вызывается через reflection?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Reflection for C++
От: hth  
Дата: 07.03.05 16:31
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, hth, Вы писали:


hth>>его можно использовать и, как dictionary/(reflection information) generator .


Y>можно подробнее объяснить что и как?


http://root.cern.ch/root/Cint.phtml?makecint
http://root.cern.ch/root/Cint.phtml?extlib
http://root.cern.ch/root/Cint.phtml?extlib


rootcint TetrisDict.cxx -c Tetris.h

Выходные файлы TetrisDict.cxx, TetrisDict.h —
содержaт reflection information generated from Tetris.h
Re[4]: Reflection for C++
От: yxiie Украина www.enkord.com
Дата: 07.03.05 16:37
Оценка:
Здравствуйте, eao197, Вы писали:

Y>>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец.

Y>>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.

E>Боюсь, что если без парсеров и DDL, то объем ручного программирования в конце-концов приведет к невозможности использования такого решения.


ну можно на макросах...

E>Ведь сам оцени, во что выльется сопровождение кода в варианте Batiskaf-а, если потребуется изменить формат метода, который вызывается через reflection?


все равно придется как-то описвать структуру, так пусть лучше это будет несколько макросов на месте, чем еще какие-то левые файлы или тулзы, которые нужно вызывать перед компиляцией.
... << RSDN@Home 1.1.3 stable >>
Re[5]: Reflection for C++
От: hth  
Дата: 07.03.05 16:57
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>Здравствуйте, eao197, Вы писали:


Y>>>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец.

Y>>>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.

E>>Боюсь, что если без парсеров и DDL, то объем ручного программирования в конце-концов приведет к невозможности использования такого решения.


Y>ну можно на макросах...


E>>Ведь сам оцени, во что выльется сопровождение кода в варианте Batiskaf-а, если потребуется изменить формат метода, который вызывается через reflection?


Y>все равно придется как-то описвать структуру, так пусть лучше это будет несколько макросов на месте, чем еще какие-то левые файлы или тулзы, которые нужно вызывать перед компиляцией.


Just FYI http://agenda.cern.ch/fullAgenda.php?ida=a051238
см. "Fermilab trip report — C++, Reflex and the Standards Committee"
В двух словах — поступило предложение добавить reflection в стандарт языка.
будем внимательно следить за событиями