aboutsummaryrefslogtreecommitdiffstats
path: root/src/headerFieldFactory.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/headerFieldFactory.cpp
parentheader class unit tests added (diff)
downloadvmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.tar.gz
vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.zip
Refactoring (see ChangeLog).
Diffstat (limited to 'src/headerFieldFactory.cpp')
-rw-r--r--src/headerFieldFactory.cpp115
1 files changed, 33 insertions, 82 deletions
diff --git a/src/headerFieldFactory.cpp b/src/headerFieldFactory.cpp
index 0187c26d..19862b6a 100644
--- a/src/headerFieldFactory.cpp
+++ b/src/headerFieldFactory.cpp
@@ -20,21 +20,11 @@
#include "headerFieldFactory.hpp"
#include "exception.hpp"
-#include "defaultField.hpp"
+#include "standardFields.hpp"
#include "mailboxField.hpp"
-#include "addressListField.hpp"
-#include "addressListField.hpp"
-#include "addressListField.hpp"
-#include "mailboxField.hpp"
-#include "dateField.hpp"
-#include "relayField.hpp"
-#include "textField.hpp"
-#include "mailboxField.hpp"
#include "contentTypeField.hpp"
-#include "contentEncodingField.hpp"
#include "contentDispositionField.hpp"
-#include "messageIdField.hpp"
namespace vmime
@@ -43,28 +33,28 @@ namespace vmime
headerFieldFactory::headerFieldFactory()
{
- // Register some default field types
- registerType <mailboxField>(headerField::From);
- registerType <addressListField>(headerField::To);
- registerType <addressListField>(headerField::Cc);
- registerType <addressListField>(headerField::Bcc);
- registerType <mailboxField>(headerField::Sender);
- registerType <dateField>(headerField::Date);
- registerType <relayField>(headerField::Received);
- registerType <textField>(headerField::Subject);
- registerType <mailboxField>(headerField::ReplyTo);
- registerType <mailboxField>(headerField::DeliveredTo);
- registerType <textField>(headerField::Organization);
- registerType <textField>(headerField::UserAgent);
- registerType <mailboxField>(headerField::ReturnPath);
- registerType <contentTypeField>(headerField::ContentType);
- registerType <contentEncodingField>(headerField::ContentTransferEncoding);
- registerType <textField>(headerField::ContentDescription);
- registerType <defaultField>(headerField::MimeVersion);
- registerType <contentDispositionField>(headerField::ContentDisposition);
- registerType <messageIdField>(headerField::ContentId);
- registerType <messageIdField>(headerField::MessageId);
- registerType <defaultField>(headerField::ContentLocation);
+ // Register some default fields
+ registerName <mailboxField>(vmime::fields::FROM);
+ registerName <addressListField>(vmime::fields::TO);
+ registerName <addressListField>(vmime::fields::CC);
+ registerName <addressListField>(vmime::fields::BCC);
+ registerName <mailboxField>(vmime::fields::SENDER);
+ registerName <dateField>(vmime::fields::DATE);
+ registerName <relayField>(vmime::fields::RECEIVED);
+ registerName <textField>(vmime::fields::SUBJECT);
+ registerName <mailboxField>(vmime::fields::REPLY_TO);
+ registerName <mailboxField>(vmime::fields::DELIVERED_TO);
+ registerName <textField>(vmime::fields::ORGANIZATION);
+ registerName <textField>(vmime::fields::USER_AGENT);
+ registerName <mailboxField>(vmime::fields::RETURN_PATH);
+ registerName <contentTypeField>(vmime::fields::CONTENT_TYPE);
+ registerName <contentEncodingField>(vmime::fields::CONTENT_TRANSFER_ENCODING);
+ registerName <textField>(vmime::fields::CONTENT_DESCRIPTION);
+ registerName <defaultField>(vmime::fields::MIME_VERSION);
+ registerName <contentDispositionField>(vmime::fields::CONTENT_DISPOSITION);
+ registerName <messageIdField>(vmime::fields::CONTENT_ID);
+ registerName <messageIdField>(vmime::fields::MESSAGE_ID);
+ registerName <defaultField>(vmime::fields::CONTENT_LOCATION);
}
@@ -76,63 +66,24 @@ headerFieldFactory::~headerFieldFactory()
headerField* headerFieldFactory::create
(const string& name, const string& body)
{
- const headerField::Types type = headerField::nameToType(name);
+ NameMap::const_iterator pos = m_nameMap.find(stringUtils::toLower(name));
+ headerField* field = NULL;
- if (type != headerField::Custom)
+ if (pos != m_nameMap.end())
{
- return (create(type, name, body));
+ field = ((*pos).second)();
}
else
{
- NameMap::const_iterator pos = m_nameMap.find(toLower(name));
- headerField* field = NULL;
-
- if (pos != m_nameMap.end())
- {
- field = ((*pos).second)();
- }
- else
- {
- field = new defaultField;
- }
-
- field->m_type = headerField::Custom;
- field->m_name = name;
-
- if (body != NULL_STRING)
- field->parse(body);
-
- return (field);
+ field = registerer <defaultField>::creator();
}
-}
+ field->m_name = name;
-headerField* headerFieldFactory::create(const headerField::Types type,
- const string& name, const string& body)
-{
- if (type == headerField::Custom)
- {
- return (create(name, body));
- }
- else
- {
- TypeMap::const_iterator pos = m_typeMap.find(type);
-
- if (pos != m_typeMap.end())
- {
- headerField* field = ((*pos).second)();
-
- field->m_type = type;
- if (name != NULL_STRING) field->m_name = name;
- if (body != NULL_STRING) field->parse(body);
-
- return (field);
- }
- else
- {
- throw exceptions::bad_field_type();
- }
- }
+ if (body != NULL_STRING)
+ field->parse(body);
+
+ return (field);
}