
On 09/03/07 08:10, Mariano Consoni wrote: [snip]
That prototype started to grow and now it has some functionalities:
- The reflection of an interface can be created. This structure prepares the storage for the class methods. The reflection also
"prepares the storage for the class methods"? Does each object have a pointer to something like a virtual function table, and this "preparation of storage" is maybe a singleton with maybe a static vector of function pointer's which the object contains a pointer to?
stores an Info class (similar to the one in Boost.Extension) and an ID to select the interface. The type of the ID is a template argument.
- Different methods can be stored. The interface is the one suggested by Jeremy, where you define the type of the parameter ID and the type of the parameter itself with template arguments. The method info is stored in a multi-type map, similar to the factory map of Boost.Extension.
Could you provide a reference that explains Jeremy's interface a little more.
- Finally, we want to call that methods. Two methods were proposed to do that (but only one is fully functional now):
. call a method defining its parameter and parameter ID types using the call method template arguments.
boost's fusion "fuses", somehow, compile time and runtime "calls". The compile time calls (returning types) are done with a nested apply template (IIRC). The run time calls are done with a static call function in some class template which uses the compile-time apply to get the type of the return. It sounds to me like you're doing something similar. Is that right?
. call a method using a parameter map. The parameter map is implemented, but Jeremy is working in the best way to find the method and invoke the function pointer.
We also have three examples (a basic one, another showing Boost.Extension integration and an example C++ interpreter prototype). Also we have a unit test checking the basic functionalities.
I'd be very interested in seeing this C++ interpreter. [snip]
All is in the SVN with Jamfiles that compile everything.
I've looked at http://svn.boost.org/trac/boost/browser but can't find it. Could you be more specific?