21 #ifndef __ctkAbstractFactory_h
22 #define __ctkAbstractFactory_h
27 #include <QSharedPointer>
28 #include <QStringList>
33 # pragma warning(disable: 4505)
41 template<
typename BaseClassType>
84 QStringList InstantiateErrorStrings;
85 QStringList InstantiateWarningStrings;
86 QStringList LoadErrorStrings;
87 QStringList LoadWarningStrings;
99 template<
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)
BaseClassType * instance() const
bool isInstantiated() const
void clearLoadWarningStrings()
void clearInstantiateErrorStrings()
QStringList instantiateWarningStrings() const
QStringList loadWarningStrings() const
void appendInstantiateErrorString(const QString &msg)
virtual BaseClassType * instanciator()=0
Must be reimplemented in subclasses to instanciate a BaseClassType*.
void appendInstantiateWarningString(const QString &msg)
void clearInstantiateWarningStrings()
void clearLoadErrorStrings()
virtual ~ctkAbstractFactoryItem()
void appendLoadWarningString(const QString &msg)
BaseClassType * instantiate()
QStringList loadErrorStrings() const
void setVerbose(bool value)
virtual void uninstantiate()
ctkAbstractFactory is the base class of all the factory where items need to be registered before bein...
HashType::const_iterator ConstIterator
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...
void setSharedItems(const QSharedPointer< HashType > &items)
virtual BaseClassType * instantiate(const QString &itemKey)
Create an instance of the object. The item corresponding to the key should have been registered befor...
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.
virtual BaseClassType * instance(const QString &itemKey)
Return the instance associated with itemKey if any, otherwise return 0.
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
ctkAbstractFactoryItem< BaseClassType > * item(const QString &itemKey) const
Get a Factory item given its itemKey. Return 0 if any.
QSharedPointer< HashType > sharedItems()
ctkAbstractFactoryItem< BaseClassType > * sharedItem(const QString &itemKey) const