#ifndef DBOX_MTOOL_H #define DBOX_MTOOL_H #include #include #include class messaget { public: const char *data; // pointer to the begin of the message const char *endofmail; // pointer to end of message const char *endoffile; // pointer to end of file dword len, headerlen; // length of the message body and of the header virtual void copyheaderid(char *dest, const char *id, size_t maxlen) const=0; // copies a header id from a message to a string virtual void copyheaderid(std::string &dest, const char *id) const=0; // copies a header id from a message to a string virtual void copyheadertext(char *dest, const char *text, size_t maxlen) const=0; // copies the content of a header to a string virtual void copyheadertext(std::string &dest, const char *text) const=0; // copies the content of a header to a string virtual bool parseline(const char **start, const char **id, const char **text) const=0; virtual bool parse()=0; // parse a message virtual bool eof() const { return data==endoffile; } virtual bool findheader(const char **start, const char *id, const char **text) const; // TRUE: nothing found // FALSE: found a header virtual bool findsingleheader(char *dest, const char *id, size_t maxlen) const; // TRUE: nothing found // FALSE: found a header virtual bool findsingleheader(std::string &dest, const char *id) const; virtual bool findsingleheader(std::string &dest, const std::string &id) const; // TRUE: nothing found // FALSE: found a header virtual bool copybody(FILE *outfile) const; // copy the body to a file virtual bool copybody(std::ostream &out) const; // copy the body to a stream virtual bool copy(FILE *outfile) const; // copy the complete message to a file virtual bool copy(std::ostream &out) const; // copy the complete message to a stream virtual bool copyheader(FILE *outfile) const; // copy the header to a file virtual bool copyheader(std::ostream &out) const; // copy the header to a stream }; bool getline(messaget *m, char *line, size_t maxlen, const char **ptr); bool getline(const messaget &m, std::string &line, const char *&ptr); #endif