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.2 by greg, Thu Jul 7 14:02:31 1994 UTC vs.
Revision 2.7 by greg, Tue Feb 25 02:47:21 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1994 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid $Id$ */
2   /*
3   * Header file for general associative table lookup routines
4   */
5  
6 + #include "copyright.h"
7 +
8   typedef struct {
9 <        char    *key;           /* key name */
10 <        long    hval;           /* key hash value (for efficiency) */
11 <        char    *data;          /* pointer to client data */
9 >        char    *key;                   /* key name */
10 >        unsigned long   hval;           /* key hash value (for efficiency) */
11 >        char    *data;                  /* pointer to client data */
12   } LUENT;
13  
14   typedef struct {
15 <        long    (*hashf)();     /* key hash function */
16 <        int     (*keycmp)();    /* key comparison function */
17 <        void    (*freek)();     /* free a key */
18 <        void    (*freed)();     /* free the data */
19 <        int     tsiz;           /* current table size */
20 <        LUENT   *tabl;          /* table, if allocated */
21 <        int     ndel;           /* number of deleted entries */
15 >        unsigned long   (*hashf)();     /* key hash function */
16 >        int     (*keycmp)();            /* key comparison function */
17 >        void    (*freek)();             /* free a key */
18 >        void    (*freed)();             /* free the data */
19 >        int     tsiz;                   /* current table size */
20 >        LUENT   *tabl;                  /* table, if allocated */
21 >        int     ndel;                   /* number of deleted entries */
22   } LUTAB;
23  
24 + #undef strcmp
25   #define LU_SINIT(fk,fd)         {lu_shash,strcmp,(void (*)())(fk),\
26                                  (void (*)())(fd),0,NULL,0}
27  
# Line 59 | Line 59 | typedef struct {
59   * It is therefore an error to reuse or do anything with the key
60   * field after calling lu_delete.
61   *
62 + * The lu_doall routine loops through every filled table entry, calling
63 + * the given function once on each entry.  If a NULL pointer is passed
64 + * for this function, then lu_doall simply returns the total number of
65 + * active entries.  Otherwise, it returns the sum of all the function
66 + * evaluations.
67 + *
68   * The lu_done routine calls the given free function once for each
69   * assigned table entry (i.e. each entry with an assigned key value).
70   * The user must define these routines to free the key and the data
# Line 66 | Line 72 | typedef struct {
72   * allocated table itself.
73   */
74  
75 + extern int      strcmp();
76 +
77 + #ifdef NOPROTO
78 +
79   extern int      lu_init();
80   extern LUENT    *lu_find();
81   extern void     lu_delete();
82 + extern int      lu_doall();
83   extern void     lu_done();
84 < extern long     lu_shash();
84 > extern unsigned long    lu_shash();
85  
86 < extern int      strcmp();
86 > #else
87 >
88 > extern int      lu_init(LUTAB *tbl, int nel);
89 > extern unsigned long    lu_shash(char *s);
90 > extern LUENT    *lu_find(LUTAB *tbl, char *key);
91 > extern void     lu_delete(LUTAB *tbl, char *key);
92 > extern int      lu_doall(LUTAB *tbl, int (*f)());
93 > extern void     lu_done(LUTAB *tbl);
94 >
95 > #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines