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






/* 
 * End of information copied from unmhmlbox.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_mhmailbox
#include "mhmlbox.ih"
#undef dontDefineRoutinesFor_mhmailbox

 
 
/* 
 * Data structure for unixmhmailbox 
 */ 
struct unixmhmailbox { 
    union {
	struct basicobject_methods *unixmhmailbox_methods;
	struct msgmailbox msgmailbox;
	struct mhmailbox mhmailbox;
    } header;

};

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


#ifndef unixmhmailbox_PROGRAMMERVERSION
#define unixmhmailbox_PROGRAMMERVERSION 1
#endif /* unixmhmailbox_PROGRAMMERVERSION */

#ifdef unixmhmailbox_VERSION
#undef unixmhmailbox_VERSION
#endif /* unixmhmailbox_VERSION */
#define unixmhmailbox_VERSION ((((unixmhmailbox_PROGRAMMERVERSION << 16) ^ (9 << 8) ^ sizeof(struct unixmhmailbox)) & 0x7ffff) + 0x80000 + (1 << 20))

#define unixmhmailbox_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *unixmhmailbox__GetClassInfo(); \
  (void) class_EnterInfo(NULL, unixmhmailbox_classheader.name, unixmhmailbox__GetClassInfo, NULL, unixmhmailbox_classheader.namekey); } 
 
#define unixmhmailbox_StaticLoad()  \
    { \
    mhmailbox_StaticLoad(); \
    unixmhmailbox_StaticLoadOnlyThisClass();  \
    } 
 
#define unixmhmailbox_StaticEntry  {unixmhmailbox_StaticLoad()} 
 
static struct classheader unixmhmailbox_classheader = {
    unixmhmailbox_VERSION,
    "unixmhmailbox",
    "unmhmlbox",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* unixmhmailbox_DEFINED */

#if !defined(unixmhmailbox_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_unixmhmailbox) && !defined(class_StaticEntriesOnly)
#define unixmhmailbox_ROUTINESDEFINED

#define unixmhmailbox_IsThereNewMail(self) \
    ((* ((boolean (*)())((self)->header.unixmhmailbox_methods->routines[0]))) (self))
#define unixmhmailbox_CountOfNewMail(self) \
    ((* ((long (*)())((self)->header.unixmhmailbox_methods->routines[1]))) (self))
#define unixmhmailbox_ProcessNewMail(self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize) \
    ((* ((boolean (*)())((self)->header.unixmhmailbox_methods->routines[2]))) (self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize))
#define unixmhmailbox_SetDatabase(self,database) \
    ((* ((void (*)())((self)->header.unixmhmailbox_methods->routines[3]))) (self,database))
#define unixmhmailbox_GetDatabase(self) \
    ((* ((struct msgdatabase * (*)())((self)->header.unixmhmailbox_methods->routines[4]))) (self))
#define unixmhmailbox_SetFolderName(self,folderName) \
    ((* ((void (*)())((self)->header.unixmhmailbox_methods->routines[5]))) (self,folderName))
#define unixmhmailbox_GetFolderName(self) \
    ((* ((char * (*)())((self)->header.unixmhmailbox_methods->routines[6]))) (self))
#define unixmhmailbox_SetSource(self,sourcePath) \
    ((* ((void (*)())((self)->header.unixmhmailbox_methods->routines[7]))) (self,sourcePath))
#define unixmhmailbox_GetSource(self) \
    ((* ((char * (*)())((self)->header.unixmhmailbox_methods->routines[8]))) (self))

#define unixmhmailbox_NewFromObject(self) \
    ((* ((struct unixmhmailbox * (*)())((self)->header.unixmhmailbox_methods->info->procs->routines[0]))) (&unixmhmailbox_classheader, (self)->header.unixmhmailbox_methods->info->versionnumber))
#define unixmhmailbox_New() \
    (unixmhmailbox__New(NULL, unixmhmailbox_VERSION))
#define unixmhmailbox_Initialize(self) \
    (unixmhmailbox__Initialize(NULL, self, unixmhmailbox_VERSION))

#define unixmhmailbox_Destroy(self) \
    ((* ((void (*)()) ((self)->header.unixmhmailbox_methods->info->procs->routines[1]))) (&unixmhmailbox_classheader, self))
#define unixmhmailbox_Finalize(self) \
    (unixmhmailbox__Finalize(NULL, self))

#define unixmhmailbox_InitializeObject(self) \
    ((boolean) unixmhmailbox__InitializeObject(NULL, self))
#define unixmhmailbox_FinalizeObject(self) \
    ((void) unixmhmailbox__FinalizeObject(NULL, self))


#endif /* !defined(unixmhmailbox_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_unixmhmailbox ) && !defined(class_StaticEntriesOnly)*/

#define super_IsThereNewMail(self)  \
    ((* ((boolean (*)()) (unixmhmailbox_supermethods->routines[0]))) (self))
#define super_CountOfNewMail(self)  \
    ((* ((long (*)()) (unixmhmailbox_supermethods->routines[1]))) (self))
#define super_ProcessNewMail(self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize)  \
    ((* ((boolean (*)()) (unixmhmailbox_supermethods->routines[2]))) (self,numGood,numBad,numLocked,firstError,errorBuf,bufferSize))
#define super_SetDatabase(self,database)  \
    ((* ((void (*)()) (unixmhmailbox_supermethods->routines[3]))) (self,database))
#define super_GetDatabase(self)  \
    ((* ((struct msgdatabase * (*)()) (unixmhmailbox_supermethods->routines[4]))) (self))
#define super_SetFolderName(self,folderName)  \
    ((* ((void (*)()) (unixmhmailbox_supermethods->routines[5]))) (self,folderName))
#define super_GetFolderName(self)  \
    ((* ((char * (*)()) (unixmhmailbox_supermethods->routines[6]))) (self))
#define super_SetSource(self,sourcePath)  \
    ((* ((void (*)()) (unixmhmailbox_supermethods->routines[7]))) (self,sourcePath))
#define super_GetSource(self)  \
    ((* ((char * (*)()) (unixmhmailbox_supermethods->routines[8]))) (self))

extern struct basicobject_methods *unixmhmailbox_supermethods;

#ifndef AUXMODULE

struct basicobject_methods *unixmhmailbox_supermethods;

struct unixmhmailbox_methods {
    struct classinfo *info;
    long (*routines[9])();
};

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

boolean unixmhmailbox__IsThereNewMail();
long unixmhmailbox__CountOfNewMail();
boolean unixmhmailbox__ProcessNewMail();

static struct unixmhmailbox_methods unixmhmailbox_methodtable = {
    NULL,
    (long (*)()) unixmhmailbox__IsThereNewMail,
    (long (*)()) unixmhmailbox__CountOfNewMail,
    (long (*)()) unixmhmailbox__ProcessNewMail,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};

struct unixmhmailbox *unixmhmailbox__New();
void unixmhmailbox__Destroy();
boolean unixmhmailbox__Initialize();
void unixmhmailbox__Finalize();
boolean unixmhmailbox__InitializeObject();
void unixmhmailbox__FinalizeObject();

static struct unixmhmailbox_classprocedures unixmhmailbox_classproceduretable = {
    NULL,
    (long (*)()) unixmhmailbox__New,
    (long (*)()) unixmhmailbox__Destroy,
    (long (*)()) unixmhmailbox__Initialize,
    (long (*)()) unixmhmailbox__Finalize,
    (long (*)()) unixmhmailbox__InitializeObject,
    (long (*)()) unixmhmailbox__FinalizeObject
};


static struct classinfo unixmhmailbox_classinfo = {
    (struct basicobject_methods *) &unixmhmailbox_methodtable,
    (struct basicobject_methods *) &unixmhmailbox_classproceduretable,
    "unixmhmailbox",
    "unmhmlbox",
    unixmhmailbox_VERSION,
    "mhmailbox",
    "mhmlbox",
    NULL,
    NULL,
    &unixmhmailbox_classheader,
    NULL,
    0
};

static int classinitialized = FALSE;

boolean unixmhmailbox__Initialize(classID, self, versionnumber)
struct classheader *classID;
struct unixmhmailbox *self;
unsigned long versionnumber;
{
    /* mhmailbox_Initialize(self); */
    if(!(*((boolean (*)()) (mhmailbox_classheader.classprocedures->routines[2])))(&mhmailbox_classheader,self, mhmailbox_VERSION))
	return FALSE;
    if (! classinitialized)  {
	classinitialized = TRUE;
	unixmhmailbox_supermethods =self->header.unixmhmailbox_methods;
	{
	    long (**p)() = &(unixmhmailbox_methodtable.routines[0]);
	    long (**q)() = &(self->header.unixmhmailbox_methods->routines[0]);
	    long i;

	    for (i = 0; i < 9; i++)  {
		if (*p == NULL)
		    *p = *q;
		p++;
		q++;
	    }
	}
	unixmhmailbox_classinfo.superclass = unixmhmailbox_supermethods->info;
	unixmhmailbox_methodtable.info = &unixmhmailbox_classinfo;
    }
    self->header.unixmhmailbox_methods = (struct basicobject_methods *) &unixmhmailbox_methodtable;
    if(!unixmhmailbox__InitializeObject(classID, self)){
	/* mhmailbox_Finalize(self); */
	(*((void (*)()) (mhmailbox_classheader.classprocedures->routines[3])))(&mhmailbox_classheader,self);
	return FALSE;
    }
    return TRUE;
}

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

void unixmhmailbox__Finalize(classID, self)
struct classheader *classID;
struct unixmhmailbox *self;
{
    unixmhmailbox__FinalizeObject(classID, self);
    /* mhmailbox_Finalize(self); */
    (*((void (*)()) (mhmailbox_classheader.classprocedures->routines[3])))(&mhmailbox_classheader,self);
}

void unixmhmailbox__Destroy(classID, self)
struct classheader *classID;
struct unixmhmailbox *self;
{
    unixmhmailbox__Finalize(classID, self);
    free(self);
}

struct classinfo *unixmhmailbox__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != unixmhmailbox_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of unixmhmailbox requested!\n");
    }
    unixmhmailbox_classproceduretable.info = &unixmhmailbox_classinfo;
    return &unixmhmailbox_classinfo;
}

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