 
#ifndef msgfolder_DEFINED
#define msgfolder_DEFINED 1
 
#include <class.h>
/* 
 * This file was generated by the Andrew class system preprocessor.
 * Don't make changes to this file as it is created from msgfolder.ch and will be
 * overwritten.  Make changes to msgfolder.ch instead.
 */ 
 
/* 
 * The following information was copied, as-is, from msgfolder.ch.
 */ 
 
#include <time.h>
#include <msgsubscr.h>








/* 
 * End of information copied from msgfolder.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
/* msgfolder has no super class */ 
 
 
/* 
 * Data structure for msgfolder 
 */ 
struct msgfolder { 
    struct {
	struct basicobject_methods *msgfolder_methods;
    } header;
    char *name;
    enum msgsubscription subscription;
    struct mssg *lastMessage;
    long lastMessageNumber;
    long orderPriority;
    boolean isPersonal;
    struct msgdatabase *database;
    struct keyset *idCache;
    struct keyset *replySet;

};

 
/* 
 * End of data structure for msgfolder.
 */ 
 


#ifndef msgfolder_PROGRAMMERVERSION
#define msgfolder_PROGRAMMERVERSION 1
#endif /* msgfolder_PROGRAMMERVERSION */

#ifdef msgfolder_VERSION
#undef msgfolder_VERSION
#endif /* msgfolder_VERSION */
#define msgfolder_VERSION ((((msgfolder_PROGRAMMERVERSION << 16) ^ (58 << 8) ^ sizeof(struct msgfolder)) & 0x7ffff) + 0x80000 + (65 << 20))

#define msgfolder_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *msgfolder__GetClassInfo(); \
  (void) class_EnterInfo(NULL, msgfolder_classheader.name, msgfolder__GetClassInfo, NULL, msgfolder_classheader.namekey); } 
 
#define msgfolder_StaticLoad()  \
    { \
    msgfolder_StaticLoadOnlyThisClass();  \
    } 
 
#define msgfolder_StaticEntry  {msgfolder_StaticLoad()} 
 
static struct classheader msgfolder_classheader = {
    msgfolder_VERSION,
    "msgfolder",
    "msgfolder",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* msgfolder_DEFINED */

#if !defined(msgfolder_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_msgfolder) && !defined(class_StaticEntriesOnly)
#define msgfolder_ROUTINESDEFINED

#define msgfolder_GetName(self) \
    ((* ((char * (*)())((self)->header.msgfolder_methods->routines[0]))) (self))
#define msgfolder_SetName(self,name) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[1]))) (self,name))
#define msgfolder_GetDatabase(self) \
    ((* ((struct msgdatabase * (*)())((self)->header.msgfolder_methods->routines[2]))) (self))
#define msgfolder_SetDatabase(self,database) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[3]))) (self,database))
#define msgfolder_GetDatabaseCollection(self) \
    ((* ((struct msgdatabasecollection * (*)())((self)->header.msgfolder_methods->routines[4]))) (self))
#define msgfolder_NumberOfMessages(self) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[5]))) (self))
#define msgfolder_NumberOfSubFolders(self) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[6]))) (self))
#define msgfolder_GetListOfSubFolders(self) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[7]))) (self))
#define msgfolder_HasNewMessages(self) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[8]))) (self))
#define msgfolder_PrintNewMessages(self) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[9]))) (self))
#define msgfolder_CheckMailboxes(self) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[10]))) (self))
#define msgfolder_GetProtection(self) \
    ((* ((enum msgprotection (*)())((self)->header.msgfolder_methods->routines[11]))) (self))
#define msgfolder_SetProtection(self,protect) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[12]))) (self,protect))
#define msgfolder_GetExplanationFile(self) \
    ((* ((FILE * (*)())((self)->header.msgfolder_methods->routines[13]))) (self))
#define msgfolder_ReleaseExplanationFile(self,fp) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[14]))) (self,fp))
#define msgfolder_DeleteMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.msgfolder_methods->routines[15]))) (self,message))
#define msgfolder_UndeleteMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.msgfolder_methods->routines[16]))) (self,message))
#define msgfolder_AppendMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.msgfolder_methods->routines[17]))) (self,message))
#define msgfolder_AddMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.msgfolder_methods->routines[18]))) (self,message))
#define msgfolder_Purge(self) \
    ((* ((boolerror (*)())((self)->header.msgfolder_methods->routines[19]))) (self))
#define msgfolder_NeedsToBePurged(self) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[20]))) (self))
#define msgfolder_CanPrefetch(self) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[21]))) (self))
#define msgfolder_Prefetch(self) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[22]))) (self))
#define msgfolder_GetAllMessages(self) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[23]))) (self))
#define msgfolder_GetMessages(self,include,rock) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[24]))) (self,include,rock))
#define msgfolder_ForEachMessage(self,stopFunc,rock) \
    ((* ((struct mssg * (*)())((self)->header.msgfolder_methods->routines[25]))) (self,stopFunc,rock))
#define msgfolder_GetMessagesSinceMessage(self,message) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[26]))) (self,message))
#define msgfolder_AreMessagesSinceMessage(self,message) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[27]))) (self,message))
#define msgfolder_AreMessagesSince(self,messageNumber) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[28]))) (self,messageNumber))
#define msgfolder_GetMessagesSince(self,messageNumber) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[29]))) (self,messageNumber))
#define msgfolder_AreMessagesSinceReceiveTime(self,time) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[30]))) (self,time))
#define msgfolder_GetMessagesSinceReceiveTime(self,time) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[31]))) (self,time))
#define msgfolder_GetMessageNumberSinceReceiveTime(self,time) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[32]))) (self,time))
#define msgfolder_AreMessagesSinceTime(self,time) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[33]))) (self,time))
#define msgfolder_GetMessagesSinceTime(self,time) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[34]))) (self,time))
#define msgfolder_GetMessageNumberSinceTime(self,time) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[35]))) (self,time))
#define msgfolder_GetNthMessage(self,num) \
    ((* ((struct mssg * (*)())((self)->header.msgfolder_methods->routines[36]))) (self,num))
#define msgfolder_GetMessageByID(self,id) \
    ((* ((struct mssg * (*)())((self)->header.msgfolder_methods->routines[37]))) (self,id))
#define msgfolder_SetLastReadMessage(self,message) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[38]))) (self,message))
#define msgfolder_GetLastReadMessage(self) \
    ((* ((struct mssg * (*)())((self)->header.msgfolder_methods->routines[39]))) (self))
#define msgfolder_GetLastReadMessageNumber(self) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[40]))) (self))
#define msgfolder_SetSubscription(self,subscription) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[41]))) (self,subscription))
#define msgfolder_GetSubscription(self) \
    ((* ((enum msgsubscription (*)())((self)->header.msgfolder_methods->routines[42]))) (self))
#define msgfolder_SetIsPersonal(self,value) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[43]))) (self,value))
#define msgfolder_IsPersonal(self) \
    ((* ((boolean (*)())((self)->header.msgfolder_methods->routines[44]))) (self))
#define msgfolder_SetOrderPriority(self,value) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[45]))) (self,value))
#define msgfolder_GetOrderPriority(self) \
    ((* ((long (*)())((self)->header.msgfolder_methods->routines[46]))) (self))
#define msgfolder_RemoveAll(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgfolder_methods->routines[47]))) (self))
#define msgfolder_Remove(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgfolder_methods->routines[48]))) (self))
#define msgfolder_RemoveAllMessages(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgfolder_methods->routines[49]))) (self))
#define msgfolder_RemoveAllSubFolders(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgfolder_methods->routines[50]))) (self))
#define msgfolder_AddMessageToCache(self,message) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[51]))) (self,message))
#define msgfolder_RemoveMessageFromCache(self,message) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[52]))) (self,message))
#define msgfolder_GetReplyList(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[53]))) (self,messageID))
#define msgfolder_GetAllReplies(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[54]))) (self,messageID))
#define msgfolder_GetRelatedMessages(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.msgfolder_methods->routines[55]))) (self,messageID))
#define msgfolder_AddToReplyList(self,replyMessageID,messageID) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[56]))) (self,replyMessageID,messageID))
#define msgfolder_RemoveFromReplyList(self,replyMessageID,messageID) \
    ((* ((void (*)())((self)->header.msgfolder_methods->routines[57]))) (self,replyMessageID,messageID))

#define msgfolder_NewFromObject(self) \
    ((* ((struct msgfolder * (*)())((self)->header.msgfolder_methods->info->procs->routines[0]))) (&msgfolder_classheader, (self)->header.msgfolder_methods->info->versionnumber))
#define msgfolder_New() \
    (msgfolder__New(NULL, msgfolder_VERSION))
#define msgfolder_Initialize(self) \
    (msgfolder__Initialize(NULL, self, msgfolder_VERSION))

#define msgfolder_Destroy(self) \
    ((* ((void (*)()) ((self)->header.msgfolder_methods->info->procs->routines[1]))) (&msgfolder_classheader, self))
#define msgfolder_Finalize(self) \
    (msgfolder__Finalize(NULL, self))

#define msgfolder_InitializeObject(self) \
    ((boolean) msgfolder__InitializeObject(NULL, self))
#define msgfolder_FinalizeObject(self) \
    ((void) msgfolder__FinalizeObject(NULL, self))
#define msgfolder_GetListOfChangedFoldersFromList(folderList) \
    ((struct extendedlist *) msgfolder__GetListOfChangedFoldersFromList(NULL, folderList))


#endif /* !defined(msgfolder_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_msgfolder ) && !defined(class_StaticEntriesOnly)*/



#ifndef AUXMODULE

struct msgfolder_methods {
    struct classinfo *info;
    long (*routines[58])();
};

struct msgfolder_classprocedures {
    struct classinfo *info;
    long (*routines[7])();
};

char * msgfolder__GetName();
void msgfolder__SetName();
struct msgdatabase * msgfolder__GetDatabase();
void msgfolder__SetDatabase();
struct msgdatabasecollection * msgfolder__GetDatabaseCollection();
long msgfolder__NumberOfMessages();
long msgfolder__NumberOfSubFolders();
struct extendedlist * msgfolder__GetListOfSubFolders();
boolean msgfolder__HasNewMessages();
void msgfolder__PrintNewMessages();
void msgfolder__CheckMailboxes();
enum msgprotection msgfolder__GetProtection();
void msgfolder__SetProtection();
FILE * msgfolder__GetExplanationFile();
void msgfolder__ReleaseExplanationFile();
boolerror msgfolder__DeleteMessage();
boolerror msgfolder__UndeleteMessage();
boolerror msgfolder__AppendMessage();
boolerror msgfolder__AddMessage();
boolerror msgfolder__Purge();
boolean msgfolder__NeedsToBePurged();
boolean msgfolder__CanPrefetch();
void msgfolder__Prefetch();
struct extendedlist * msgfolder__GetAllMessages();
struct extendedlist * msgfolder__GetMessages();
struct mssg * msgfolder__ForEachMessage();
struct extendedlist * msgfolder__GetMessagesSinceMessage();
boolean msgfolder__AreMessagesSinceMessage();
boolean msgfolder__AreMessagesSince();
struct extendedlist * msgfolder__GetMessagesSince();
boolean msgfolder__AreMessagesSinceReceiveTime();
struct extendedlist * msgfolder__GetMessagesSinceReceiveTime();
long msgfolder__GetMessageNumberSinceReceiveTime();
boolean msgfolder__AreMessagesSinceTime();
struct extendedlist * msgfolder__GetMessagesSinceTime();
long msgfolder__GetMessageNumberSinceTime();
struct mssg * msgfolder__GetNthMessage();
struct mssg * msgfolder__GetMessageByID();
void msgfolder__SetLastReadMessage();
struct mssg * msgfolder__GetLastReadMessage();
long msgfolder__GetLastReadMessageNumber();
void msgfolder__SetSubscription();
enum msgsubscription msgfolder__GetSubscription();
void msgfolder__SetIsPersonal();
boolean msgfolder__IsPersonal();
void msgfolder__SetOrderPriority();
long msgfolder__GetOrderPriority();
boolean /* error */ msgfolder__RemoveAll();
boolean /* error */ msgfolder__Remove();
boolean /* error */ msgfolder__RemoveAllMessages();
boolean /* error */ msgfolder__RemoveAllSubFolders();
void msgfolder__AddMessageToCache();
void msgfolder__RemoveMessageFromCache();
struct extendedlist * msgfolder__GetReplyList();
struct extendedlist * msgfolder__GetAllReplies();
struct extendedlist * msgfolder__GetRelatedMessages();
void msgfolder__AddToReplyList();
void msgfolder__RemoveFromReplyList();

static struct msgfolder_methods msgfolder_methodtable = {
    NULL,
    (long (*)()) msgfolder__GetName,
    (long (*)()) msgfolder__SetName,
    (long (*)()) msgfolder__GetDatabase,
    (long (*)()) msgfolder__SetDatabase,
    (long (*)()) msgfolder__GetDatabaseCollection,
    (long (*)()) msgfolder__NumberOfMessages,
    (long (*)()) msgfolder__NumberOfSubFolders,
    (long (*)()) msgfolder__GetListOfSubFolders,
    (long (*)()) msgfolder__HasNewMessages,
    (long (*)()) msgfolder__PrintNewMessages,
    (long (*)()) msgfolder__CheckMailboxes,
    (long (*)()) msgfolder__GetProtection,
    (long (*)()) msgfolder__SetProtection,
    (long (*)()) msgfolder__GetExplanationFile,
    (long (*)()) msgfolder__ReleaseExplanationFile,
    (long (*)()) msgfolder__DeleteMessage,
    (long (*)()) msgfolder__UndeleteMessage,
    (long (*)()) msgfolder__AppendMessage,
    (long (*)()) msgfolder__AddMessage,
    (long (*)()) msgfolder__Purge,
    (long (*)()) msgfolder__NeedsToBePurged,
    (long (*)()) msgfolder__CanPrefetch,
    (long (*)()) msgfolder__Prefetch,
    (long (*)()) msgfolder__GetAllMessages,
    (long (*)()) msgfolder__GetMessages,
    (long (*)()) msgfolder__ForEachMessage,
    (long (*)()) msgfolder__GetMessagesSinceMessage,
    (long (*)()) msgfolder__AreMessagesSinceMessage,
    (long (*)()) msgfolder__AreMessagesSince,
    (long (*)()) msgfolder__GetMessagesSince,
    (long (*)()) msgfolder__AreMessagesSinceReceiveTime,
    (long (*)()) msgfolder__GetMessagesSinceReceiveTime,
    (long (*)()) msgfolder__GetMessageNumberSinceReceiveTime,
    (long (*)()) msgfolder__AreMessagesSinceTime,
    (long (*)()) msgfolder__GetMessagesSinceTime,
    (long (*)()) msgfolder__GetMessageNumberSinceTime,
    (long (*)()) msgfolder__GetNthMessage,
    (long (*)()) msgfolder__GetMessageByID,
    (long (*)()) msgfolder__SetLastReadMessage,
    (long (*)()) msgfolder__GetLastReadMessage,
    (long (*)()) msgfolder__GetLastReadMessageNumber,
    (long (*)()) msgfolder__SetSubscription,
    (long (*)()) msgfolder__GetSubscription,
    (long (*)()) msgfolder__SetIsPersonal,
    (long (*)()) msgfolder__IsPersonal,
    (long (*)()) msgfolder__SetOrderPriority,
    (long (*)()) msgfolder__GetOrderPriority,
    (long (*)()) msgfolder__RemoveAll,
    (long (*)()) msgfolder__Remove,
    (long (*)()) msgfolder__RemoveAllMessages,
    (long (*)()) msgfolder__RemoveAllSubFolders,
    (long (*)()) msgfolder__AddMessageToCache,
    (long (*)()) msgfolder__RemoveMessageFromCache,
    (long (*)()) msgfolder__GetReplyList,
    (long (*)()) msgfolder__GetAllReplies,
    (long (*)()) msgfolder__GetRelatedMessages,
    (long (*)()) msgfolder__AddToReplyList,
    (long (*)()) msgfolder__RemoveFromReplyList
};

struct msgfolder *msgfolder__New();
void msgfolder__Destroy();
boolean msgfolder__Initialize();
void msgfolder__Finalize();
boolean msgfolder__InitializeObject();
void msgfolder__FinalizeObject();
struct extendedlist * msgfolder__GetListOfChangedFoldersFromList();

static struct msgfolder_classprocedures msgfolder_classproceduretable = {
    NULL,
    (long (*)()) msgfolder__New,
    (long (*)()) msgfolder__Destroy,
    (long (*)()) msgfolder__Initialize,
    (long (*)()) msgfolder__Finalize,
    (long (*)()) msgfolder__InitializeObject,
    (long (*)()) msgfolder__FinalizeObject,
    (long (*)()) msgfolder__GetListOfChangedFoldersFromList
};


static struct classinfo msgfolder_classinfo = {
    (struct basicobject_methods *) &msgfolder_methodtable,
    (struct basicobject_methods *) &msgfolder_classproceduretable,
    "msgfolder",
    "msgfolder",
    msgfolder_VERSION,
    NULL,
    NULL,
    NULL,
    NULL,
    &msgfolder_classheader,
    NULL,
    0
};

static int classinitialized = FALSE;

boolean msgfolder__Initialize(classID, self, versionnumber)
struct classheader *classID;
struct msgfolder *self;
unsigned long versionnumber;
{
    if (! classinitialized)  {
	classinitialized = TRUE;
	msgfolder_methodtable.info = &msgfolder_classinfo;
    }
    self->header.msgfolder_methods = (struct basicobject_methods *) &msgfolder_methodtable;
    if(!msgfolder__InitializeObject(classID, self)){
	return FALSE;
    }
    return TRUE;
}

struct msgfolder *msgfolder__New(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    struct msgfolder *self;
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != msgfolder_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of msgfolder requested!\n");
    }
    self = (struct msgfolder *) malloc (sizeof(struct msgfolder));
    if (! self)  {
	(void) fprintf(stderr, "Could not allocate msgfolder object!\n");
	return NULL;
    }
    if(!msgfolder__Initialize(classID, self, versionnumber)){
	free((char *)self);
	return NULL;
    }
    return self;
}

void msgfolder__Finalize(classID, self)
struct classheader *classID;
struct msgfolder *self;
{
    msgfolder__FinalizeObject(classID, self);
}

void msgfolder__Destroy(classID, self)
struct classheader *classID;
struct msgfolder *self;
{
    msgfolder__Finalize(classID, self);
    free(self);
}

struct classinfo *msgfolder__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != msgfolder_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of msgfolder requested!\n");
    }
    msgfolder_classproceduretable.info = &msgfolder_classinfo;
    return &msgfolder_classinfo;
}

/* 
 * THIS IS NEEDED BECAUSE OF THE WAY makedo WORKS.
 * HOPEFULLY, IT CAN BE REMOVED SOON.
 */ 
 
/* this patch is not needed as the class name is the same as the file name */
 
/* 
 * END OF THIS PATCH. 
 */ 
 
#endif /* AUXMODULE */
