 
#ifndef mhfolder_DEFINED
#define mhfolder_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 mhfolder.ch and will be
 * overwritten.  Make changes to mhfolder.ch instead.
 */ 
 
/* 
 * The following information was copied, as-is, from mhfolder.ch.
 */ 
 







/* 
 * End of information copied from mhfolder.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_msgfolder
#include "msgfolder.ih"
#undef dontDefineRoutinesFor_msgfolder

 
 
/* 
 * Data structure for mhfolder 
 */ 
struct mhfolder { 
    union {
	struct basicobject_methods *mhfolder_methods;
	struct msgfolder msgfolder;
    } header;
    long lastMessageFileNumber;
    time_t receiveTimeStamp;
    time_t dirTime;
    boolean haveScanned;
    char *path;
    struct extendedlist *messageList;

};

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


#ifndef mhfolder_PROGRAMMERVERSION
#define mhfolder_PROGRAMMERVERSION 1
#endif /* mhfolder_PROGRAMMERVERSION */

#ifdef mhfolder_VERSION
#undef mhfolder_VERSION
#endif /* mhfolder_VERSION */
#define mhfolder_VERSION ((((mhfolder_PROGRAMMERVERSION << 16) ^ (66 << 8) ^ sizeof(struct mhfolder)) & 0x7ffff) + 0x80000 + (129 << 20))

#define mhfolder_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *mhfolder__GetClassInfo(); \
  (void) class_EnterInfo(NULL, mhfolder_classheader.name, mhfolder__GetClassInfo, NULL, mhfolder_classheader.namekey); } 
 
#define mhfolder_StaticLoad()  \
    { \
    msgfolder_StaticLoad(); \
    mhfolder_StaticLoadOnlyThisClass();  \
    } 
 
#define mhfolder_StaticEntry  {mhfolder_StaticLoad()} 
 
static struct classheader mhfolder_classheader = {
    mhfolder_VERSION,
    "mhfolder",
    "mhfolder",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* mhfolder_DEFINED */

#if !defined(mhfolder_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_mhfolder) && !defined(class_StaticEntriesOnly)
#define mhfolder_ROUTINESDEFINED

#define mhfolder_GetName(self) \
    ((* ((char * (*)())((self)->header.mhfolder_methods->routines[0]))) (self))
#define mhfolder_SetName(self,name) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[1]))) (self,name))
#define mhfolder_GetDatabase(self) \
    ((* ((struct msgdatabase * (*)())((self)->header.mhfolder_methods->routines[2]))) (self))
#define mhfolder_SetDatabase(self,database) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[3]))) (self,database))
#define mhfolder_GetDatabaseCollection(self) \
    ((* ((struct msgdatabasecollection * (*)())((self)->header.mhfolder_methods->routines[4]))) (self))
#define mhfolder_NumberOfMessages(self) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[5]))) (self))
#define mhfolder_NumberOfSubFolders(self) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[6]))) (self))
#define mhfolder_GetListOfSubFolders(self) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[7]))) (self))
#define mhfolder_HasNewMessages(self) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[8]))) (self))
#define mhfolder_PrintNewMessages(self) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[9]))) (self))
#define mhfolder_CheckMailboxes(self) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[10]))) (self))
#define mhfolder_GetProtection(self) \
    ((* ((enum msgprotection (*)())((self)->header.mhfolder_methods->routines[11]))) (self))
#define mhfolder_SetProtection(self,protect) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[12]))) (self,protect))
#define mhfolder_GetExplanationFile(self) \
    ((* ((FILE * (*)())((self)->header.mhfolder_methods->routines[13]))) (self))
#define mhfolder_ReleaseExplanationFile(self,fp) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[14]))) (self,fp))
#define mhfolder_DeleteMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.mhfolder_methods->routines[15]))) (self,message))
#define mhfolder_UndeleteMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.mhfolder_methods->routines[16]))) (self,message))
#define mhfolder_AppendMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.mhfolder_methods->routines[17]))) (self,message))
#define mhfolder_AddMessage(self,message) \
    ((* ((boolerror (*)())((self)->header.mhfolder_methods->routines[18]))) (self,message))
#define mhfolder_Purge(self) \
    ((* ((boolerror (*)())((self)->header.mhfolder_methods->routines[19]))) (self))
#define mhfolder_NeedsToBePurged(self) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[20]))) (self))
#define mhfolder_CanPrefetch(self) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[21]))) (self))
#define mhfolder_Prefetch(self) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[22]))) (self))
#define mhfolder_GetAllMessages(self) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[23]))) (self))
#define mhfolder_GetMessages(self,include,rock) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[24]))) (self,include,rock))
#define mhfolder_ForEachMessage(self,stopFunc,rock) \
    ((* ((struct mssg * (*)())((self)->header.mhfolder_methods->routines[25]))) (self,stopFunc,rock))
#define mhfolder_GetMessagesSinceMessage(self,message) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[26]))) (self,message))
#define mhfolder_AreMessagesSinceMessage(self,message) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[27]))) (self,message))
#define mhfolder_AreMessagesSince(self,messageNumber) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[28]))) (self,messageNumber))
#define mhfolder_GetMessagesSince(self,messageNumber) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[29]))) (self,messageNumber))
#define mhfolder_AreMessagesSinceReceiveTime(self,time) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[30]))) (self,time))
#define mhfolder_GetMessagesSinceReceiveTime(self,time) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[31]))) (self,time))
#define mhfolder_GetMessageNumberSinceReceiveTime(self,time) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[32]))) (self,time))
#define mhfolder_AreMessagesSinceTime(self,time) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[33]))) (self,time))
#define mhfolder_GetMessagesSinceTime(self,time) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[34]))) (self,time))
#define mhfolder_GetMessageNumberSinceTime(self,time) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[35]))) (self,time))
#define mhfolder_GetNthMessage(self,num) \
    ((* ((struct mssg * (*)())((self)->header.mhfolder_methods->routines[36]))) (self,num))
#define mhfolder_GetMessageByID(self,id) \
    ((* ((struct mssg * (*)())((self)->header.mhfolder_methods->routines[37]))) (self,id))
#define mhfolder_SetLastReadMessage(self,message) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[38]))) (self,message))
#define mhfolder_GetLastReadMessage(self) \
    ((* ((struct mssg * (*)())((self)->header.mhfolder_methods->routines[39]))) (self))
#define mhfolder_GetLastReadMessageNumber(self) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[40]))) (self))
#define mhfolder_SetSubscription(self,subscription) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[41]))) (self,subscription))
#define mhfolder_GetSubscription(self) \
    ((* ((enum msgsubscription (*)())((self)->header.mhfolder_methods->routines[42]))) (self))
#define mhfolder_SetIsPersonal(self,value) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[43]))) (self,value))
#define mhfolder_IsPersonal(self) \
    ((* ((boolean (*)())((self)->header.mhfolder_methods->routines[44]))) (self))
#define mhfolder_SetOrderPriority(self,value) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[45]))) (self,value))
#define mhfolder_GetOrderPriority(self) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[46]))) (self))
#define mhfolder_RemoveAll(self) \
    ((* ((boolean /* error */ (*)())((self)->header.mhfolder_methods->routines[47]))) (self))
#define mhfolder_Remove(self) \
    ((* ((boolean /* error */ (*)())((self)->header.mhfolder_methods->routines[48]))) (self))
#define mhfolder_RemoveAllMessages(self) \
    ((* ((boolean /* error */ (*)())((self)->header.mhfolder_methods->routines[49]))) (self))
#define mhfolder_RemoveAllSubFolders(self) \
    ((* ((boolean /* error */ (*)())((self)->header.mhfolder_methods->routines[50]))) (self))
#define mhfolder_AddMessageToCache(self,message) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[51]))) (self,message))
#define mhfolder_RemoveMessageFromCache(self,message) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[52]))) (self,message))
#define mhfolder_GetReplyList(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[53]))) (self,messageID))
#define mhfolder_GetAllReplies(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[54]))) (self,messageID))
#define mhfolder_GetRelatedMessages(self,messageID) \
    ((* ((struct extendedlist * (*)())((self)->header.mhfolder_methods->routines[55]))) (self,messageID))
#define mhfolder_AddToReplyList(self,replyMessageID,messageID) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[56]))) (self,replyMessageID,messageID))
#define mhfolder_RemoveFromReplyList(self,replyMessageID,messageID) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[57]))) (self,replyMessageID,messageID))
#define mhfolder_GetPath(self) \
    ((* ((char * (*)())((self)->header.mhfolder_methods->routines[58]))) (self))
#define mhfolder_SetPath(self,path) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[59]))) (self,path))
#define mhfolder_GetReceiveTimeStamp(self) \
    ((* ((time_t (*)())((self)->header.mhfolder_methods->routines[60]))) (self))
#define mhfolder_SetReceiveTimeStamp(self,time) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[61]))) (self,time))
#define mhfolder_GetLastMessageFileNumber(self) \
    ((* ((long (*)())((self)->header.mhfolder_methods->routines[62]))) (self))
#define mhfolder_SetLastMessageFileNumber(self,number) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[63]))) (self,number))
#define mhfolder_Scan(self,force) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[64]))) (self,force))
#define mhfolder_AddMessageFiles(self,fileList) \
    ((* ((void (*)())((self)->header.mhfolder_methods->routines[65]))) (self,fileList))

#define mhfolder_NewFromObject(self) \
    ((* ((struct mhfolder * (*)())((self)->header.mhfolder_methods->info->procs->routines[0]))) (&mhfolder_classheader, (self)->header.mhfolder_methods->info->versionnumber))
#define mhfolder_New() \
    (mhfolder__New(NULL, mhfolder_VERSION))
#define mhfolder_Initialize(self) \
    (mhfolder__Initialize(NULL, self, mhfolder_VERSION))

#define mhfolder_Destroy(self) \
    ((* ((void (*)()) ((self)->header.mhfolder_methods->info->procs->routines[1]))) (&mhfolder_classheader, self))
#define mhfolder_Finalize(self) \
    (mhfolder__Finalize(NULL, self))

#define mhfolder_InitializeObject(self) \
    ((boolean) mhfolder__InitializeObject(NULL, self))
#define mhfolder_FinalizeObject(self) \
    ((void) mhfolder__FinalizeObject(NULL, self))
#define mhfolder_Get(database,folderName,pathName) \
    ((struct mhfolder *) mhfolder__Get(NULL, database,folderName,pathName))
#define mhfolder_CreateNewFolder(database,folderName,pathName,protection) \
    ((struct mhfolder *) mhfolder__CreateNewFolder(NULL, database,folderName,pathName,protection))


#endif /* !defined(mhfolder_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_mhfolder ) && !defined(class_StaticEntriesOnly)*/

#define super_GetName(self)  \
    ((* ((char * (*)()) (mhfolder_supermethods->routines[0]))) (self))
#define super_SetName(self,name)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[1]))) (self,name))
#define super_GetDatabase(self)  \
    ((* ((struct msgdatabase * (*)()) (mhfolder_supermethods->routines[2]))) (self))
#define super_SetDatabase(self,database)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[3]))) (self,database))
#define super_GetDatabaseCollection(self)  \
    ((* ((struct msgdatabasecollection * (*)()) (mhfolder_supermethods->routines[4]))) (self))
#define super_NumberOfMessages(self)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[5]))) (self))
#define super_NumberOfSubFolders(self)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[6]))) (self))
#define super_GetListOfSubFolders(self)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[7]))) (self))
#define super_HasNewMessages(self)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[8]))) (self))
#define super_PrintNewMessages(self)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[9]))) (self))
#define super_CheckMailboxes(self)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[10]))) (self))
#define super_GetProtection(self)  \
    ((* ((enum msgprotection (*)()) (mhfolder_supermethods->routines[11]))) (self))
#define super_SetProtection(self,protect)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[12]))) (self,protect))
#define super_GetExplanationFile(self)  \
    ((* ((FILE * (*)()) (mhfolder_supermethods->routines[13]))) (self))
#define super_ReleaseExplanationFile(self,fp)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[14]))) (self,fp))
#define super_DeleteMessage(self,message)  \
    ((* ((boolerror (*)()) (mhfolder_supermethods->routines[15]))) (self,message))
#define super_UndeleteMessage(self,message)  \
    ((* ((boolerror (*)()) (mhfolder_supermethods->routines[16]))) (self,message))
#define super_AppendMessage(self,message)  \
    ((* ((boolerror (*)()) (mhfolder_supermethods->routines[17]))) (self,message))
#define super_AddMessage(self,message)  \
    ((* ((boolerror (*)()) (mhfolder_supermethods->routines[18]))) (self,message))
#define super_Purge(self)  \
    ((* ((boolerror (*)()) (mhfolder_supermethods->routines[19]))) (self))
#define super_NeedsToBePurged(self)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[20]))) (self))
#define super_CanPrefetch(self)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[21]))) (self))
#define super_Prefetch(self)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[22]))) (self))
#define super_GetAllMessages(self)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[23]))) (self))
#define super_GetMessages(self,include,rock)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[24]))) (self,include,rock))
#define super_ForEachMessage(self,stopFunc,rock)  \
    ((* ((struct mssg * (*)()) (mhfolder_supermethods->routines[25]))) (self,stopFunc,rock))
#define super_GetMessagesSinceMessage(self,message)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[26]))) (self,message))
#define super_AreMessagesSinceMessage(self,message)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[27]))) (self,message))
#define super_AreMessagesSince(self,messageNumber)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[28]))) (self,messageNumber))
#define super_GetMessagesSince(self,messageNumber)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[29]))) (self,messageNumber))
#define super_AreMessagesSinceReceiveTime(self,time)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[30]))) (self,time))
#define super_GetMessagesSinceReceiveTime(self,time)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[31]))) (self,time))
#define super_GetMessageNumberSinceReceiveTime(self,time)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[32]))) (self,time))
#define super_AreMessagesSinceTime(self,time)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[33]))) (self,time))
#define super_GetMessagesSinceTime(self,time)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[34]))) (self,time))
#define super_GetMessageNumberSinceTime(self,time)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[35]))) (self,time))
#define super_GetNthMessage(self,num)  \
    ((* ((struct mssg * (*)()) (mhfolder_supermethods->routines[36]))) (self,num))
#define super_GetMessageByID(self,id)  \
    ((* ((struct mssg * (*)()) (mhfolder_supermethods->routines[37]))) (self,id))
#define super_SetLastReadMessage(self,message)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[38]))) (self,message))
#define super_GetLastReadMessage(self)  \
    ((* ((struct mssg * (*)()) (mhfolder_supermethods->routines[39]))) (self))
#define super_GetLastReadMessageNumber(self)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[40]))) (self))
#define super_SetSubscription(self,subscription)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[41]))) (self,subscription))
#define super_GetSubscription(self)  \
    ((* ((enum msgsubscription (*)()) (mhfolder_supermethods->routines[42]))) (self))
#define super_SetIsPersonal(self,value)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[43]))) (self,value))
#define super_IsPersonal(self)  \
    ((* ((boolean (*)()) (mhfolder_supermethods->routines[44]))) (self))
#define super_SetOrderPriority(self,value)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[45]))) (self,value))
#define super_GetOrderPriority(self)  \
    ((* ((long (*)()) (mhfolder_supermethods->routines[46]))) (self))
#define super_RemoveAll(self)  \
    ((* ((boolean /* error */ (*)()) (mhfolder_supermethods->routines[47]))) (self))
#define super_Remove(self)  \
    ((* ((boolean /* error */ (*)()) (mhfolder_supermethods->routines[48]))) (self))
#define super_RemoveAllMessages(self)  \
    ((* ((boolean /* error */ (*)()) (mhfolder_supermethods->routines[49]))) (self))
#define super_RemoveAllSubFolders(self)  \
    ((* ((boolean /* error */ (*)()) (mhfolder_supermethods->routines[50]))) (self))
#define super_AddMessageToCache(self,message)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[51]))) (self,message))
#define super_RemoveMessageFromCache(self,message)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[52]))) (self,message))
#define super_GetReplyList(self,messageID)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[53]))) (self,messageID))
#define super_GetAllReplies(self,messageID)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[54]))) (self,messageID))
#define super_GetRelatedMessages(self,messageID)  \
    ((* ((struct extendedlist * (*)()) (mhfolder_supermethods->routines[55]))) (self,messageID))
#define super_AddToReplyList(self,replyMessageID,messageID)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[56]))) (self,replyMessageID,messageID))
#define super_RemoveFromReplyList(self,replyMessageID,messageID)  \
    ((* ((void (*)()) (mhfolder_supermethods->routines[57]))) (self,replyMessageID,messageID))

extern struct basicobject_methods *mhfolder_supermethods;

#ifndef AUXMODULE

struct basicobject_methods *mhfolder_supermethods;

struct mhfolder_methods {
    struct classinfo *info;
    long (*routines[66])();
};

struct mhfolder_classprocedures {
    struct classinfo *info;
    long (*routines[8])();
};

long mhfolder__NumberOfMessages();
long mhfolder__NumberOfSubFolders();
struct extendedlist * mhfolder__GetListOfSubFolders();
struct extendedlist * mhfolder__GetAllMessages();
struct mssg * mhfolder__ForEachMessage();
struct mssg * mhfolder__GetNthMessage();
void mhfolder__SetLastReadMessage();
boolean /* error */ mhfolder__Remove();
boolean /* error */ mhfolder__RemoveAllMessages();
char * mhfolder__GetPath();
void mhfolder__SetPath();
time_t mhfolder__GetReceiveTimeStamp();
void mhfolder__SetReceiveTimeStamp();
long mhfolder__GetLastMessageFileNumber();
void mhfolder__SetLastMessageFileNumber();
void mhfolder__Scan();
void mhfolder__AddMessageFiles();

static struct mhfolder_methods mhfolder_methodtable = {
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) mhfolder__NumberOfMessages,
    (long (*)()) mhfolder__NumberOfSubFolders,
    (long (*)()) mhfolder__GetListOfSubFolders,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) mhfolder__GetAllMessages,
    NULL,
    (long (*)()) mhfolder__ForEachMessage,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) mhfolder__GetNthMessage,
    NULL,
    (long (*)()) mhfolder__SetLastReadMessage,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) mhfolder__Remove,
    (long (*)()) mhfolder__RemoveAllMessages,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) mhfolder__GetPath,
    (long (*)()) mhfolder__SetPath,
    (long (*)()) mhfolder__GetReceiveTimeStamp,
    (long (*)()) mhfolder__SetReceiveTimeStamp,
    (long (*)()) mhfolder__GetLastMessageFileNumber,
    (long (*)()) mhfolder__SetLastMessageFileNumber,
    (long (*)()) mhfolder__Scan,
    (long (*)()) mhfolder__AddMessageFiles
};

struct mhfolder *mhfolder__New();
void mhfolder__Destroy();
boolean mhfolder__Initialize();
void mhfolder__Finalize();
boolean mhfolder__InitializeObject();
void mhfolder__FinalizeObject();
struct mhfolder * mhfolder__Get();
struct mhfolder * mhfolder__CreateNewFolder();

static struct mhfolder_classprocedures mhfolder_classproceduretable = {
    NULL,
    (long (*)()) mhfolder__New,
    (long (*)()) mhfolder__Destroy,
    (long (*)()) mhfolder__Initialize,
    (long (*)()) mhfolder__Finalize,
    (long (*)()) mhfolder__InitializeObject,
    (long (*)()) mhfolder__FinalizeObject,
    (long (*)()) mhfolder__Get,
    (long (*)()) mhfolder__CreateNewFolder
};


static struct classinfo mhfolder_classinfo = {
    (struct basicobject_methods *) &mhfolder_methodtable,
    (struct basicobject_methods *) &mhfolder_classproceduretable,
    "mhfolder",
    "mhfolder",
    mhfolder_VERSION,
    "msgfolder",
    "msgfolder",
    NULL,
    NULL,
    &mhfolder_classheader,
    NULL,
    0
};

static int classinitialized = FALSE;

boolean mhfolder__Initialize(classID, self, versionnumber)
struct classheader *classID;
struct mhfolder *self;
unsigned long versionnumber;
{
    /* msgfolder_Initialize(self); */
    if(!(*((boolean (*)()) (msgfolder_classheader.classprocedures->routines[2])))(&msgfolder_classheader,self, msgfolder_VERSION))
	return FALSE;
    if (! classinitialized)  {
	classinitialized = TRUE;
	mhfolder_supermethods =self->header.mhfolder_methods;
	{
	    long (**p)() = &(mhfolder_methodtable.routines[0]);
	    long (**q)() = &(self->header.mhfolder_methods->routines[0]);
	    long i;

	    for (i = 0; i < 58; i++)  {
		if (*p == NULL)
		    *p = *q;
		p++;
		q++;
	    }
	}
	mhfolder_classinfo.superclass = mhfolder_supermethods->info;
	mhfolder_methodtable.info = &mhfolder_classinfo;
    }
    self->header.mhfolder_methods = (struct basicobject_methods *) &mhfolder_methodtable;
    if(!mhfolder__InitializeObject(classID, self)){
	/* msgfolder_Finalize(self); */
	(*((void (*)()) (msgfolder_classheader.classprocedures->routines[3])))(&msgfolder_classheader,self);
	return FALSE;
    }
    return TRUE;
}

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

void mhfolder__Finalize(classID, self)
struct classheader *classID;
struct mhfolder *self;
{
    mhfolder__FinalizeObject(classID, self);
    /* msgfolder_Finalize(self); */
    (*((void (*)()) (msgfolder_classheader.classprocedures->routines[3])))(&msgfolder_classheader,self);
}

void mhfolder__Destroy(classID, self)
struct classheader *classID;
struct mhfolder *self;
{
    mhfolder__Finalize(classID, self);
    free(self);
}

struct classinfo *mhfolder__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != mhfolder_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of mhfolder requested!\n");
    }
    mhfolder_classproceduretable.info = &mhfolder_classinfo;
    return &mhfolder_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 */
