dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass > Class Template Reference

This class is a template object factory. More...

#include <objectfactory.h>

List of all members.

Public Types

typedef UniqueIdTypeClass UniqueIdType
typedef BaseTypeClass BaseType
typedef ltCmpClass ltCmp
typedef BaseType *(* createObjectFunc )()
typedef std::map< UniqueIdType,
createObjectFunc, ltCmp
ObjectMap
 Function pointer type for functions creating objects.
typedef ObjectMap::iterator ObjTypeItor
typedef ObjectMap::const_iterator ObjTypeItorConst

Public Member Functions

 ObjectFactory ()
template<typename DerivedType>
bool RegisterType (UniqueIdType id)
 Registers a new type of object with the factory.
void RemoveType (UniqueIdType id)
 Removes an existing object type from the factory's known list of object types.
bool IsTypeSupported (UniqueIdType id) const
 Checks to see if the factory can create objects of the given type.
void GetSupportedTypes (std::vector< UniqueIdType > &types) const
 Gets a list of types that this factory knows how to create.
BaseTypeCreateObject (const UniqueIdType id)
 Creates a new object.
const ObjectMapGetMap () const

Protected Member Functions

virtual ~ObjectFactory ()


Detailed Description

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
class dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >

This class is a template object factory.

It allows one to create any type of object as long as there is a common base class. The common base class is defined on a per-factory basis using the templated parameter BaseType.

Note:
The ObjectFactory implementation only supports objects with a default constructor. It will not work with objects that only have named constructors.

Member Typedef Documentation

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef UniqueIdTypeClass dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::UniqueIdType

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef BaseTypeClass dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::BaseType

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef ltCmpClass dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::ltCmp

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef BaseType*(* dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::createObjectFunc)()

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef std::map<UniqueIdType,createObjectFunc,ltCmp> dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::ObjectMap

Function pointer type for functions creating objects.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef ObjectMap::iterator dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::ObjTypeItor

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
typedef ObjectMap::const_iterator dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::ObjTypeItorConst


Constructor & Destructor Documentation

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::ObjectFactory (  )  [inline]

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
virtual dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::~ObjectFactory (  )  [inline, protected, virtual]


Member Function Documentation

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
template<typename DerivedType>
bool dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::RegisterType ( UniqueIdType  id  )  [inline]

Registers a new type of object with the factory.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
void dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::RemoveType ( UniqueIdType  id  )  [inline]

Removes an existing object type from the factory's known list of object types.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
bool dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::IsTypeSupported ( UniqueIdType  id  )  const [inline]

Checks to see if the factory can create objects of the given type.

Parameters:
id The type of object to check for.
Returns:
True if the type is supported, false otherwise.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
void dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::GetSupportedTypes ( std::vector< UniqueIdType > &  types  )  const [inline]

Gets a list of types that this factory knows how to create.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
BaseType* dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::CreateObject ( const UniqueIdType  id  )  [inline]

Creates a new object.

Parameters:
id - Type of object to create.
Returns:
Returns a pointer to the newly created object.
Exceptions:
Exception is thrown if the factory does not know how to create the requested type.

template<typename UniqueIdTypeClass, typename BaseTypeClass, typename ltCmpClass = std::less<UniqueIdTypeClass>>
const ObjectMap& dtUtil::ObjectFactory< UniqueIdTypeClass, BaseTypeClass, ltCmpClass >::GetMap (  )  const [inline]


http://www.delta3d.org
2.0.0 generated 14 Feb 2008