7 #ifndef _MIMETIC_RFC822_HEADER_H_
8 #define _MIMETIC_RFC822_HEADER_H_
14 #include <mimetic/strutils.h>
15 #include <mimetic/utils.h>
16 #include <mimetic/rfc822/field.h>
17 #include <mimetic/rfc822/mailbox.h>
18 #include <mimetic/rfc822/messageid.h>
19 #include <mimetic/rfc822/mailboxlist.h>
20 #include <mimetic/rfc822/addresslist.h>
37 public std::unary_function<const Field, bool>
39 find_by_name(
const std::string&);
40 bool operator()(
const Field&)
const;
45 bool hasField(
const std::string&)
const;
47 const Field& field(
const std::string&)
const;
48 Field& field(
const std::string&);
62 const std::string& subject()
const;
63 std::string& subject();
64 void subject(
const std::string&);
83 const T& getField(
const std::string&)
const;
85 T& getField(
const std::string&);
87 void setField(
const std::string&,
const T&);
93 const T& Rfc822Header::getField(
const std::string& name)
const
96 it = find_if(begin(), end(), find_by_name(name));
103 if(!pFv->typeChecked())
105 std::string val = pFv->str();
110 return static_cast<const T&
>(*pFv);
117 T& Rfc822Header::getField(
const std::string& name)
120 it = find_if(begin(), end(), find_by_name(name));
123 FieldValue* pFv = it->m_pValue;
131 else if(!pFv->typeChecked())
133 std::string val = pFv->str();
138 return static_cast<T&
>(*pFv);
143 it = insert(end(), f);
148 assert(it->m_pValue->typeChecked());
154 void Rfc822Header::setField(
const std::string& name,
const T& obj)
157 iterator bit = begin(), eit = end();
158 iterator found = find_if(bit, eit, find_by_name(name));
164 it = insert(end(), f);
166 it->m_pValue =
new T(obj);
Represents a mailbox email address as defined in the RFC822.
Definition: mailbox.h:46
Definition: messageid.h:27
Field class as defined by RFC822.
Definition: field.h:42
Value of an header field (base class)
Definition: fieldvalue.h:17
List of Mailbox objects.
Definition: mailboxlist.h:34
List of Address.
Definition: addresslist.h:38