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 >:

## Classes

class | Worker
class | WorkerBase

## 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

## 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

Referenced by PFactory< AbstractClass, KeyType >::GetInstance().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

PFactory< AbstractClass, KeyType >::~PFactory | ( |  | ) |

inline protected

References PFactory< AbstractClass, KeyType >::DestroySingletons().

## Member Function Documentation

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::CreateInstance_Internal(), and PFactory< AbstractClass, KeyType >::GetInstance().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

Abstract_T* PFactory< AbstractClass, KeyType >::CreateInstance_Internal | ( | const Key_T & | key | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::CreateInstance(), and PFactory< AbstractClass, KeyType >::CreateInstanceAs().

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

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

inline static

References PFactory< AbstractClass, KeyType >::CreateInstance_Internal(), and PFactory< AbstractClass, KeyType >::GetInstance().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

virtual void PFactory< AbstractClass, KeyType >::DestroySingletons | ( |  | ) |

inline virtual

Implements PFactoryBase.

References PFactory< AbstractClass, KeyType >::m_keyMap.

Referenced by PFactory< AbstractClass, KeyType >::~PFactory().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

static PFactory& PFactory< AbstractClass, KeyType >::GetInstance | ( |  | ) |

inline static protected

References PFactoryBase::GetFactories(), PFactoryBase::GetFactoriesMutex(), PAssert, PFactory< AbstractClass, KeyType >::PFactory(), and PMEMORY_IGNORE_ALLOCATIONS_FOR_SCOPE.

Referenced by PFactory< AbstractClass, KeyType >::CreateInstance(), PFactory< AbstractClass, KeyType >::CreateInstanceAs(), PFactory< AbstractClass, KeyType >::GetKeyList(), PFactory< AbstractClass, KeyType >::GetKeyMap(), PFactory< AbstractClass, KeyType >::GetMutex(), PFactory< AbstractClass, KeyType >::IsRegistered(), PFactory< AbstractClass, KeyType >::IsSingleton(), PFactory< AbstractClass, KeyType >::Register(), PFactory< AbstractClass, KeyType >::RegisterAs(), PFactory< AbstractClass, KeyType >::Unregister(), and PFactory< AbstractClass, KeyType >::UnregisterAll().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

static KeyList_T PFactory< AbstractClass, KeyType >::GetKeyList | ( |  | ) |

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::GetKeyList_Internal().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

KeyList_T PFactory< AbstractClass, KeyType >::GetKeyList_Internal | ( |  | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::GetKeyList().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

static KeyMap_T& PFactory< AbstractClass, KeyType >::GetKeyMap | ( |  | ) |

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::m_keyMap.

Referenced by PDevicePluginFactory< AbstractClass, KeyType >::Worker::~Worker().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

static PMutex& PFactory< AbstractClass, KeyType >::GetMutex | ( |  | ) |

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactoryBase::m_mutex.

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::IsRegistered_Internal().

Referenced by PDevicePluginAdapter< DeviceBase >::CreateFactory().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::IsRegistered_Internal | ( | const Key_T & | key | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::IsRegistered().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::IsSingleton_Internal().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::IsSingleton_Internal | ( | const Key_T & | key | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::IsSingleton().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::Register_Internal().

Referenced by PDevicePluginFactory< AbstractClass, KeyType >::Worker::Worker(), and PFactory< AbstractClass, KeyType >::Worker< ConcreteClass >::Worker().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), PNEW, and PFactory< AbstractClass, KeyType >::Register_Internal().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

bool PFactory< AbstractClass, KeyType >::Register_Internal | ( | const Key_T & | key,
|  | WorkerBase * | worker
| ) |  |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, PFactoryBase::m_mutex, and PAssertNULL.

Referenced by PFactory< AbstractClass, KeyType >::Register().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::RegisterAs_Internal().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

PBoolean PFactory< AbstractClass, KeyType >::RegisterAs_Internal | ( | const Key_T & | newKey,
|  | const Key_T & | oldKey
| ) |  |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::RegisterAs().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

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

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::Unregister_Internal().

Referenced by PDevicePluginFactory< AbstractClass, KeyType >::Worker::~Worker().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

void PFactory< AbstractClass, KeyType >::Unregister_Internal | ( | const Key_T & | key | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::Unregister().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

static void PFactory< AbstractClass, KeyType >::UnregisterAll | ( |  | ) |

inline static

References PFactory< AbstractClass, KeyType >::GetInstance(), and PFactory< AbstractClass, KeyType >::UnregisterAll_Internal().

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

void PFactory< AbstractClass, KeyType >::UnregisterAll_Internal | ( |  | ) |

inline protected

References PFactory< AbstractClass, KeyType >::m_keyMap, and PFactoryBase::m_mutex.

Referenced by PFactory< AbstractClass, KeyType >::UnregisterAll().

## Member Data Documentation

template<class AbstractClass , typename KeyType = PDefaultPFactoryKey>

KeyMap_T PFactory< AbstractClass, KeyType >::m_keyMap

protected

Referenced by PFactory< AbstractClass, KeyType >::CreateInstance_Internal(), PFactory< AbstractClass, KeyType >::DestroySingletons(), PFactory< AbstractClass, KeyType >::GetKeyList_Internal(), PFactory< AbstractClass, KeyType >::GetKeyMap(), PFactory< AbstractClass, KeyType >::IsRegistered_Internal(), PFactory< AbstractClass, KeyType >::IsSingleton_Internal(), PFactory< AbstractClass, KeyType >::Register_Internal(), PFactory< AbstractClass, KeyType >::RegisterAs_Internal(), PFactory< AbstractClass, KeyType >::Unregister_Internal(), and PFactory< AbstractClass, KeyType >::UnregisterAll_Internal().

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

- pfactory.h