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





/* 
 * End of information copied from fldlist.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_extendedlist
#include "extlist.ih"
#undef dontDefineRoutinesFor_extendedlist

 
 
/* 
 * Data structure for fieldlist 
 */ 
struct fieldlist { 
    union {
	struct basicobject_methods *fieldlist_methods;
	struct extendedlist extendedlist;
    } header;

};

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


#ifndef fieldlist_PROGRAMMERVERSION
#define fieldlist_PROGRAMMERVERSION 1
#endif /* fieldlist_PROGRAMMERVERSION */

#ifdef fieldlist_VERSION
#undef fieldlist_VERSION
#endif /* fieldlist_VERSION */
#define fieldlist_VERSION ((((fieldlist_PROGRAMMERVERSION << 16) ^ (20 << 8) ^ sizeof(struct fieldlist)) & 0x7ffff) + 0x80000 + (65 << 20))

#define fieldlist_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *fieldlist__GetClassInfo(); \
  (void) class_EnterInfo(NULL, fieldlist_classheader.name, fieldlist__GetClassInfo, NULL, fieldlist_classheader.namekey); } 
 
#define fieldlist_StaticLoad()  \
    { \
    extendedlist_StaticLoad(); \
    fieldlist_StaticLoadOnlyThisClass();  \
    } 
 
#define fieldlist_StaticEntry  {fieldlist_StaticLoad()} 
 
static struct classheader fieldlist_classheader = {
    fieldlist_VERSION,
    "fieldlist",
    "fldlist",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* fieldlist_DEFINED */

#if !defined(fieldlist_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_fieldlist) && !defined(class_StaticEntriesOnly)
#define fieldlist_ROUTINESDEFINED

#define fieldlist_AddElement(self,element) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[0]))) (self,element))
#define fieldlist_RemoveNthElement(self,pos) \
    ((* ((void * (*)())((self)->header.fieldlist_methods->routines[1]))) (self,pos))
#define fieldlist_AddNthElement(self,pos,element) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[2]))) (self,pos,element))
#define fieldlist_Clear(self) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[3]))) (self))
#define fieldlist_GetNth(self,pos) \
    ((* ((void * (*)())((self)->header.fieldlist_methods->routines[4]))) (self,pos))
#define fieldlist_GetLast(self) \
    ((* ((void * (*)())((self)->header.fieldlist_methods->routines[5]))) (self))
#define fieldlist_RemoveLast(self) \
    ((* ((void * (*)())((self)->header.fieldlist_methods->routines[6]))) (self))
#define fieldlist_SetSize(self,size) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[7]))) (self,size))
#define fieldlist_Reduce(self) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[8]))) (self))
#define fieldlist_ForEach(self,proc,rock) \
    ((* ((long (*)())((self)->header.fieldlist_methods->routines[9]))) (self,proc,rock))
#define fieldlist_ForEachInRange(self,start,end,proc,rock) \
    ((* ((long (*)())((self)->header.fieldlist_methods->routines[10]))) (self,start,end,proc,rock))
#define fieldlist_Traverse(self,startIndex,proc,rock) \
    ((* ((long (*)())((self)->header.fieldlist_methods->routines[11]))) (self,startIndex,proc,rock))
#define fieldlist_Prune(self,proc,rock) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[12]))) (self,proc,rock))
#define fieldlist_Merge(self,otherList) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[13]))) (self,otherList))
#define fieldlist_MergeAtPos(self,otherList,pos) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[14]))) (self,otherList,pos))
#define fieldlist_NumberOfElements(self) \
    ((* ((long (*)())((self)->header.fieldlist_methods->routines[15]))) (self))
#define fieldlist_Sort(self,compare) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[16]))) (self,compare))
#define fieldlist_SetCopyElement(self,copyElement) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[17]))) (self,copyElement))
#define fieldlist_SetFreeElement(self,freeElement) \
    ((* ((void (*)())((self)->header.fieldlist_methods->routines[18]))) (self,freeElement))
#define fieldlist_Parse(self,path,separator,startBracket,endBracket) \
    ((* ((char * (*)())((self)->header.fieldlist_methods->routines[19]))) (self,path,separator,startBracket,endBracket))

#define fieldlist_NewFromObject(self) \
    ((* ((struct fieldlist * (*)())((self)->header.fieldlist_methods->info->procs->routines[0]))) (&fieldlist_classheader, (self)->header.fieldlist_methods->info->versionnumber))
#define fieldlist_New() \
    (fieldlist__New(NULL, fieldlist_VERSION))
#define fieldlist_Initialize(self) \
    (fieldlist__Initialize(NULL, self, fieldlist_VERSION))

#define fieldlist_Destroy(self) \
    ((* ((void (*)()) ((self)->header.fieldlist_methods->info->procs->routines[1]))) (&fieldlist_classheader, self))
#define fieldlist_Finalize(self) \
    (fieldlist__Finalize(NULL, self))

#define fieldlist_InitializeObject(self) \
    ((boolean) fieldlist__InitializeObject(NULL, self))
#define fieldlist_FinalizeObject(self) \
    ((void) fieldlist__FinalizeObject(NULL, self))
#define fieldlist_Create(path,separator,startBracket,endBracket,endStr) \
    ((struct fieldlist *) fieldlist__Create(NULL, path,separator,startBracket,endBracket,endStr))


#endif /* !defined(fieldlist_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_fieldlist ) && !defined(class_StaticEntriesOnly)*/

#define super_AddElement(self,element)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[0]))) (self,element))
#define super_RemoveNthElement(self,pos)  \
    ((* ((void * (*)()) (fieldlist_supermethods->routines[1]))) (self,pos))
#define super_AddNthElement(self,pos,element)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[2]))) (self,pos,element))
#define super_Clear(self)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[3]))) (self))
#define super_GetNth(self,pos)  \
    ((* ((void * (*)()) (fieldlist_supermethods->routines[4]))) (self,pos))
#define super_GetLast(self)  \
    ((* ((void * (*)()) (fieldlist_supermethods->routines[5]))) (self))
#define super_RemoveLast(self)  \
    ((* ((void * (*)()) (fieldlist_supermethods->routines[6]))) (self))
#define super_SetSize(self,size)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[7]))) (self,size))
#define super_Reduce(self)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[8]))) (self))
#define super_ForEach(self,proc,rock)  \
    ((* ((long (*)()) (fieldlist_supermethods->routines[9]))) (self,proc,rock))
#define super_ForEachInRange(self,start,end,proc,rock)  \
    ((* ((long (*)()) (fieldlist_supermethods->routines[10]))) (self,start,end,proc,rock))
#define super_Traverse(self,startIndex,proc,rock)  \
    ((* ((long (*)()) (fieldlist_supermethods->routines[11]))) (self,startIndex,proc,rock))
#define super_Prune(self,proc,rock)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[12]))) (self,proc,rock))
#define super_Merge(self,otherList)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[13]))) (self,otherList))
#define super_MergeAtPos(self,otherList,pos)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[14]))) (self,otherList,pos))
#define super_NumberOfElements(self)  \
    ((* ((long (*)()) (fieldlist_supermethods->routines[15]))) (self))
#define super_Sort(self,compare)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[16]))) (self,compare))
#define super_SetCopyElement(self,copyElement)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[17]))) (self,copyElement))
#define super_SetFreeElement(self,freeElement)  \
    ((* ((void (*)()) (fieldlist_supermethods->routines[18]))) (self,freeElement))

extern struct basicobject_methods *fieldlist_supermethods;

#ifndef AUXMODULE

struct basicobject_methods *fieldlist_supermethods;

struct fieldlist_methods {
    struct classinfo *info;
    long (*routines[20])();
};

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

char * fieldlist__Parse();

static struct fieldlist_methods fieldlist_methodtable = {
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    (long (*)()) fieldlist__Parse
};

struct fieldlist *fieldlist__New();
void fieldlist__Destroy();
boolean fieldlist__Initialize();
void fieldlist__Finalize();
boolean fieldlist__InitializeObject();
void fieldlist__FinalizeObject();
struct fieldlist * fieldlist__Create();

static struct fieldlist_classprocedures fieldlist_classproceduretable = {
    NULL,
    (long (*)()) fieldlist__New,
    (long (*)()) fieldlist__Destroy,
    (long (*)()) fieldlist__Initialize,
    (long (*)()) fieldlist__Finalize,
    (long (*)()) fieldlist__InitializeObject,
    (long (*)()) fieldlist__FinalizeObject,
    (long (*)()) fieldlist__Create
};


static struct classinfo fieldlist_classinfo = {
    (struct basicobject_methods *) &fieldlist_methodtable,
    (struct basicobject_methods *) &fieldlist_classproceduretable,
    "fieldlist",
    "fldlist",
    fieldlist_VERSION,
    "extendedlist",
    "extlist",
    NULL,
    NULL,
    &fieldlist_classheader,
    NULL,
    0
};

static int classinitialized = FALSE;

boolean fieldlist__Initialize(classID, self, versionnumber)
struct classheader *classID;
struct fieldlist *self;
unsigned long versionnumber;
{
    /* extendedlist_Initialize(self); */
    if(!(*((boolean (*)()) (extendedlist_classheader.classprocedures->routines[2])))(&extendedlist_classheader,self, extendedlist_VERSION))
	return FALSE;
    if (! classinitialized)  {
	classinitialized = TRUE;
	fieldlist_supermethods =self->header.fieldlist_methods;
	{
	    long (**p)() = &(fieldlist_methodtable.routines[0]);
	    long (**q)() = &(self->header.fieldlist_methods->routines[0]);
	    long i;

	    for (i = 0; i < 19; i++)  {
		if (*p == NULL)
		    *p = *q;
		p++;
		q++;
	    }
	}
	fieldlist_classinfo.superclass = fieldlist_supermethods->info;
	fieldlist_methodtable.info = &fieldlist_classinfo;
    }
    self->header.fieldlist_methods = (struct basicobject_methods *) &fieldlist_methodtable;
    if(!fieldlist__InitializeObject(classID, self)){
	/* extendedlist_Finalize(self); */
	(*((void (*)()) (extendedlist_classheader.classprocedures->routines[3])))(&extendedlist_classheader,self);
	return FALSE;
    }
    return TRUE;
}

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

void fieldlist__Finalize(classID, self)
struct classheader *classID;
struct fieldlist *self;
{
    fieldlist__FinalizeObject(classID, self);
    /* extendedlist_Finalize(self); */
    (*((void (*)()) (extendedlist_classheader.classprocedures->routines[3])))(&extendedlist_classheader,self);
}

void fieldlist__Destroy(classID, self)
struct classheader *classID;
struct fieldlist *self;
{
    fieldlist__Finalize(classID, self);
    free(self);
}

struct classinfo *fieldlist__GetClassInfo(classID, versionnumber)
struct classheader *classID;
unsigned long versionnumber;
{
    if (versionnumber != class_VERSIONNOTKNOWN && versionnumber != fieldlist_VERSION)  {
	(void) fprintf(stderr, "Incompatible version of fieldlist requested!\n");
    }
    fieldlist_classproceduretable.info = &fieldlist_classinfo;
    return &fieldlist_classinfo;
}

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