00001 // mail.h 00002 // 00003 // $Id: mail.h,v 1.6 2005/06/25 19:48:13 sdennis Exp $ 00004 // 00005 00006 #ifndef _MAIL_H 00007 #define _MAIL_H 00008 00009 #include "copyright.h" 00010 00011 /* Some of this isn't implemented yet, but heralds the future! */ 00012 #define M_ISREAD 0x0001 00013 #define M_UNREAD 0x0FFE 00014 #define M_CLEARED 0x0002 00015 #define M_URGENT 0x0004 00016 #define M_MASS 0x0008 00017 #define M_SAFE 0x0010 00018 //#define M_RECEIPT 0x0020 00019 #define M_TAG 0x0040 00020 #define M_FORWARD 0x0080 00021 /* 0x0100 - 0x0F00 reserved for folder numbers */ 00022 #define M_FMASK 0xF0FF 00023 #define M_ALL 0x1000 /* Used in mail_selectors */ 00024 #define M_MSUNREAD 0x2000 /* Mail selectors */ 00025 /* 0x4000 - 0x8000 available */ 00026 #define M_REPLY 0x4000 00027 00028 #define MAX_FOLDERS 15 00029 #define FOLDER_NAME_LEN MBUF_SIZE 00030 #define FolderBit(f) (256 * (f)) 00031 00032 #define Urgent(m) (m->read & M_URGENT) 00033 #define Mass(m) (m->read & M_MASS) 00034 #define M_Safe(m) (m->read & M_SAFE) 00035 //#define Receipt(m) (m->read & M_RECEIPT) 00036 #define Forward(m) (m->read & M_FORWARD) 00037 #define Tagged(m) (m->read & M_TAG) 00038 #define Folder(m) ((m->read & ~M_FMASK) >> 8) 00039 #define Read(m) (m->read & M_ISREAD) 00040 #define Cleared(m) (m->read & M_CLEARED) 00041 #define Unread(m) (!Read(m)) 00042 #define All(ms) (ms.flags & M_ALL) 00043 #define ExpMail(x) (Wizard(x)) 00044 //#define Reply(m) (m->read & M_REPLY) 00045 00046 #define MA_INC 2 /* what interval to increase the malias list */ 00047 00048 #define DASH_LINE \ 00049 "---------------------------------------------------------------------------" 00050 00051 typedef unsigned int mail_flag; 00052 00053 struct mail 00054 { 00055 struct mail *next; 00056 struct mail *prev; 00057 dbref to; 00058 dbref from; 00059 int number; 00060 char *time; 00061 char *subject; 00062 char *tolist; 00063 int read; 00064 }; 00065 00066 struct mail_selector 00067 { 00068 int low; 00069 int high; 00070 mail_flag flags; 00071 dbref player; 00072 int days; 00073 int day_comp; 00074 }; 00075 00076 struct muser 00077 { 00078 dbref who; 00079 char *fwd; 00080 char *vacation; 00081 dbref *afilter; 00082 int status; 00083 }; 00084 00085 typedef struct mail_body MAILBODY; 00086 struct mail_body 00087 { 00088 char *m_pMessage; 00089 int m_nRefs; 00090 }; 00091 00092 class MailList 00093 { 00094 private: 00095 struct mail *m_miHead; 00096 struct mail *m_mi; 00097 dbref m_player; 00098 bool m_bRemoved; 00099 00100 public: 00101 MailList(dbref player); 00102 struct mail *FirstItem(void); 00103 struct mail *NextItem(void); 00104 bool IsEnd(void); 00105 void RemoveItem(void); 00106 void RemoveAll(void); 00107 void AppendItem(struct mail *newp); 00108 }; 00109 00110 #endif // !_MAIL_H