BESPluginFactory< C > Class Template Reference

#include <BESPluginFactory.h>

Inheritance diagram for BESPluginFactory< C >:

Inheritance graph
[legend]
Collaboration diagram for BESPluginFactory< C >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 BESPluginFactory (const string &name, const string &library_name)
 BESPluginFactory ()
virtual ~BESPluginFactory ()
void add_mapping (const string &name, const string &library_name)
C * get (const string &name) throw (NoSuchObject, NoSuchLibrary)
virtual void dump (ostream &strm) const
 dump the contents of this object to the specified ostream

Classes

struct  DeletePlugins


Detailed Description

template<typename C>
class BESPluginFactory< C >

A Factory for objects whose implementations reside in shared objects designed to be loaded at run time. This uses the BESPlugin class to perform the actual instantiation of those objects; the role of this class is to maintain a mapping between the names of the SO libraries and the names of the C++ object implementations they hold.

See also:
BESPlugin

Constructor & Destructor Documentation

template<typename C>
BESPluginFactory< C >::BESPluginFactory ( const string &  name,
const string &  library_name 
) [inline]

Create a BESPluginFactory and set up a single entry. configure other entries using the add_mapping() method.

Parameters:
name Use name to get an instance of the child defined in library_name.
library_name The name of the library which contains the child class implementation.
See also:
add_mapping.

template<typename C>
BESPluginFactory< C >::BESPluginFactory (  )  [inline]

Create an empty BESPluginFactory.

template<typename C>
virtual BESPluginFactory< C >::~BESPluginFactory (  )  [inline, virtual]


Member Function Documentation

template<typename C>
void BESPluginFactory< C >::add_mapping ( const string &  name,
const string &  library_name 
) [inline]

Add a mapping of name to library_name to the BESPluginFactory.

Parameters:
name The child object's name.
library_name The name of the library which holds its implementation.

Referenced by BESPluginFactory< BESAbstractModule >::BESPluginFactory().

template<typename C>
C* BESPluginFactory< C >::get ( const string &  name  )  throw (NoSuchObject, NoSuchLibrary) [inline]

Use the BESPlugingFactory to get an instance of the class C matched to name. Once the name name has been bound to a SO library library_name, this method can be used to get an instance of the object whose implementation is in the SO file using only the name name.

Parameters:
name The name registered with the implementation of a child of the class C using either the PlugFactory ctor or the add_mapping method.
Exceptions:
NoSuchObject thrown if name has not been registered.
NoSuchLibrary thrown if the library matched to name cannot be found.

Referenced by BESModuleApp::terminate().

template<typename C>
virtual void BESPluginFactory< C >::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...

Parameters:
strm C++ i/o stream to dump the object to

Implements BESObj.


The documentation for this class was generated from the following file:

Generated on Thu Sep 11 07:59:00 2008 for OPeNDAP Back End Server (BES) by  doxygen 1.5.6