26 #ifndef __TERRALIB_COMMON_INTERNAL_PARAMETERIZEDABSTRACTFACTORY_H
27 #define __TERRALIB_COMMON_INTERNAL_PARAMETERIZEDABSTRACTFACTORY_H
64 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE=std::less<TFACTORYKEY> >
78 const TFACTORYKEY&
getKey()
const;
92 static TPRODUCT*
make(
const TFACTORYKEY& factoryKey, TPARAM p);
110 virtual TPRODUCT*
build(TPARAM p) = 0;
154 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE>
inline
160 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE>
inline
167 return factory->
build(p);
172 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE>
inline
176 return factoryDictionary;
179 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE>
inline
181 : m_factoryKey(factoryKey)
186 template<
class TPRODUCT,
class TFACTORYKEY,
class TPARAM,
class TKEYCOMPARE>
inline
189 getDictionary().remove(m_factoryKey);
195 #endif // __TERRALIB_COMMON_INTERNAL_PARAMETERIZEDABSTRACTFACTORY_H
TFACTORYKEY m_factoryKey
The key that identifies the concrete factory: it will be used for unregistering the factory during de...
This class defines the basic interface of an abstract factory that makes use of parameters to constru...
void insert(const TFACTORYKEY &factoryKey, TFACTORY *factory)
It inserts a pointer to a factory and makes it associated to the factory key.
#define TE_TR(message)
It marks a string in order to get translated.
static dictionary_type & getDictionary()
It returns a reference to the internal dictionary.
FactoryDictionary< ParameterizedAbstractFactory< TPRODUCT, TFACTORYKEY, TPARAM, TKEYCOMPARE >, TFACTORYKEY, TKEYCOMPARE > dictionary_type
A dictionary for a Factory.
ParameterizedAbstractFactory & operator=(const ParameterizedAbstractFactory &rhs)
Assignment operator not allowed.
virtual TPRODUCT * build(TPARAM p)=0
Concrete factories (derived from this one) must implement this method in order to create objects...
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
static TPRODUCT * make(const TFACTORYKEY &factoryKey, TPARAM p)
It creates an object with the appropriated factory.
const TFACTORYKEY & getKey() const
It returns the factory key associated to the concreate factory.
virtual ~ParameterizedAbstractFactory()
Virtual destructor.
This class represents a dictionary of factories.
ParameterizedAbstractFactory(const TFACTORYKEY &factoryKey)
It creates the factory.