|
nsz |
056b01 |
#include <search.h>
|
|
nsz |
056b01 |
#define T(t) (t*)0;
|
|
nsz |
056b01 |
#define F(t,n) {t *y = &x.;;}
|
|
nsz |
056b01 |
#define C(n) switch(n){case n:;}
|
|
nsz |
056b01 |
static void f()
|
|
nsz |
056b01 |
{
|
|
nsz |
056b01 |
T(size_t)
|
|
nsz |
056b01 |
T(ACTION)
|
|
nsz |
056b01 |
T(VISIT)
|
|
nsz |
056b01 |
{
|
|
nsz |
056b01 |
ENTRY x;
|
|
nsz |
056b01 |
F(char*,key)
|
|
nsz |
056b01 |
F(void*,data)
|
|
nsz |
056b01 |
}
|
|
nsz |
056b01 |
switch((ACTION)0){
|
|
nsz |
056b01 |
case FIND:
|
|
nsz |
056b01 |
case ENTER:;
|
|
nsz |
056b01 |
}
|
|
nsz |
056b01 |
switch((VISIT)0){
|
|
nsz |
056b01 |
case preorder:
|
|
nsz |
056b01 |
case postorder:
|
|
nsz |
056b01 |
case endorder:
|
|
nsz |
056b01 |
case leaf:;
|
|
nsz |
056b01 |
}
|
|
nsz |
056b01 |
int(*p_hcreate)(size_t) = hcreate;
|
|
nsz |
056b01 |
void(*p_hdestroy)(void) = hdestroy;
|
|
nsz |
056b01 |
ENTRY*(*p_hsearch)(ENTRY,ACTION) = hsearch;
|
|
nsz |
056b01 |
void(*p_insque)(void*,void*) = insque;
|
|
nsz |
056b01 |
void*(*p_lfind)(const void*,const void*,size_t*,size_t,int(*)(const void*,const void*)) = lfind;
|
|
nsz |
056b01 |
void*(*p_lsearch)(const void*,void*,size_t*,size_t,int(*)(const void*,const void*)) = lsearch;
|
|
nsz |
056b01 |
void(*p_remque)(void*) = remque;
|
|
nsz |
056b01 |
void*(*p_tdelete)(const void*restrict,void**restrict,int(*)(const void*,const void*)) = tdelete;
|
|
nsz |
056b01 |
void*(*p_tfind)(const void*,void*const*,int(*)(const void*,const void*)) = tfind;
|
|
nsz |
056b01 |
void*(*p_tsearch)(const void*,void**,int(*)(const void*,const void*)) = tsearch;
|
|
nsz |
056b01 |
void(*p_twalk)(const void*,void(*)(const void*,VISIT,int)) = twalk;
|
|
nsz |
056b01 |
}
|