aboutsummaryrefslogtreecommitdiffstats
path: root/src/encoderFactory.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2004-10-21 15:05:47 +0000
committerVincent Richard <[email protected]>2004-10-21 15:05:47 +0000
commit2949fb51f13e1236d5c161f02e1c2c8541100e9f (patch)
tree991edcf50483116ce83977a4d9e652de8c5328dc /src/encoderFactory.cpp
parentheader class unit tests added (diff)
downloadvmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.tar.gz
vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.zip
Refactoring (see ChangeLog).
Diffstat (limited to 'src/encoderFactory.cpp')
-rw-r--r--src/encoderFactory.cpp50
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);
}