ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/lookup.h
(Generate patch)

Comparing ray/src/common/lookup.h (file contents):
Revision 2.5 by gwlarson, Wed Sep 2 18:42:11 1998 UTC vs.
Revision 2.13 by greg, Tue May 25 06:30:46 2004 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1998 Silicon Graphics, Inc. */
2 <
3 < /* SCCSid "$SunId$ SGI" */
4 <
1 > /* RCSid $Id$ */
2   /*
3   * Header file for general associative table lookup routines
4   */
5 + #ifndef _RAD_LOOKUP_H_
6 + #define _RAD_LOOKUP_H_
7  
8 + #include <string.h> /* strcmp() */
9 +
10 + #ifdef __cplusplus
11 + extern "C" {
12 + #endif
13 +
14 + typedef void lut_free_t(void *p);
15 + typedef unsigned long lut_hashf_t(void*);
16 + typedef int lut_keycmpf_t(const void*, const void*);
17 +
18   typedef struct {
19          char    *key;                   /* key name */
20          unsigned long   hval;           /* key hash value (for efficiency) */
# Line 13 | Line 22 | typedef struct {
22   } LUENT;
23  
24   typedef struct {
25 <        unsigned long   (*hashf)();     /* key hash function */
26 <        int     (*keycmp)();            /* key comparison function */
27 <        void    (*freek)();             /* free a key */
28 <        void    (*freed)();             /* free the data */
25 >        lut_hashf_t *hashf;     /* key hash function */
26 >        lut_keycmpf_t *keycmp;  /* key comparison function */
27 >        lut_free_t *freek;              /* free a key */
28 >        lut_free_t *freed;              /* free the data */
29          int     tsiz;                   /* current table size */
30          LUENT   *tabl;                  /* table, if allocated */
31          int     ndel;                   /* number of deleted entries */
32   } LUTAB;
33  
25 #undef strcmp
26 #define LU_SINIT(fk,fd)         {lu_shash,strcmp,(void (*)())(fk),\
27                                (void (*)())(fd),0,NULL,0}
34  
35   /*
36   * The lu_init routine is called to initialize a table.  The number of
# Line 73 | Line 79 | typedef struct {
79   * allocated table itself.
80   */
81  
82 < extern int      lu_init();
77 < extern LUENT    *lu_find();
78 < extern void     lu_delete();
79 < extern int      lu_doall();
80 < extern void     lu_done();
81 < extern unsigned long    lu_shash();
82 > typedef int lut_doallf_t(LUENT *e, void *p);
83  
84 < extern int      strcmp();
84 > extern lut_keycmpf_t lu_strcmp;
85 > extern int      lu_init(LUTAB *tbl, int nel);
86 > extern unsigned long    lu_shash(void *s);
87 > extern LUENT    *lu_find(LUTAB *tbl, char *key);
88 > extern void     lu_delete(LUTAB *tbl, char *key);
89 > extern int      lu_doall(LUTAB *tbl, lut_doallf_t *f, void *p);
90 > extern void     lu_done(LUTAB *tbl);
91 >
92 > #define LU_SINIT(fk,fd) {lu_shash,lu_strcmp,fk,fd,0,NULL,0}
93 >
94 > #ifdef __cplusplus
95 > }
96 > #endif
97 > #endif /* _RAD_LOOKUP_H_ */
98 >

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines