25 #ifndef __TERRALIB_COMMON_INTERNAL_FACTORYDICTIONARY_H
26 #define __TERRALIB_COMMON_INTERNAL_FACTORYDICTIONARY_H
30 #include "../core/translator/Translator.h"
66 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE = std::less<TFACTORYKEY> >
71 typedef typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::const_iterator
const_iterator;
95 void insert(
const TFACTORYKEY& factoryKey, TFACTORY* factory);
106 void remove(
const TFACTORYKEY& factoryKey);
117 TFACTORY*
find(
const TFACTORYKEY& factoryKey)
const;
126 typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::const_iterator
begin()
const;
133 typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::const_iterator
end()
const;
140 std::size_t
size()
const;
172 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
177 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
189 m_factoryMap.clear();
192 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
197 throw Exception(
TE_TR(
"Could not insert the given factory into the dictionary. The factory is a NULL object!"));
199 typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::const_iterator it = m_factoryMap.find(factoryKey);
201 if(it != m_factoryMap.end())
202 throw Exception(
TE_TR(
"Could not insert the given factory into the dictionary. There is a factory already registered with the given key."));
204 m_factoryMap[factoryKey] = factory;
207 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
210 typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::iterator it = m_factoryMap.find(factoryKey);
212 if(it != m_factoryMap.end())
213 m_factoryMap.erase(it);
215 throw Exception(
TE_TR(
"Could not unregister the informed factory. Object factory not found!"));
218 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
221 typename std::map<TFACTORYKEY, TFACTORY*, TKEYCOMPARE>::const_iterator it = m_factoryMap.find(factoryKey);
223 if(it == m_factoryMap.end())
229 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
232 return m_factoryMap.begin();
235 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
238 return m_factoryMap.end();
241 template<
class TFACTORY,
class TFACTORYKEY,
class TKEYCOMPARE>
inline
244 return m_factoryMap.size();
#define TE_TR(message)
It marks a string in order to get translated.
This class is designed to declare objects to be thrown as exceptions by TerraLib.
This class represents a dictionary of factories.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE > m_factoryMap
The internal dictionary map: key => factory.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator const_iterator
FactoryDictionary(const FactoryDictionary &rhs)
Copy constructor not allowed.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator end() const
It returns an iterator to the end of the container.
void remove(const TFACTORYKEY &factoryKey)
It removes the factory from the dictionary.
std::size_t size() const
It returns the number of registered factories in the dictionary.
void insert(const TFACTORYKEY &factoryKey, TFACTORY *factory)
It inserts a pointer to a factory and makes it associated to the factory key.
FactoryDictionary()
It creates a new factory dictionary.
TFACTORY * find(const TFACTORYKEY &factoryKey) const
It looks for a given factory identified by a key.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator begin() const
It returns an iterator to the first stored factory.
~FactoryDictionary()
Destructor.
FactoryDictionary & operator=(const FactoryDictionary &rhs)
Assignment operator not allowed.
An exception class for the XML module.