|
Boost : |
From: Jeremy Pack (jeremy.pack_at_[hidden])
Date: 2006-10-23 21:15:22
All:
I've begun uploading the Extension library that I've been working on for
Boost into the vault (boost-consulting.com/vault directory "Extension"). As
of right now, there are only two files, which are just some test cases. I'm
uploading them first for comments on the interface. The rest of the library
will come slowly, as I document it and put in better comments.
Notes:
advanced_test.cpp: illustrates loading classes that involve
interdependencies. The comments in the file describe how this is done.
simple_test.cpp: illustrates loading classes that cannot be modified before
being used as extensions - i.e. any class can be made loadable by calling
the following:
library::make_simple_class_available<any_class>(); //Good point, Janek -
this is definitely necessary
It is slightly more complicated if non-default constructors are needed.
Note the following:
-All of these test cases pass.
-These test cases all include local classes for simplicity - there are also
test cases for classes from dlls, and all of the same functionality works
-It can search directories or a single file for loadable classes (it
searches .dll, .so or .dylib files automatically on the related platform).
It should be possible to search executables (at least on some platforms...),
but I haven't tested it yet.
-Virtual inheritance does not seem to cause problems- a couple of test cases
involving it seem to work just fine
-No macros are currently used (all templates)
-Only one entry point required in each dll (the function
boost_extension_get_class_info).
-RTTI is currently required. But, as noted in an earlier discussion, that
requirement will hopefully be removed (by use of Boost.Serialization).
I believe I've addressed most of the issues raised in the earlier thread, so
please let me know your opinions. The extended_type_info will be addressed
once the library interface has been deemed useable, and the prototype (using
only RTTI) is fully functional (it's functional already, but I'm expecting
to need to make changes based on your comments).
Also, one particular point of interest to me would be suggestions for test
cases. Do you have particular situations that you need the library to
handle?
Jeremy Pack
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk