12 |
|
char *data; /* pointer to client data */ |
13 |
|
} LUENT; |
14 |
|
|
15 |
+ |
#ifdef NOPROTO |
16 |
|
typedef struct { |
17 |
|
long (*hashf)(); /* key hash function */ |
18 |
|
int (*keycmp)(); /* key comparison function */ |
22 |
|
LUENT *tabl; /* table, if allocated */ |
23 |
|
int ndel; /* number of deleted entries */ |
24 |
|
} LUTAB; |
25 |
+ |
#else |
26 |
+ |
typedef struct { |
27 |
+ |
long (*hashf)(); /* key hash function */ |
28 |
+ |
int (*keycmp)(const char *, const char *); /* key comparison function */ |
29 |
+ |
void (*freek)(char *); /* free a key */ |
30 |
+ |
void (*freed)(char *); /* free the data */ |
31 |
+ |
int tsiz; /* current table size */ |
32 |
+ |
LUENT *tabl; /* table, if allocated */ |
33 |
+ |
int ndel; /* number of deleted entries */ |
34 |
+ |
} LUTAB; |
35 |
+ |
#endif |
36 |
|
|
37 |
|
#define LU_SINIT(fk,fd) {lu_shash,strcmp,(void (*)())(fk),\ |
38 |
|
(void (*)())(fd),0,NULL,0} |
68 |
|
* The lu_delete routine frees an entry's data (if any) by calling |
69 |
|
* the freed member function, but does not free the key field. This |
70 |
|
* will be freed later during (or instead of) table reallocation. |
71 |
+ |
* It is therefore an error to reuse or do anything with the key |
72 |
+ |
* field after calling lu_delete. |
73 |
|
* |
74 |
|
* The lu_done routine calls the given free function once for each |
75 |
|
* assigned table entry (i.e. each entry with an assigned key value). |