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