diff options
author | Vincent Richard <[email protected]> | 2004-10-21 15:05:47 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2004-10-21 15:05:47 +0000 |
commit | 2949fb51f13e1236d5c161f02e1c2c8541100e9f (patch) | |
tree | 991edcf50483116ce83977a4d9e652de8c5328dc /src/encoderFactory.cpp | |
parent | header class unit tests added (diff) | |
download | vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.tar.gz vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.zip |
Refactoring (see ChangeLog).
Diffstat (limited to 'src/encoderFactory.cpp')
-rw-r--r-- | src/encoderFactory.cpp | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/src/encoderFactory.cpp b/src/encoderFactory.cpp index 6da09dbb..15c9e959 100644 --- a/src/encoderFactory.cpp +++ b/src/encoderFactory.cpp @@ -46,24 +46,58 @@ encoderFactory::encoderFactory() encoderFactory::~encoderFactory() { - for (NameMap::iterator it = m_nameMap.begin() ; it != m_nameMap.end() ; ++it) - delete ((*it).second); + for (std::vector <registeredEncoder*>::const_iterator it = m_encoders.begin() ; + it != m_encoders.end() ; ++it) + { + delete (*it); + } } encoder* encoderFactory::create(const string& name) { - NameMap::const_iterator pos = m_nameMap.find(toLower(name)); + return (getEncoderByName(name)->create()); +} + + +const encoderFactory::registeredEncoder* encoderFactory::getEncoderByName(const string& name) const +{ + const string lcName(stringUtils::toLower(name)); - if (pos != m_nameMap.end()) + for (std::vector <registeredEncoder*>::const_iterator it = m_encoders.begin() ; + it != m_encoders.end() ; ++it) { - return ((*pos).second)->create(); + if ((*it)->getName() == lcName) + return (*it); } - else + + throw exceptions::no_encoder_available(); +} + + +const int encoderFactory::getEncoderCount() const +{ + return (m_encoders.size()); +} + + +const encoderFactory::registeredEncoder* encoderFactory::getEncoderAt(const int pos) const +{ + return (m_encoders[pos]); +} + + +const std::vector <const encoderFactory::registeredEncoder*> encoderFactory::getEncoderList() const +{ + std::vector <const registeredEncoder*> res; + + for (std::vector <registeredEncoder*>::const_iterator it = m_encoders.begin() ; + it != m_encoders.end() ; ++it) { - throw exceptions::no_encoder_available(); - return (NULL); + res.push_back(*it); } + + return (res); } |