 
#ifndef listkeyset_DEFINED
#define listkeyset_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 lstkeyset.ch and will be
 * overwritten.  Make changes to lstkeyset.ch instead.
 */ 
 
/* 
 * The following information was copied, as-is, from lstkeyset.ch.
 */ 
 
struct listkeysetitem {
    void *key;
    void *value;
};







/* 
 * End of information copied from lstkeyset.ch.
 */ 
 
/* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_keyset
#include "keyset.ih"
#undef dontDefineRoutinesFor_keyset

 
 
/* 
 * Data structure for listkeyset 
 */ 
struct listkeyset { 
    union {
	struct basicobject_methods *listkeyset_methods;
	struct keyset keyset;
    } header;
    struct extendedlist *list;

};

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


#ifndef listkeyset_PROGRAMMERVERSION
#define listkeyset_PROGRAMMERVERSION 1
#endif /* listkeyset_PROGRAMMERVERSION */

#ifdef listkeyset_VERSION
#undef listkeyset_VERSION
#endif /* listkeyset_VERSION */
#define listkeyset_VERSION ((((listkeyset_PROGRAMMERVERSION << 16) ^ (11 << 8) ^ sizeof(struct listkeyset)) & 0x7ffff) + 0x80000 + (1 << 20))

#define listkeyset_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *listkeyset__GetClassInfo(); \
  (void) class_EnterInfo(NULL, listkeyset_classheader.name, listkeyset__GetClassInfo, NULL, listkeyset_classheader.namekey); } 
 
#define listkeyset_StaticLoad()  \
    { \
    keyset_StaticLoad(); \
    listkeyset_StaticLoadOnlyThisClass();  \
    } 
 
#define listkeyset_StaticEntry  {listkeyset_StaticLoad()} 
 
static struct classheader listkeyset_classheader = {
    listkeyset_VERSION,
    "listkeyset",
    "lstkeyset",
    (struct basicobject_methods *) &class_RoutineStruct,
};


#endif /* listkeyset_DEFINED */

#if !defined(listkeyset_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_listkeyset) && !defined(class_StaticEntriesOnly)
#define listkeyset_ROUTINESDEFINED

#define listkeyset_NumberOfElements(self) \
 ((&(self)->header.keyset)->numberOfElements)
#define listkeyset_SetNumberOfElements(self,value) \
 ((&(self)->header.keyset)->numberOfElements = value)
#define listkeyset_IncrementNumberOfElements(self) \
 ((&(self)->header.keyset)->numberOfElements++)
#define listkeyset_DecrementNumberOfElements(self) \
 ((&(self)->header.keyset)->numberOfElements--)
#define listkeyset_SetCompareFunction(self,comparefunc) \
 ((&(self)->header.keyset)->compare = comparefunc)
#define listkeyset_SetKeyCopyFunction(self,copyfunc) \
 ((&(self)->header.keyset)->keycopy = copyfunc)
#define listkeyset_SetKeyFreeFunction(self,freefunc) \
 ((&(self)->header.keyset)->keyfree = freefunc)
#define listkeyset_SetValueCopyFunction(self,copyfunc) \
 ((&(self)->header.keyset)->valuecopy = copyfunc)
#define listkeyset_SetValueFreeFunction(self,freefunc) \
 ((&(self)->header.keyset)->valuefree = freefunc)
#define listkeyset_GetCompareFunction(self) \
 ((&(self)->header.keyset)->compare)
#define listkeyset_GetKeyCopyFunction(self) \
 ((&(self)->header.keyset)->keycopy)
#define listkeyset_GetKeyFreeFunction(self) \
 ((&(self)->header.keyset)->keyfree)
#define listkeyset_GetValueCopyFunction(self) \
 ((&(self)->header.keyset)->valuecopy)
#define listkeyset_GetValueFreeFunction(self) \
 ((&(self)->header.keyset)->valuefree)
#define listkeyset_Lookup(self,key,element) \
    ((* ((boolean (*)())((self)->header.listkeyset_methods->routines[0]))) (self,key,element))
#define listkeyset_Insert(self,key,element) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[1]))) (self,key,element))
#define listkeyset_Remove(self,key,retKey,retValue) \
    ((* ((boolean (*)())((self)->header.listkeyset_methods->routines[2]))) (self,key,retKey,retValue))
#define listkeyset_Delete(self,key) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[3]))) (self,key))
#define listkeyset_GetList(self,include,rock) \
    ((* ((struct extendedlist * (*)())((self)->header.listkeyset_methods->routines[4]))) (self,include,rock))
#define listkeyset_ForEach(self,stopfunc,rock) \
    ((* ((void * (*)())((self)->header.listkeyset_methods->routines[5]))) (self,stopfunc,rock))
#define listkeyset_Prune(self,include,rock) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[6]))) (self,include,rock))
#define listkeyset_Clear(self) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[7]))) (self))
#define listkeyset_SetString(self,copyKey,copyValue) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[8]))) (self,copyKey,copyValue))
#define listkeyset_GetInternalList(self) \
 ((self)->list)
#define listkeyset_FindItem(self,key,findRock) \
    ((* ((long (*)())((self)->header.listkeyset_methods->routines[9]))) (self,key,findRock))
#define listkeyset_InsertItem(self,item,findRock) \
    ((* ((void (*)())((self)->header.listkeyset_methods->routines[10]))) (self,item,findRock))

#define listkeyset_NewFromObject(self) \
    ((* ((struct listkeyset * (*)())((self)->header.listkeyset_methods->info->procs->routines[0]))) (&listkeyset_classheader, (self)->header.listkeyset_methods->info->versionnumber))
#define listkeyset_New() \
    (*((struct listkeyset * (*)()) (listkeyset_classheader.classprocedures->routines[0])))(&listkeyset_classheader,listkeyset_VERSION)
#define listkeyset_Initialize(self) \
    (*((void (*)()) (listkeyset_classheader.classprocedures->routines[2])))(&listkeyset_classheader,self, listkeyset_VERSION)

#define listkeyset_Destroy(self) \
    ((* ((void (*)()) ((self)->header.listkeyset_methods->info->procs->routines[1]))) (&listkeyset_classheader, self))
#define listkeyset_Finalize(self) \
    (*((void (*)()) (listkeyset_classheader.classprocedures->routines[3])))(&listkeyset_classheader,self)

#define listkeyset_InitializeObject(self) \
    (*((boolean (*)()) (listkeyset_classheader.classprocedures->routines[4])))(&listkeyset_classheader,self)
#define listkeyset_FinalizeObject(self) \
    (*((void (*)()) (listkeyset_classheader.classprocedures->routines[5])))(&listkeyset_classheader,self)


#endif /* !defined(listkeyset_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_listkeyset ) && !defined(class_StaticEntriesOnly)*/

