00001
00002
00003
00004
00005
00006
00007 #ifndef _MIMETIC_RFC822_FIELD_H_
00008 #define _MIMETIC_RFC822_FIELD_H_
00009 #include <string>
00010 #include <mimetic/strutils.h>
00011 #include <mimetic/rfc822/fieldvalue.h>
00012
00013 namespace mimetic
00014 {
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 struct Field
00043 {
00044 typedef mimetic::istring istring;
00045 static const Field null;
00046 Field();
00047 Field(const std::string&);
00048 Field(const std::string&, const std::string&);
00049 ~Field();
00050
00051 Field(const Field&);
00052 Field& operator=(const Field&);
00053
00054 void name(const std::string&);
00055 const istring& name() const;
00056
00057 void value(const std::string&);
00058 std::string value() const;
00059
00060 std::ostream& write(std::ostream&, unsigned int fold = 0) const;
00061 friend std::ostream& operator<<(std::ostream&, const Field&);
00062 private:
00063 friend class Rfc822Header;
00064 istring m_name;
00065 FieldValue* m_pValue;
00066 };
00067
00068
00069 }
00070 #endif