# PFactory< AbstractClass, KeyType > Class Template Reference

Template class for generic factories of an abstract class. More...

`#include <pfactory.h>`

Inheritance diagram for PFactory< AbstractClass, KeyType >:

List of all members.

## Public Types

typedef KeyType | Key_T
typedef AbstractClass | Abstract_T
typedef std::map< Key_T, WorkerBase * > | KeyMap_T
typedef std::vector< Key_T > | KeyList_T

## Public Member Functions

virtual void | DestroySingletons ()

## Static Public Member Functions

static bool | Register (const Key_T &key, WorkerBase *worker)
static bool | Register (const Key_T &key, Abstract_T *instance, bool autoDeleteInstance=true)
static PBoolean | RegisterAs (const Key_T &newKey, const Key_T &oldKey)
static void | Unregister (const Key_T &key)
static void | UnregisterAll ()
static bool | IsRegistered (const Key_T &key)
static Abstract_T * | CreateInstance (const Key_T &key)
template<class Derived_T>
static Derived_T * | CreateInstanceAs (const Key_T &key)
static PBoolean | IsSingleton (const Key_T &key)
static KeyList_T | GetKeyList ()
static KeyMap_T & | GetKeyMap ()
static PMutex & | GetMutex ()

## Protected Member Functions

| PFactory ()
| ~PFactory ()
bool | Register_Internal (const Key_T &key, WorkerBase *worker)
PBoolean | RegisterAs_Internal (const Key_T &newKey, const Key_T &oldKey)
void | Unregister_Internal (const Key_T &key)
void | UnregisterAll_Internal ()
bool | IsRegistered_Internal (const Key_T &key)
Abstract_T * | CreateInstance_Internal (const Key_T &key)
bool | IsSingleton_Internal (const Key_T &key)
KeyList_T | GetKeyList_Internal ()

## Static Protected Member Functions

static PFactory & | GetInstance ()

## Protected Attributes

KeyMap_T | m_keyMap

## Classes

class | Worker
class | WorkerBase

## Detailed Description

### template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>
class PFactory< AbstractClass, KeyType >

Template class for generic factories of an abstract class.

## Member Typedef Documentation

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

typedef AbstractClass PFactory< AbstractClass, KeyType >::Abstract_T

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

typedef KeyType PFactory< AbstractClass, KeyType >::Key_T

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

typedef std::vector<Key_T> PFactory< AbstractClass, KeyType >::KeyList_T

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

typedef std::map<Key_T, WorkerBase *> PFactory< AbstractClass, KeyType >::KeyMap_T

## Constructor & Destructor Documentation

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

PFactory< AbstractClass, KeyType >::PFactory | ( |  | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

PFactory< AbstractClass, KeyType >::~PFactory | ( |  | ) | `[inline, protected]`

## Member Function Documentation

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static Abstract_T* PFactory< AbstractClass, KeyType >::CreateInstance | ( | const Key_T & | key | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

Abstract_T* PFactory< AbstractClass, KeyType >::CreateInstance_Internal | ( | const Key_T & | key | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>
template<class Derived_T>

static Derived_T* PFactory< AbstractClass, KeyType >::CreateInstanceAs | ( | const Key_T & | key | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

virtual void PFactory< AbstractClass, KeyType >::DestroySingletons | ( |  | ) | `[inline, virtual]`

Implements PFactoryBase.

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static PFactory& PFactory< AbstractClass, KeyType >::GetInstance | ( |  | ) | `[inline, static, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static KeyList_T PFactory< AbstractClass, KeyType >::GetKeyList | ( |  | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

KeyList_T PFactory< AbstractClass, KeyType >::GetKeyList_Internal | ( |  | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static KeyMap_T& PFactory< AbstractClass, KeyType >::GetKeyMap | ( |  | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static PMutex& PFactory< AbstractClass, KeyType >::GetMutex | ( |  | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static bool PFactory< AbstractClass, KeyType >::IsRegistered | ( | const Key_T & | key | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::IsRegistered_Internal | ( | const Key_T & | key | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static PBoolean PFactory< AbstractClass, KeyType >::IsSingleton | ( | const Key_T & | key | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::IsSingleton_Internal | ( | const Key_T & | key | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static bool PFactory< AbstractClass, KeyType >::Register | ( | const Key_T & | key,
|  | Abstract_T * | instance,
|  | bool | autoDeleteInstance = `true` |
| ) |  |  | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static bool PFactory< AbstractClass, KeyType >::Register | ( | const Key_T & | key,
|  | WorkerBase * | worker |
| ) |  |  | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::Register_Internal | ( | const Key_T & | key,
|  | WorkerBase * | worker |
| ) |  |  | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static PBoolean PFactory< AbstractClass, KeyType >::RegisterAs | ( | const Key_T & | newKey,
|  | const Key_T & | oldKey |
| ) |  |  | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

PBoolean PFactory< AbstractClass, KeyType >::RegisterAs_Internal | ( | const Key_T & | newKey,
|  | const Key_T & | oldKey |
| ) |  |  | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static void PFactory< AbstractClass, KeyType >::Unregister | ( | const Key_T & | key | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

void PFactory< AbstractClass, KeyType >::Unregister_Internal | ( | const Key_T & | key | ) | `[inline, protected]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

static void PFactory< AbstractClass, KeyType >::UnregisterAll | ( |  | ) | `[inline, static]`

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

void PFactory< AbstractClass, KeyType >::UnregisterAll_Internal | ( |  | ) | `[inline, protected]`

## Member Data Documentation

template<class AbstractClass, typename KeyType = PDefaultPFactoryKey>

KeyMap_T PFactory< AbstractClass, KeyType >::m_keyMap `[protected]`

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

- pfactory.h