 
#ifndef msgdatabase_DEFINED
#define msgdatabase_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 msgdb.ch and will be
 * overwritten.  Make changes to msgdb.ch instead.
 */ 
 
/* 
 * The following information was copied, as-is, from msgdb.ch.
 */ 
 
#include <time.h>
#include <msgsubscr.h>






/* 
 * End of information copied from msgdb.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
/* msgdatabase has no super class */ 
 
 
/* 
 * Data structure for msgdatabase 
 */ 
struct msgdatabase { 
    struct {
	struct basicobject_methods *msgdatabase_methods;
    } header;
    struct msgdatabasecollection *dbcol;
    char *path;
    char *name;
    long priority;
    struct avlkeyset *folderCache;

};

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


#ifndef msgdatabase_PROGRAMMERVERSION
#define msgdatabase_PROGRAMMERVERSION 1
#endif /* msgdatabase_PROGRAMMERVERSION */

#ifdef msgdatabase_VERSION
#undef msgdatabase_VERSION
#endif /* msgdatabase_VERSION */
#define msgdatabase_VERSION ((((msgdatabase_PROGRAMMERVERSION << 16) ^ (30 << 8) ^ sizeof(struct msgdatabase)) & 0x7ffff) + 0x80000 + (1 << 20))

#define msgdatabase_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *msgdatabase__GetClassInfo(); \
  (void) class_EnterInfo(NULL, msgdatabase_classheader.name, msgdatabase__GetClassInfo, NULL, msgdatabase_classheader.namekey); } 
 
#define msgdatabase_StaticLoad()  \
    { \
    msgdatabase_StaticLoadOnlyThisClass();  \
    } 
 
#define msgdatabase_StaticEntry  {msgdatabase_StaticLoad()} 
 
static struct classheader msgdatabase_classheader = {
    msgdatabase_VERSION,
    "msgdatabase",
    "msgdb",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* msgdatabase_DEFINED */

#if !defined(msgdatabase_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_msgdatabase) && !defined(class_StaticEntriesOnly)
#define msgdatabase_ROUTINESDEFINED

#define msgdatabase_GetDatabaseCollection(self) \
 ((self)->dbcol)
#define msgdatabase_SetDatabaseCollection(self,dbc) \
 ((self)->dbcol = dbc)
#define msgdatabase_SetAttributes(self,attrValList) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[0]))) (self,attrValList))
#define msgdatabase_GetFolder(self,folderName) \
    ((* ((struct msgfolder * (*)())((self)->header.msgdatabase_methods->routines[1]))) (self,folderName))
#define msgdatabase_CreateFolder(self,folderName) \
    ((* ((struct msgfolder * (*)())((self)->header.msgdatabase_methods->routines[2]))) (self,folderName))
#define msgdatabase_CanDeleteFolder(self,folder,deleteMessages,deleteSubFolders) \
    ((* ((boolean (*)())((self)->header.msgdatabase_methods->routines[3]))) (self,folder,deleteMessages,deleteSubFolders))
#define msgdatabase_DeleteFolder(self,folder) \
    ((* ((boolean /* error */ (*)())((self)->header.msgdatabase_methods->routines[4]))) (self,folder))
#define msgdatabase_RenameFolder(self,folder,newName) \
    ((* ((boolerror (*)())((self)->header.msgdatabase_methods->routines[5]))) (self,folder,newName))
#define msgdatabase_IsParentFolder(self,folder,prospectiveParent) \
    ((* ((boolean (*)())((self)->header.msgdatabase_methods->routines[6]))) (self,folder,prospectiveParent))
#define msgdatabase_GetSubFolderBane(self,folder,ancestor,name) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[7]))) (self,folder,ancestor,name))
#define msgdatabase_GetListOfAllFolders(self,pattern) \
    ((* ((struct extendedlist * (*)())((self)->header.msgdatabase_methods->routines[8]))) (self,pattern))
#define msgdatabase_GetListOfFolders(self,testProc,rock,pattern) \
    ((* ((struct extendedlist * (*)())((self)->header.msgdatabase_methods->routines[9]))) (self,testProc,rock,pattern))
#define msgdatabase_GetListOfSubscribedFolders(self,pattern) \
    ((* ((struct extendedlist * (*)())((self)->header.msgdatabase_methods->routines[10]))) (self,pattern))
#define msgdatabase_GetListOfPersonalFolders(self,pattern) \
    ((* ((struct extendedlist * (*)())((self)->header.msgdatabase_methods->routines[11]))) (self,pattern))
#define msgdatabase_CacheFolder(self,newFolder) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[12]))) (self,newFolder))
#define msgdatabase_UncacheFolder(self,folder) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[13]))) (self,folder))
#define msgdatabase_GetCacheList(self) \
    ((* ((struct extendedlist * (*)())((self)->header.msgdatabase_methods->routines[14]))) (self))
#define msgdatabase_NumberOfCachedFolders(self) \
    ((* ((long (*)())((self)->header.msgdatabase_methods->routines[15]))) (self))
#define msgdatabase_GetPath(self) \
    ((* ((char * (*)())((self)->header.msgdatabase_methods->routines[16]))) (self))
#define msgdatabase_SetPath(self,path) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[17]))) (self,path))
#define msgdatabase_GetName(self) \
    ((* ((char * (*)())((self)->header.msgdatabase_methods->routines[18]))) (self))
#define msgdatabase_SetName(self,name) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[19]))) (self,name))
#define msgdatabase_SetPriority(self,value) \
    ((* ((void (*)())((self)->header.msgdatabase_methods->routines[20]))) (self,value))
#define msgdatabase_GetPriority(self) \
    ((* ((long (*)())((self)->header.msgdatabase_methods->routines[21]))) (self))
#define msgdatabase_NumberOfMailBoxes(self) \
    ((* ((long (*)())((self)->header.msgdatabase_methods->routines[22]))) (self))
#define msgdatabase_GetMailBox(self,num) \
    ((* ((struct msgmailbox * (*)())((self)->header.msgdatabase_methods->routines[23]))) (self,num))
#define msgdatabase_IsThereNewMail(self) \
    ((* ((boolean (*)())((self)->header.msgdatabase_methods->routines[24]))) (self))
#define msgdatabase_CountOfNewMail(self) \
    ((* ((long (*)())((self)->header.msgdatabase_methods->routines[25]))) (self))
#define msgdatabase_ProcessNewMail(self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize) \
    ((* ((boolean (*)())((self)->header.msgdatabase_methods->routines[26]))) (self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize))
#define msgdatabase_ReadProfile(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgdatabase_methods->routines[27]))) (self))
#define msgdatabase_SaveProfile(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgdatabase_methods->routines[28]))) (self))
#define msgdatabase_CheckpointProfile(self) \
    ((* ((boolean /* error */ (*)())((self)->header.msgdatabase_methods->routines[29]))) (self))

#define msgdatabase_NewFromObject(self) \
    ((* ((struct msgdatabase * (*)())((self)->header.msgdatabase_methods->info->procs->routines[0]))) (&msgdatabase_classheader, (self)->header.msgdatabase_methods->info->versionnumber))
#define msgdatabase_New() \
    (msgdatabase__New(NULL, msgdatabase_VERSION))
#define msgdatabase_Initialize(self) \
    (msgdatabase__Initialize(NULL, self, msgdatabase_VERSION))

#define msgdatabase_Destroy(self) \
    ((* ((void (*)()) ((self)->header.msgdatabase_methods->info->procs->routines[1]))) (&msgdatabase_classheader, self))
#define msgdatabase_Finalize(self) \
    (msgdatabase__Finalize(NULL, self))

#define msgdatabase_InitializeObject(self) \
    ((boolean) msgdatabase__InitializeObject(NULL, self))
#define msgdatabase_FinalizeObject(self) \
    ((void) msgdatabase__FinalizeObject(NULL, self))


#endif /* !defined(msgdatabase_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_msgdatabase ) && !defined(class_StaticEntriesOnly)*/



#ifndef AUXMODULE

struct msgdatabase_methods {
    struct classinfo *info;
    long (*routines[30])();
};

struct msgdatabase_classprocedures {
    struct classinfo *info;
    long (*routines[6])();
};

void msgdatabase__SetAttributes();
struct msgfolder * msgdatabase__GetFolder();
struct msgfolder * msgdatabase__CreateFolder();
boolean msgdatabase__CanDeleteFolder();
boolean /* error */ msgdatabase__DeleteFolder();
boolerror msgdatabase__RenameFolder();
boolean msgdatabase__IsParentFolder();
void msgdatabase__GetSubFolderBane();
struct extendedlist * msgdatabase__GetListOfAllFolders();
struct extendedlist * msgdatabase__GetListOfFolders();
struct extendedlist * msgdatabase__GetListOfSubscribedFolders();
struct extendedlist * msgdatabase__GetListOfPersonalFolders();
void msgdatabase__CacheFolder();
void msgdatabase__UncacheFolder();
struct extendedlist * msgdatabase__GetCacheList();
long msgdatabase__NumberOfCachedFolders();
char * msgdatabase__GetPath();
void msgdatabase__SetPath();
char * msgdatabase__GetName();
void msgdatabase__SetName();
void msgdatabase__SetPriority();
long msgdatabase__GetPriority();
long msgdatabase__NumberOfMailBoxes();
struct msgmailbox * msgdatabase__GetMailBox();
boolean msgdatabase__IsThereNewMail();
long msgdatabase__CountOfNewMail();
boolean msgdatabase__ProcessNewMail();
boolean /* error */ msgdatabase__ReadProfile();
boolean /* error */ msgdatabase__SaveProfile();
boolean /* error */ msgdatabase__CheckpointProfile();

static struct msgdatabase_methods msgdatabase_methodtable = {
    NULL,
    (long (*)()) msgdatabase__SetAttributes,
    (long (*)()) msgdatabase__GetFolder,
    (long (*)()) msgdatabase__CreateFolder,
    (long (*)()) msgdatabase__CanDeleteFolder,
    (long (*)()) msgdatabase__DeleteFolder,
    (long (*)()) msgdatabase__RenameFolder,
    (long (*)()) msgdatabase__IsParentFolder,
    (long (*)()) msgdatabase__GetSubFolderBane,
    (long (*)()) msgdatabase__GetListOfAllFolders,
    (long (*)()) msgdatabase__GetListOfFolders,
    (long (*)()) msgdatabase__GetListOfSubscribedFolders,
    (long (*)()) msgdatabase__GetListOfPersonalFolders,
    (long (*)()) msgdatabase__CacheFolder,
    (long (*)()) msgdatabase__UncacheFolder,
    (long (*)()) msgdatabase__GetCacheList,
    (long (*)()) msgdatabase__NumberOfCachedFolders,
    (long (*)()) msgdatabase__GetPath,
    (long (*)()) msgdatabase__SetPath,
    (long (*)()) msgdatabase__GetName,
    (long (*)()) msgdatabase__SetName,
    (long (*)()) msgdatabase__SetPriority,
    (long (*)()) msgdatabase__GetPriority,
    (long (*)()) msgdatabase__NumberOfMailBoxes,
    (long (*)()) msgdatabase__GetMailBox,
    (long (*)()) msgdatabase__IsThereNewMail,
    (long (*)()) msgdatabase__CountOfNewMail,
    (long (*)()) msgdatabase__ProcessNewMail,
    (long (*)()) msgdatabase__ReadProfile,
    (long (*)()) msgdatabase__SaveProfile,
    (long (*)()) msgdatabase__CheckpointProfile
};

struct msgdatabase *msgdatabase__New();
void msgdatabase__Destroy();
boolean msgdatabase__Initialize();
void msgdatabase__Finalize();
boolean msgdatabase__InitializeObject();
void msgdatabase__FinalizeObject();

static struct msgdatabase_classprocedures msgdatabase_classproceduretable = {
    NULL,
    (long (*)()) msgdatabase__New,
    (long (*)()) msgdatabase__Destroy,
    (long (*)()) msgdatabase__Initialize,
    (long (*)()) msgdatabase__Finalize,
    (long (*)()) msgdatabase__InitializeObject,
    (long (*)()) msgdatabase__FinalizeObject
};


static struct classinfo msgdatabase_classinfo = {
    (struct basicobject_methods *) &msgdatabase_methodtable,
    (struct basicobject_methods *) &msgdatabase_classproceduretable,
    "msgdatabase",
    "msgdb",
    msgdatabase_VERSION,
    NULL,
    NULL,
    NULL,
    NULL,
    &msgdatabase_classheader,
    NULL,
    0
};

static int classinitialized = FALSE;

boolean msgdatabase__Initialize(classID, self, versionnumber)
struct classheader *classID;
struct msgdatabase *self;
unsigned long versionnumber;
{
    if (! classinitialized)  {
	classinitialized = TRUE;
	msgdatabase_methodtable.info = &msgdatabase_classinfo;
    }
    self->header.msgdatabase_methods = (struct basicobject_methods *) &msgdatabase_methodtable;
    if(!msgdatabase__InitializeObject(classID, self)){
	return FALSE;
    }
    return TRUE;
}

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

void msgdatabase__Finalize(classID, self)
struct classheader *classID;
struct msgdatabase *self;
{
    msgdatabase__FinalizeObject(classID, self);
}

void msgdatabase__Destroy(classID, self)
struct classheader *classID;
struct msgdatabase *self;
{
    msgdatabase__Finalize(classID, self);
    free(self);
}

struct classinfo *msgdatabase__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != msgdatabase_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of msgdatabase requested!\n");
    }
    msgdatabase_classproceduretable.info = &msgdatabase_classinfo;
    return &msgdatabase_classinfo;
}

/* 
 * THIS IS NEEDED BECAUSE OF THE WAY makedo WORKS.
 * HOPEFULLY, IT CAN BE REMOVED SOON.
 */ 
 
struct classinfo *msgdb__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    return msgdatabase__GetClassInfo(classID, versionnumber);
}
 
/* 
 * END OF THIS PATCH. 
 */ 
 
#endif /* AUXMODULE */
