25 #ifndef __TERRALIB_COMMON_INTERNAL_FACTORYDICTIONARY_H
26 #define __TERRALIB_COMMON_INTERNAL_FACTORYDICTIONARY_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();
250 #endif // __TERRALIB_COMMON_INTERNAL_FACTORYDICTIONARY_H
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE > m_factoryMap
The internal dictionary map: key => factory.
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.
#define TE_TR(message)
It marks a string in order to get translated.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator const_iterator
TFACTORY * find(const TFACTORYKEY &factoryKey) const
It looks for a given factory identified by a key.
FactoryDictionary & operator=(const FactoryDictionary &rhs)
Assignment operator not allowed.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator end() const
It returns an iterator to the end of the container.
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
This class is designed for dealing with multi-language text translation in TerraLib.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator begin() const
It returns an iterator to the first stored factory.
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
~FactoryDictionary()
Destructor.
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.
This class represents a dictionary of factories.