#include <BESPlugin.h>
Public Member Functions | |
BESPlugin (const string &filename) | |
virtual | ~BESPlugin () |
M * | instantiate () throw (NoSuchLibrary, NoSuchObject) |
virtual void | dump (ostream &strm) const |
dump the contents of this object to the specified ostream |
Each class/library must contain at least one function. The function must have the name and type signature `extern "C" M* maker()' and must return a pointer to a new instance of the class M. Note that M is the parameter of the Plugin template. Suppose you have a base class Base and a collection of specializations S1, S2, ..., Sn. You would use N instances of BESPlugin<Base> to provide access to the implementations in those
N shareable-object libraries. The exectuable that loads the libraries must have been compiled and linked with Base.
External symbols defined in the library will be made available to subsequently loaded libraries.
Create a new BESPlugin.
filename | The name of the shareable object library that holds the class' implementation. |
The destructor closes the library.
virtual void BESPlugin< M >::dump | ( | ostream & | strm | ) | const [inline, virtual] |
dump the contents of this object to the specified ostream
This method is implemented by all derived classes to dump their contents, in other words, any state they might have, private variables, etc...
The inline function below can be used to dump the contents of an OPeNDAOObj object. For example, the object Animal is derived from BESObj. A user could do the following:
Animal *a = new dog( "Sparky" ) ; cout << a << endl ;
And the dump method for dog could display the name passed into the constructor, the (this) pointer of the object, etc...
strm | C++ i/o stream to dump the object to |
Implements BESObj.
M* BESPlugin< M >::instantiate | ( | ) | throw (NoSuchLibrary, NoSuchObject) [inline] |
Instantiate the object. Using the maker function found in the shreable-object library, create a new instance of class M where M was the template parameter of BESPlugin.
References maker().
Referenced by BESPluginFactory< BESAbstractModule >::get().