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/headerFieldFactory.cpp | 115 +++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 82 deletions(-) (limited to 'src/headerFieldFactory.cpp') 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 (headerField::From); - registerType (headerField::To); - registerType (headerField::Cc); - registerType (headerField::Bcc); - registerType (headerField::Sender); - registerType (headerField::Date); - registerType (headerField::Received); - registerType (headerField::Subject); - registerType (headerField::ReplyTo); - registerType (headerField::DeliveredTo); - registerType (headerField::Organization); - registerType (headerField::UserAgent); - registerType (headerField::ReturnPath); - registerType (headerField::ContentType); - registerType (headerField::ContentTransferEncoding); - registerType (headerField::ContentDescription); - registerType (headerField::MimeVersion); - registerType (headerField::ContentDisposition); - registerType (headerField::ContentId); - registerType (headerField::MessageId); - registerType (headerField::ContentLocation); + // Register some default fields + registerName (vmime::fields::FROM); + registerName (vmime::fields::TO); + registerName (vmime::fields::CC); + registerName (vmime::fields::BCC); + registerName (vmime::fields::SENDER); + registerName (vmime::fields::DATE); + registerName (vmime::fields::RECEIVED); + registerName (vmime::fields::SUBJECT); + registerName (vmime::fields::REPLY_TO); + registerName (vmime::fields::DELIVERED_TO); + registerName (vmime::fields::ORGANIZATION); + registerName (vmime::fields::USER_AGENT); + registerName (vmime::fields::RETURN_PATH); + registerName (vmime::fields::CONTENT_TYPE); + registerName (vmime::fields::CONTENT_TRANSFER_ENCODING); + registerName (vmime::fields::CONTENT_DESCRIPTION); + registerName (vmime::fields::MIME_VERSION); + registerName (vmime::fields::CONTENT_DISPOSITION); + registerName (vmime::fields::CONTENT_ID); + registerName (vmime::fields::MESSAGE_ID); + registerName (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 ::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); } -- cgit v1.2.3