Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions

Factory< Type > Class Template Reference

The base class for singleton factory classes. More...

#include <Factory.h>

Inheritance diagram for Factory< Type >:
Inheritance graph
[legend]
Collaboration diagram for Factory< Type >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void add (Type *)
 Adds a prototype object to the list of prototypes.
Type * create (const std::string &name)
 Creates a new object from a prototype named name.
bool exists (const std::string &name) const
 Returns true if prototype with name name exists in the factory, otherwise returns false.
const std::vector< std::string > & names () const
 Returns the list of available prototype names.
Type * prototype (const std::string &name) const
 Returns a pointer to a prototype with name name.
void remove (const std::string &name)
 Removes the named prototype object from the list of prototypes.

Protected Member Functions

 Factory ()
 The default constructor.
virtual ~Factory ()
 The destructor.

Protected Attributes

std::vector< std::string > m_names
 The list of available types by names.
std::map< std::string, Type * > m_types
 A list of available types.

Private Member Functions

 Factory (const Factory< Type > &)
 A private copy constructor to prevent copying.

Detailed Description

template<class Type>
class hippodraw::Factory< Type >

The base class for singleton factory classes.

The factory maintains an instance of each type that can be produced by the factory. This instance is called the prototype. There are two requirements on the type that can be handled by the factory. First that it has a member function name() that returns a std::string for its name. The name does not have to be the class name. And second that it has a member function clone () to make a copy of itself.

In most cases, a derived class of Factory need only supply the a way to initialize list of prototypes. Most of the implementation is in this template class.

Author:
Paul F. Kunz <Paul_Kunz@slac.stanford.edu>

Definition at line 44 of file Factory.h.


Constructor & Destructor Documentation

Factory ( const Factory< Type > &  ) [private]

A private copy constructor to prevent copying.

Factory ( ) [protected]

The default constructor.

Since this constructor is protected, only derived classes of Factory can be created.

Definition at line 100 of file Factory.h.

~Factory ( ) [protected, virtual]

The destructor.

It is responsible for deleting the prototype objects.

Definition at line 105 of file Factory.h.


Member Function Documentation

void add ( Type *  obj)

Adds a prototype object to the list of prototypes.

Definition at line 117 of file Factory.h.

Type * create ( const std::string &  name)

Creates a new object from a prototype named name.

If found, returns a new object by invoking the clone() member function of the prototype. If not found, throws a FactoryException object with the name not found.

Definition at line 161 of file Factory.h.

Referenced by CutController::createCut(), DataRepController::createDataRep(), PointRepXML::createObject(), BinsBaseXML::createObject(), BinnerAxisXML::createObject(), PlotterBaseXML::createPlotter(), DisplayController::createTextDataRep(), Hist1DProjImp::Hist1DProjImp(), Hist2DProjImp::Hist2DProjImp(), and Profile2DProjector::Profile2DProjector().

bool exists ( const std::string &  name) const

Returns true if prototype with name name exists in the factory, otherwise returns false.

Definition at line 137 of file Factory.h.

const std::vector< std::string > & names ( ) const

Returns the list of available prototype names.

Definition at line 171 of file Factory.h.

Referenced by DisplayController::getTextTypes().

Type * prototype ( const std::string &  name) const

Returns a pointer to a prototype with name name.

If a prototype with name doesn't exit, throws a FactoryException object with the name not found.

Definition at line 149 of file Factory.h.

Referenced by DataRepController::bindingOptions(), DisplayController::createDisplay(), and DisplayController::isCompatible().

void remove ( const std::string &  name)

Removes the named prototype object from the list of prototypes.

Definition at line 126 of file Factory.h.


Member Data Documentation

std::vector< std::string > m_names [mutable, protected]

The list of available types by names.

This list should be identical to the list of m_types keys. It is updated when the member function names is called.

Definition at line 59 of file Factory.h.

std::map< std::string, Type * > m_types [protected]

A list of available types.

Definition at line 54 of file Factory.h.


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

Generated for HippoDraw Class Library by doxygen