Loki: Loki::CachedFactory< AbstractProduct, IdentifierType, CreatorParmTList, EncapsulationPolicy, CreationPolicy, EvictionPolicy, StatisticPolicy, FactoryErrorPolicy, ObjVector > Class Template Reference

# Loki::CachedFactory< AbstractProduct, IdentifierType, CreatorParmTList, EncapsulationPolicy, CreationPolicy, EvictionPolicy, StatisticPolicy, FactoryErrorPolicy, ObjVector > Class Template Reference
[Cached Factory]

Factory with caching support. More...

`#include <CachedFactory.h>`

List of all members.

## Public Member Functions
std::vector< IdentifierType > & | RegisteredIds ()
| Return the registered ID in this Factory.
void | ReleaseObject (ProductReturn &object)
| Use this function to release the object.
void | displayCacheType ()
| display the cache configuration

## Detailed Description

### template<class AbstractProduct, typename IdentifierType, typename CreatorParmTList = NullType, template< class > class EncapsulationPolicy = SimplePointer, class CreationPolicy = AlwaysCreate, template< typename, typename > class EvictionPolicy = EvictRandom, class StatisticPolicy = NoStatisticPolicy, template< typename, class > class FactoryErrorPolicy = DefaultFactoryError, class ObjVector = std::vector<AbstractProduct*>>
class Loki::CachedFactory< AbstractProduct, IdentifierType, CreatorParmTList, EncapsulationPolicy, CreationPolicy, EvictionPolicy, StatisticPolicy, FactoryErrorPolicy, ObjVector >

Factory with caching support.

This class acts as a Factory (it creates objects) but also keeps the already created objects to prevent long constructions time.

Note this implementation do not retain ownership.

## Member Function Documentation

template<class AbstractProduct , typename IdentifierType , typename CreatorParmTList = NullType, template< class > class EncapsulationPolicy = SimplePointer, class CreationPolicy = AlwaysCreate, template< typename, typename > class EvictionPolicy = EvictRandom, class StatisticPolicy = NoStatisticPolicy, template< typename, class > class FactoryErrorPolicy = DefaultFactoryError, class ObjVector = std::vector<AbstractProduct*>>

void Loki::CachedFactory< AbstractProduct, IdentifierType, CreatorParmTList, EncapsulationPolicy, CreationPolicy, EvictionPolicy, StatisticPolicy, FactoryErrorPolicy, ObjVector >::ReleaseObject | ( | ProductReturn & | object | ) | `[inline]`

Use this function to release the object.

if execution brakes in this function then you tried to release an object that wasn't provided by this Cache ... which is bad :-)

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

- CachedFactory.h