| /* | |
| * Revision Control Information | |
| * | |
| * /projects/hsis/CVS/utilities/st/st.h,v | |
| * serdar | |
| * 1.1 | |
| * 1993/07/29 01:00:21 | |
| * | |
| */ | |
| /* LINTLIBRARY */ | |
| /* /projects/hsis/CVS/utilities/st/st.h,v 1.1 1993/07/29 01:00:21 serdar Exp */ | |
| #ifndef ABC__misc__st__st_h | |
| #define ABC__misc__st__st_h | |
| #define st__INCLUDED | |
| #include "misc/util/abc_global.h" | |
| ABC_NAMESPACE_HEADER_START | |
| /* These are potential duplicates. */ | |
| #ifndef EXTERN | |
| # ifdef __cplusplus | |
| # ifdef ABC_NAMESPACE | |
| # define EXTERN extern | |
| # else | |
| # define EXTERN extern "C" | |
| # endif | |
| # else | |
| # define EXTERN extern | |
| # endif | |
| #endif | |
| #ifndef ARGS | |
| #define ARGS(protos) protos | |
| #endif | |
| typedef int (* st__compare_func_type)(const char*, const char*); | |
| typedef int (* st__hash_func_type)(const char*, int); | |
| typedef struct st__table_entry st__table_entry; | |
| struct st__table_entry { | |
| char *key; | |
| char *record; | |
| st__table_entry *next; | |
| }; | |
| typedef struct st__table st__table; | |
| struct st__table { | |
| st__compare_func_type compare; | |
| st__hash_func_type hash; | |
| int num_bins; | |
| int num_entries; | |
| int max_density; | |
| int reorder_flag; | |
| double grow_factor; | |
| st__table_entry **bins; | |
| }; | |
| typedef struct st__generator st__generator; | |
| struct st__generator { | |
| st__table *table; | |
| st__table_entry *entry; | |
| int index; | |
| }; | |
| #define st__is_member(table,key) st__lookup(table,key,(char **) 0) | |
| #define st__count(table) ((table)->num_entries) | |
| enum st__retval { st__CONTINUE, st__STOP, st__DELETE}; | |
| typedef enum st__retval (* st__PFSR)(char *, char *, char *); | |
| typedef int (* st__PFI)(); | |
| extern st__table * st__init_table_with_params ( st__compare_func_type compare, st__hash_func_type hash, int size, int density, double grow_factor, int reorder_flag); | |
| extern st__table * st__init_table ( st__compare_func_type, st__hash_func_type); | |
| extern void st__free_table ( st__table *); | |
| extern int st__lookup ( st__table *, const char *, char **); | |
| extern int st__lookup_int ( st__table *, char *, int *); | |
| extern int st__insert ( st__table *, const char *, char *); | |
| extern int st__add_direct ( st__table *, char *, char *); | |
| extern int st__find_or_add ( st__table *, char *, char ***); | |
| extern int st__find ( st__table *, char *, char ***); | |
| extern st__table * st__copy ( st__table *); | |
| extern int st__delete ( st__table *, const char **, char **); | |
| extern int st__delete_int ( st__table *, long *, char **); | |
| extern int st__foreach ( st__table *, st__PFSR, char *); | |
| extern int st__strhash (const char *, int); | |
| extern int st__numhash (const char *, int); | |
| extern int st__ptrhash (const char *, int); | |
| extern int st__numcmp (const char *, const char *); | |
| extern int st__ptrcmp (const char *, const char *); | |
| extern st__generator * st__init_gen ( st__table *); | |
| extern int st__gen ( st__generator *, const char **, char **); | |
| extern int st__gen_int ( st__generator *, const char **, long *); | |
| extern void st__free_gen ( st__generator *); | |
| #define st__DEFAULT_MAX_DENSITY 5 | |
| #define st__DEFAULT_INIT_TABLE_SIZE 11 | |
| #define st__DEFAULT_GROW_FACTOR 2.0 | |
| #define st__DEFAULT_REORDER_FLAG 0 | |
| #define st__foreach_item(table, gen, key, value) \ | |
| for(gen= st__init_gen(table); st__gen(gen,key,value) || ( st__free_gen(gen),0);) | |
| #define st__foreach_item_int(table, gen, key, value) \ | |
| for(gen= st__init_gen(table); st__gen_int(gen,key,value) || ( st__free_gen(gen),0);) | |
| #define st__OUT_OF_MEM -10000 | |
| ABC_NAMESPACE_HEADER_END | |
| #endif /* st__INCLUDED */ |