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/headerFieldFactory.cpp | |
parent | header class unit tests added (diff) | |
download | vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.tar.gz vmime-2949fb51f13e1236d5c161f02e1c2c8541100e9f.zip |
Refactoring (see ChangeLog).
Diffstat (limited to 'src/headerFieldFactory.cpp')
-rw-r--r-- | src/headerFieldFactory.cpp | 115 |
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); } |