From 2949fb51f13e1236d5c161f02e1c2c8541100e9f Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Thu, 21 Oct 2004 15:05:47 +0000 Subject: Refactoring (see ChangeLog). --- src/encoderFactory.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 8 deletions(-) (limited to 'src/encoderFactory.cpp') 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 ::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 ::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 encoderFactory::getEncoderList() const +{ + std::vector res; + + for (std::vector ::const_iterator it = m_encoders.begin() ; + it != m_encoders.end() ; ++it) { - throw exceptions::no_encoder_available(); - return (NULL); + res.push_back(*it); } + + return (res); } -- cgit v1.2.3