#pragma interface #ifndef IMAP_H #define IMAP_H struct IMAP_INFO{ SSTRING domain; SSTRING user; SSTRING pass; SSTRING folder; // Current folder bool readonly; time_t sessiontime; // Start of imap session }; struct IMAP_STUFF{ void *data; int userid; int domainid; int folderid; }; struct IMAP_STATUS{ int uid; int flags; int exists; int recent; }; class IMAP_CLIENT; #define _TLMP_IMAP struct _F_IMAP{ class _F_IMAP_private *priv; void sendf (const char *ctl, ...); #define _F_IMAP_getmsg(nom) void nom getmsg (const IMAP_INFO &info, IMAP_STUFF &data, int msgid) virtual _F_IMAP_getmsg( )=0; #define _F_IMAP_listfolders(nom) void nom listfolders(const IMAP_INFO &info, IMAP_STUFF &data, SSTRINGS &tb) virtual _F_IMAP_listfolders( )=0; #define _F_IMAP_status(nom) void nom status(const IMAP_INFO &info, IMAP_STUFF &data, IMAP_STATUS &rep) virtual _F_IMAP_status( )=0; #define _F_IMAP_create(nom) int nom create(const IMAP_INFO &info, IMAP_STUFF &data, const char *folder) virtual _F_IMAP_create( )=0; #define _F_IMAP_delbox(nom) int nom delbox(const IMAP_INFO &info, IMAP_STUFF &data, const char *folder) virtual _F_IMAP_delbox( )=0; #define _F_IMAP_rename(nom) int nom rename(const IMAP_INFO &info, IMAP_STUFF &data, const char *oldfolder, const char *newfolder) virtual _F_IMAP_rename( )=0; #define _F_IMAP_expunge(nom) int nom expunge(const IMAP_INFO &info, IMAP_STUFF &data, const char *folder, bool verbose) virtual _F_IMAP_expunge( )=0; #define _F_IMAP_listmsgs(nom) void nom listmsgs(int uid, const char *folder) virtual _F_IMAP_listmsgs( )=0; #define _F_IMAP_send(nom) int nom send (int client, const char *line, int len) virtual _F_IMAP_send( ); #define _F_IMAP_auth(nom) bool nom auth (IMAP_INFO &info, IMAP_STUFF &data, const char *user, const char *password) virtual _F_IMAP_auth( )=0; }; class IMAP{ class _F_IMAP_private *priv; /*~PROTOBEG~ IMAP */ public: IMAP (_F_IMAP&c); int endclient (int client); private: bool folder_exist (IMAP_CLIENT *cli, const char *folder); public: int newclient (int client); private: void notsupported (int client, const char *tag); public: int oneline (int client, const char *line); private: void select (int client, const char *tag, IMAP_CLIENT *cli, const char *line, bool examine); public: void sendf (int client, const char *ctl, ...); ~IMAP (void); /*~PROTOEND~ IMAP */ }; #endif