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>
38 typedef const Field argument_type;
39 typedef bool result_type;
40 find_by_name(
const std::string&);
41 bool operator()(
const Field&)
const;
46 bool hasField(
const std::string&)
const;
48 const Field& field(
const std::string&)
const;
49 Field& field(
const std::string&);
63 const std::string& subject()
const;
64 std::string& subject();
65 void subject(
const std::string&);
84 const T& getField(
const std::string&)
const;
86 T& getField(
const std::string&);
88 void setField(
const std::string&,
const T&);
94const T& Rfc822Header::getField(
const std::string& name)
const
97 it = find_if(begin(), end(), find_by_name(name));
104 if(!pFv->typeChecked())
106 std::string val = pFv->str();
111 return static_cast<const T&
>(*pFv);
118T& Rfc822Header::getField(
const std::string& name)
121 it = find_if(begin(), end(), find_by_name(name));
124 FieldValue* pFv = it->m_pValue;
132 else if(!pFv->typeChecked())
134 std::string val = pFv->str();
139 return static_cast<T&
>(*pFv);
144 it = insert(end(), f);
149 assert(it->m_pValue->typeChecked());
155void Rfc822Header::setField(
const std::string& name,
const T& obj)
158 iterator bit = begin(), eit = end();
159 iterator found = find_if(bit, eit, find_by_name(name));
165 it = insert(end(), f);
167 it->m_pValue =
new T(obj);
List of Address.
Definition addresslist.h:39
Value of an header field (base class)
Definition fieldvalue.h:18
Field class as defined by RFC822.
Definition field.h:43
List of Mailbox objects.
Definition mailboxlist.h:35
Represents a mailbox email address as defined in the RFC822.
Definition mailbox.h:47
Definition messageid.h:28