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






/* 
 * End of information copied from extlist.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
/* extendedlist has no super class */ 
 
 
/* 
 * Data structure for extendedlist 
 */ 
struct extendedlist { 
    struct {
	struct basicobject_methods *extendedlist_methods;
    } header;
    long num;
    long allocated;
    void *(*copyElement)();
    void (*freeElement)();
    void **items;

};

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


#ifndef extendedlist_PROGRAMMERVERSION
#define extendedlist_PROGRAMMERVERSION 1
#endif /* extendedlist_PROGRAMMERVERSION */

#ifdef extendedlist_VERSION
#undef extendedlist_VERSION
#endif /* extendedlist_VERSION */
#define extendedlist_VERSION ((((extendedlist_PROGRAMMERVERSION << 16) ^ (19 << 8) ^ sizeof(struct extendedlist)) & 0x7ffff) + 0x80000 + (129 << 20))

#define extendedlist_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *extendedlist__GetClassInfo(); \
  (void) class_EnterInfo(NULL, extendedlist_classheader.name, extendedlist__GetClassInfo, NULL, extendedlist_classheader.namekey); } 
 
#define extendedlist_StaticLoad()  \
    { \
    extendedlist_StaticLoadOnlyThisClass();  \
    } 
 
#define extendedlist_StaticEntry  {extendedlist_StaticLoad()} 
 
static struct classheader extendedlist_classheader = {
    extendedlist_VERSION,
    "extendedlist",
    "extlist",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* extendedlist_DEFINED */

#if !defined(extendedlist_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_extendedlist) && !defined(class_StaticEntriesOnly)
#define extendedlist_ROUTINESDEFINED

#define extendedlist_AddElement(self,element) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[0]))) (self,element))
#define extendedlist_RemoveNthElement(self,pos) \
    ((* ((void * (*)())((self)->header.extendedlist_methods->routines[1]))) (self,pos))
#define extendedlist_AddNthElement(self,pos,element) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[2]))) (self,pos,element))
#define extendedlist_Clear(self) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[3]))) (self))
#define extendedlist_GetNth(self,pos) \
    ((* ((void * (*)())((self)->header.extendedlist_methods->routines[4]))) (self,pos))
#define extendedlist_GetLast(self) \
    ((* ((void * (*)())((self)->header.extendedlist_methods->routines[5]))) (self))
#define extendedlist_RemoveLast(self) \
    ((* ((void * (*)())((self)->header.extendedlist_methods->routines[6]))) (self))
#define extendedlist_SetSize(self,size) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[7]))) (self,size))
#define extendedlist_Reduce(self) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[8]))) (self))
#define extendedlist_ForEach(self,proc,rock) \
    ((* ((long (*)())((self)->header.extendedlist_methods->routines[9]))) (self,proc,rock))
#define extendedlist_ForEachInRange(self,start,end,proc,rock) \
    ((* ((long (*)())((self)->header.extendedlist_methods->routines[10]))) (self,start,end,proc,rock))
#define extendedlist_Traverse(self,startIndex,proc,rock) \
    ((* ((long (*)())((self)->header.extendedlist_methods->routines[11]))) (self,startIndex,proc,rock))
#define extendedlist_Prune(self,proc,rock) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[12]))) (self,proc,rock))
#define extendedlist_Merge(self,otherList) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[13]))) (self,otherList))
#define extendedlist_MergeAtPos(self,otherList,pos) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[14]))) (self,otherList,pos))
#define extendedlist_NumberOfElements(self) \
    ((* ((long (*)())((self)->header.extendedlist_methods->routines[15]))) (self))
#define extendedlist_Sort(self,compare) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[16]))) (self,compare))
#define extendedlist_SetCopyElement(self,copyElement) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[17]))) (self,copyElement))
#define extendedlist_SetFreeElement(self,freeElement) \
    ((* ((void (*)())((self)->header.extendedlist_methods->routines[18]))) (self,freeElement))

#define extendedlist_NewFromObject(self) \
    ((* ((struct extendedlist * (*)())((self)->header.extendedlist_methods->info->procs->routines[0]))) (&extendedlist_classheader, (self)->header.extendedlist_methods->info->versionnumber))
#define extendedlist_New() \
    (*((struct extendedlist * (*)()) (extendedlist_classheader.classprocedures->routines[0])))(&extendedlist_classheader,extendedlist_VERSION)
#define extendedlist_Initialize(self) \
    (*((void (*)()) (extendedlist_classheader.classprocedures->routines[2])))(&extendedlist_classheader,self, extendedlist_VERSION)

#define extendedlist_Destroy(self) \
    ((* ((void (*)()) ((self)->header.extendedlist_methods->info->procs->routines[1]))) (&extendedlist_classheader, self))
#define extendedlist_Finalize(self) \
    (*((void (*)()) (extendedlist_classheader.classprocedures->routines[3])))(&extendedlist_classheader,self)

#define extendedlist_InitializeObject(self) \
    (*((boolean (*)()) (extendedlist_classheader.classprocedures->routines[4])))(&extendedlist_classheader,self)
#define extendedlist_FinalizeObject(self) \
    (*((void (*)()) (extendedlist_classheader.classprocedures->routines[5])))(&extendedlist_classheader,self)
#define extendedlist_Create(copyElement,freeElement) \
    (*((struct extendedlist * (*)()) (extendedlist_classheader.classprocedures->routines[6])))(&extendedlist_classheader,copyElement,freeElement)
#define extendedlist_CreateStringList() \
    (*((struct extendedlist * (*)()) (extendedlist_classheader.classprocedures->routines[7])))(&extendedlist_classheader)


#endif /* !defined(extendedlist_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_extendedlist ) && !defined(class_StaticEntriesOnly)*/

