21#ifndef __ctkAbstractFactory_h
22#define __ctkAbstractFactory_h
27#include <QSharedPointer>
33# pragma warning(disable: 4505)
41template<
typename BaseClassType>
84 QStringList InstantiateErrorStrings;
85 QStringList InstantiateWarningStrings;
86 QStringList LoadErrorStrings;
87 QStringList LoadWarningStrings;
99template<
typename BaseClassType>
117 virtual BaseClassType *
instance(
const QString& itemKey);
125 virtual QString
path(
const QString& itemKey){ Q_UNUSED(itemKey);
return QString(); }
145 const QString& status,
bool display);
165 QSharedPointer<HashType> SharedRegisteredItemMap;
170#include "ctkAbstractFactory.tpp"
QStringList instantiateErrorStrings() const
void appendLoadErrorString(const QString &msg)
bool isInstantiated() const
virtual BaseClassType * instanciator()=0
Must be reimplemented in subclasses to instanciate a BaseClassType*.
void clearLoadWarningStrings()
void clearInstantiateErrorStrings()
BaseClassType * instance() const
QStringList instantiateWarningStrings() const
QStringList loadWarningStrings() const
void appendInstantiateErrorString(const QString &msg)
void appendInstantiateWarningString(const QString &msg)
void clearInstantiateWarningStrings()
void clearLoadErrorStrings()
virtual ~ctkAbstractFactoryItem()
void appendLoadWarningString(const QString &msg)
QStringList loadErrorStrings() const
void setVerbose(bool value)
virtual void uninstantiate()
BaseClassType * instantiate()
ctkAbstractFactory is the base class of all the factory where items need to be registered before bein...
virtual BaseClassType * instantiate(const QString &itemKey)
Create an instance of the object. The item corresponding to the key should have been registered befor...
HashType::const_iterator ConstIterator
QSharedPointer< HashType > sharedItems()
bool registerItem(const QString &key, const QSharedPointer< ctkAbstractFactoryItem< BaseClassType > > &item)
Call the load method associated with the item. If succesfully loaded, add it to the internal map.
void uninstantiate(const QString &itemKey)
Uninstanciate the object. Do nothing if the item given by the key has not be instantiated nor registe...
ctkAbstractFactoryItem< BaseClassType > * item(const QString &itemKey) const
Get a Factory item given its itemKey. Return 0 if any.
ctkAbstractFactoryItem< BaseClassType > * sharedItem(const QString &itemKey) const
void setSharedItems(const QSharedPointer< HashType > &items)
virtual BaseClassType * instance(const QString &itemKey)
Return the instance associated with itemKey if any, otherwise return 0.
void displayStatusMessage(const QtMsgType &type, const QString &description, const QString &status, bool display)
ctkAbstractFactory()
Constructor/Desctructor.
QStringList itemKeys() const
Get list of all registered item keys.
void setVerbose(bool value)
Enabled verbose output Warning and error message will be printed to standard outputs.
virtual ~ctkAbstractFactory()
virtual void registerItems()
Register items with the factory Method provided for convenience - Should be overloaded in subclasse.
QHash< QString, QSharedPointer< ctkAbstractFactoryItem< BaseClassType > > > HashType
virtual QString path(const QString &itemKey)
Get path associated with the item identified by itemKey Should be overloaded in subclasse.
virtual void printAdditionalInfo()
HashType::iterator Iterator