[soc] Boost.extension/reflection project advances

Hi Community...! As some of you may know, I'm working on a SoC project called "Boost.extensions and reflection". This mail is just to keep you informed about the project advances. At this time, we have very good news. The library is now near completion, and we expect submitting it for revision in the next days. We've been worked the last two weeks in the following tasks: - Code style: continued improving the code style according Boost guidelines. - Build: improved the Jamfiles to work well in more platforms. - Boost::function: migrated some code to (optionally) use boost::function. - Benchmarks: made new benchmarks to test the new integrations. - Performance analysis: documented the results of the benchmarks. - Preprocessor: replaced a lot of boiler-plate code with (optional) boost::preprocessor macros. - Dependencies flags: documented the optional dependencies and how to enable them. As I have finished all the tasks planned in my proposal (and a lot more :) ) I will advance to Reflection part and Jeremy (Pack, original author) will finish some remaining tasks of Extension. Bye! -- Mariano

Mariano Gabriel Consoni said: (by the date of Tue, 10 Jul 2007 16:46:07 -0300)
As I have finished all the tasks planned in my proposal (and a lot more :) ) I will advance to Reflection part and Jeremy (Pack, original author) will finish some remaining tasks of Extension.
wow. this is really good news. Thanks for that. However on my side I have a problem with finding time to test it. It's my currently paid job to work on yade software (if you remember it). And I want to integrate boost::extension in it (instead of homebrew plugin loading). But Currently I'm struggling with documentation, writing papers about the code, etc... And very unfortunately I have little time to spend on real C++ coding, which I really regret. I want to try it, but now I can just hope that I will manage to do this before the review comes. -- Janek Kozicki |

On 7/10/07, Mariano Gabriel Consoni <mariano.consoni@gmail.com> wrote:
Hi Community...!
As some of you may know, I'm working on a SoC project called "Boost.extensions and reflection".
Hi, I would like to ping you about the boost.extension state. [snip]
Bye! -- Mariano
Regards, -- Felipe Magno de Almeida

Ping received. I'd recommend downloading the latest from the Subversion repository. All that needs to be finished is the Reflection half of the library. It's very close - there is only one piece of functionality left, which involves named function parameters (meaning that you wouldn't have to know the order of parameters of a reflected function in order to call it). I'd predict that it will take three weeks before I finish that up. Currently, you can use the Reflection library to create a generic boost::reflections::reflection object, and populate it with the constructors and methods of a given object, then create a boost::reflections::instance object using one of the constructors, and use the reflection to act on it. It's more flexible than Boost.Extension, since you don't need to know any of the base classes of an object in order to load a reflection of it. The documentation (especially for Boost.Extension ) is pretty up to date. The syntax was overhauled a few weeks ago, just to make it more flexible (and faster) for some of the special cases that people presented. You can find them in sandbox/libs/reflection, sandbox/libs/extension, sandbox/boost/extension and sandbox/boost/reflection. As of the last checkin, they were tested on Linux, Windows XP, Windows Server 2003, and Mac OS X. I seem to recall Linux requiring a change of LD_LIBRARY_PATH for a couple of the examples to work (the advanced multiple inheritance across shared library examples). Jeremy On 10/15/07, Felipe Magno de Almeida <felipe.m.almeida@gmail.com> wrote:
On 7/10/07, Mariano Gabriel Consoni <mariano.consoni@gmail.com> wrote:
Hi Community...!
As some of you may know, I'm working on a SoC project called "Boost.extensions and reflection".
Hi, I would like to ping you about the boost.extension state.
[snip]
Bye! -- Mariano
Regards, -- Felipe Magno de Almeida _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman /listinfo.cgi/boost

On 10/15/07, Jeremy Pack <rostovpack@gmail.com> wrote:
Ping received.
Thanks Jeremy!
I'd recommend downloading the latest from the Subversion repository. All that needs to be finished is the Reflection half of the library. It's very close - there is only one piece of functionality left, which involves named function parameters (meaning that you wouldn't have to know the order of parameters of a reflected function in order to call it).
No problem then, all I need is the other half of the library. I'm already downloading. [snip]
Jeremy
Thanks! -- Felipe Magno de Almeida

On 10/15/07, Jeremy Pack <rostovpack@gmail.com> wrote:
Ping received.
Hi Jeremy,
I'd recommend downloading the latest from the Subversion repository.
I downloaded, and would like to point somethings about my use-case. Though boost.extension works for my use-case, it seem obligate too many boilerpart and the use of inheritance. Although I will use abstract classes as interfaces for some cases, for other's it would not be needed. Consequently, I wouldn't need a factory/factory_map too. I would like to be able to only call functions for shared libraries with vary signatures, to do not obligate a interface with only one function and the use of polymorphism. Is it possible with boost.extension? Is it documented? [snip]
Jeremy
Best regards, -- Felipe Magno de Almeida

1 - The shared_library class provides for finding any function in a shared library that is declared extern "C", and being able to call it. It can call functions with various signatures just fine. If you need more than 6 parameters for a function, just redefine BOOST_EXTENSION_MAX_FUNCTOR_PARAMS to the number of parameters that you need, and Boost.Preprocessor takes care of the rest. 2 - I have nearly finished the mechanism for reflecting out arbitrary functions (non-member functions) from a shared_library. This will make it possible to overload function names, and require less 'extern "C"' functions. It sounds like (1) will work for you in most cases, but if you want to do anything more complex, (2) will be more appropriate. 3 - You can also use Boost.Reflection to create and call methods on arbitrary classes. It works with shared_library. It does not require inheritance. Jeremy Pack On 10/16/07, Felipe Magno de Almeida <felipe.m.almeida@gmail.com> wrote:
On 10/15/07, Jeremy Pack <rostovpack@gmail.com> wrote:
Ping received.
Hi Jeremy,
I'd recommend downloading the latest from the Subversion repository.
I downloaded, and would like to point somethings about my use-case. Though boost.extension works for my use-case, it seem obligate too many boilerpart and the use of inheritance. Although I will use abstract classes as interfaces for some cases, for other's it would not be needed. Consequently, I wouldn't need a factory/factory_map too. I would like to be able to only call functions for shared libraries with vary signatures, to do not obligate a interface with only one function and the use of polymorphism. Is it possible with boost.extension? Is it documented?
[snip]
Jeremy
Best regards, -- Felipe Magno de Almeida _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman /listinfo.cgi/boost
participants (4)
-
Felipe Magno de Almeida
-
Janek Kozicki
-
Jeremy Pack
-
Mariano Gabriel Consoni