00001
00013
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 class EmailString;
00043 class EmailAddressBuf;
00044 class EmailMessage;
00045
00062 class EmailString
00063 {
00064 friend class EmailAddressBuf;
00065 friend int main();
00066
00067 public:
00068 EmailString() : theLength(0), theString(NULL) {
00069 }
00070
00071 ~EmailString() {
00072 if (theString)
00073 delete theString;
00074 return;
00075 }
00076
00077 const char *add(const char *);
00078 const char *get_string() {
00079 if ( theString )
00080 return theString;
00081 return "";
00082 }
00083 const char *set_string(const char *s);
00084 const char *set_string_ptr(char *s) {
00085 theLength = s ? strlen(s) : 0;
00086 return theString = s;
00087 }
00088 int length() { return theLength; }
00089
00090 const char *operator=(const char *buf) { return set_string(buf); };
00091 const char *operator+=(const char *buf) { return add(buf); };
00092
00093 char &operator[](int i) {
00094 if (i<0||i>theLength) {
00095 abort();
00096 return ((char *)0x0)[0];
00097 }
00098 return theString[i];
00099 }
00100
00101 operator char* () {
00102 return theString;
00103 }
00104
00105 private:
00106 int theLength;
00107 char *theString;
00108 };
00109
00123 class EmailAddressBuf : public EmailString
00124 {
00125 public:
00126 const char *add_email(const char *);
00127 const char *operator=(const char *buf) { return set_string(buf); };
00128 const char *operator+=(const char *buf) { return add_email(buf); };
00129 };
00130
00142 class EmailMessage
00143 {
00144 public:
00145
00147 EmailAddressBuf from;
00148
00150 EmailAddressBuf to;
00151
00153 EmailString subject;
00154
00156 EmailString body;
00157
00161 void reset() {
00162 from = NULL;
00163 to = NULL;
00164 subject = NULL;
00165 body = NULL;
00166 }
00167
00169 void send();
00170 };