Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.
Интересует библиотека как можно более удовлетворяющая требования в таком порядке:
Здравствуйте, yxiie, Вы писали:
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания. Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:
Y>1. Портабельная Y>2. Быстрая Y>3. Удобная Y>4. Бесплатная
Y>Эта вещь
мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.
E>Не плохо было бы еще и требования к функциональности озвучить.
чем больше тем лучше
а вообще по функциональности можно что-то сравнимое с тем, что по ссылке. а что, так много возможных решений, что нужно по ф-циональности фильтровать? ну так завали меня ссылками!
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания. Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:
Y>1. Портабельная Y>2. Быстрая Y>3. Удобная Y>4. Бесплатная
мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.
E>>Не плохо было бы еще и требования к функциональности озвучить.
Y>чем больше тем лучше Y>а вообще по функциональности можно что-то сравнимое с тем, что по ссылке. а что, так много возможных решений, что нужно по ф-циональности фильтровать? ну так завали меня ссылками!
Боюсь, что кроме уже предложенной ссылки на работу Константина Книжника, предложить не могу.
Просто у меня уже есть код, который по специальному DDL описанию строит вспомогательный код по созданию C++ объектов по их именам. Если направление рефлекшена будет востребовано, то я задумаюсь о том, чтобы поддержать это направление у себя. Поэтому мне и интересно, что именно от рефлекшена хочется получить:
— получение списка безовых типов?
— возможность инстанцирования и уничтожения объектов по именам типов?
— получение списка атрибутов? Получения указателей на атрибуты или значения атрибутов (как тогда быть с инкапсуляцией)?
— получение указателей на методы или непосредственный вызов указателей?
Что касается решения по ссылке, то мне оно не понравилось из-за обилия ручного кодирования.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Боюсь, что кроме уже предложенной ссылки на работу Константина Книжника, предложить не могу.
E>Просто у меня уже есть код, который по специальному DDL описанию строит вспомогательный код по созданию C++ объектов по их именам. Если направление рефлекшена будет востребовано, то я задумаюсь о том, чтобы поддержать это направление у себя. Поэтому мне и интересно, что именно от рефлекшена хочется получить: E>- получение списка безовых типов? E>- возможность инстанцирования и уничтожения объектов по именам типов? E>- получение списка атрибутов? Получения указателей на атрибуты или значения атрибутов (как тогда быть с инкапсуляцией)? E>- получение указателей на методы или непосредственный вызов указателей?
в идеале — все. нужно, чтобы создавалась динамическая объектная модель приложения, с которой можно будет работать как на С++ так и на встроенном скриптовом языке. а варианты с DDL и специальными парсерами мне очень не нравятся — все должно быть на С++
E>Что касается решения по ссылке, то мне оно не понравилось из-за обилия ручного кодирования.
Сложности, связанные с использованием рефлексии посредством С++ в этой либе меня не сильно пугают, т.к. основная работа с иерархией объектов приложения будет проводится посредством скрипта.
по сути единственное, что меня не устраивает в той библиотеке — необкатанность и неподдерживаемость. ну и еще то, что она Loki использует
Здравствуйте, yxiie, Вы писали:
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания.
Небольшой список ссылок — http://gzip.rsdn.ru/forum/?mid=937642
мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение.
Судя по всему, тоскливо с reflection на C++. Однако, если найдешь что-то интересное, отпиши плз
Здравствуйте, FreshMeat, Вы писали:
FM>Здравствуйте, yxiie, Вы писали:
Y>>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания. FM>Небольшой список ссылок — http://gzip.rsdn.ru/forum/?mid=937642
мне в принципе нравится, но хотелось бы индустриально опробованное и поддерживаемое решение. FM>Судя по всему, тоскливо с reflection на C++. Однако, если найдешь что-то интересное, отпиши плз
Здравствуйте, yxiie, Вы писали:
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания. Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:
Y>1. Портабельная Y>2. Быстрая Y>3. Удобная Y>4. Бесплатная
Y>Эта вещь
обеспечивает "Full RTTI" ...
даже, какой коментарий стоял напротив class method или data member.
Например, генерация HTML документации полностью реализована на RTTI,
e.g. http://root.cern.ch/root/htmldoc/TRootGuiBuilder.html
Здравствуйте, 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 это же интерпретатор С++, при чем здесь библиотека для рефлексии?
Здравствуйте, yxiie, Вы писали:
Y>Посоветуйте хорошую библиотеку для рефлексии. Сейчас использую свой велосипед, но дальше развивать его нет особого желания. Y>Интересует библиотека как можно более удовлетворяющая требования в таком порядке:
Y>1. Портабельная Y>2. Быстрая Y>3. Удобная Y>4. Бесплатная
Y>Эта вещь
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.
Здравствуйте, 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 .
Здравствуйте, 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, за исключением некоторых нюансов. есть что-то подобное?
Здравствуйте, 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 незавсимое решение
<...>
Y>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец. Y>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.
Боюсь, что если без парсеров и DDL, то объем ручного программирования в конце-концов приведет к невозможности использования такого решения. Ведь сам оцени, во что выльется сопровождение кода в варианте Batiskaf-а, если потребуется изменить формат метода, который вызывается через reflection?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, yxiie, Вы писали:
Y>Здравствуйте, hth, Вы писали:
hth>>его можно использовать и, как dictionary/(reflection information) generator .
Y>можно подробнее объяснить что и как?
Здравствуйте, eao197, Вы писали:
Y>>да, знаем, есть такое, но не хватало мне ограничить себя GCC, это вообще пипец. Y>>либа нужна чисто на C++ без всяких хитрых хаков, парсеров, DDL, выдирания информации из Debug и.т.д.
E>Боюсь, что если без парсеров и DDL, то объем ручного программирования в конце-концов приведет к невозможности использования такого решения.
ну можно на макросах...
E>Ведь сам оцени, во что выльется сопровождение кода в варианте Batiskaf-а, если потребуется изменить формат метода, который вызывается через reflection?
все равно придется как-то описвать структуру, так пусть лучше это будет несколько макросов на месте, чем еще какие-то левые файлы или тулзы, которые нужно вызывать перед компиляцией.
Здравствуйте, 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 в стандарт языка.
будем внимательно следить за событиями