Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

st.h

Go to the documentation of this file.
00001 /*
00002  * Revision Control Information
00003  *
00004  * /projects/hsis/CVS/utilities/st/st.h,v
00005  * serdar
00006  * 1.1
00007  * 1993/07/29 01:00:21
00008  *
00009  */
00010 /* LINTLIBRARY */
00011 
00012 /* /projects/hsis/CVS/utilities/st/st.h,v 1.1 1993/07/29 01:00:21 serdar Exp */
00013 
00014 #ifndef ST_INCLUDED
00015 #define ST_INCLUDED
00016 
00017 typedef struct st_table_entry st_table_entry;
00018 struct st_table_entry {
00019     char *key;
00020     char *record;
00021     st_table_entry *next;
00022 };
00023 
00024 typedef struct st_table st_table;
00025 struct st_table {
00026     int (*compare)(const char *, const char *);
00027     int (*hash)(char *, int);
00028     int num_bins;
00029     int num_entries;
00030     int max_density;
00031     int reorder_flag;
00032     double grow_factor;
00033     st_table_entry **bins;
00034 };
00035 
00036 typedef struct st_generator st_generator;
00037 struct st_generator {
00038     st_table *table;
00039     st_table_entry *entry;
00040     int index;
00041 };
00042 
00043 #define st_is_member(table,key) st_lookup(table,key,(char **) 0)
00044 #define st_count(table) ((table)->num_entries)
00045 
00046 enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE};
00047 
00048 typedef enum st_retval (*ST_PFSR)(char *, char *, char *);
00049 typedef int (*ST_PFICPCP)(const char *, const char *); /* type for comparison function */
00050 typedef int (*ST_PFICPI)(char *, int);     /* type for hash function */
00051 
00052 EXTERN st_table *st_init_table_with_params ARGS((ST_PFICPCP, ST_PFICPI, int, int, double, int));
00053 EXTERN st_table *st_init_table ARGS((ST_PFICPCP, ST_PFICPI)); 
00054 EXTERN void st_free_table ARGS((st_table *));
00055 EXTERN int st_lookup ARGS((st_table *, char *, char **));
00056 EXTERN int st_lookup_int ARGS((st_table *, char *, int *));
00057 EXTERN int st_insert ARGS((st_table *, char *, char *));
00058 EXTERN int st_add_direct ARGS((st_table *, char *, char *));
00059 EXTERN int st_find_or_add ARGS((st_table *, char *, char ***));
00060 EXTERN int st_find ARGS((st_table *, char *, char ***));
00061 EXTERN st_table *st_copy ARGS((st_table *));
00062 EXTERN int st_delete ARGS((st_table *, char **, char **));
00063 EXTERN int st_delete_int ARGS((st_table *, int *, char **));
00064 EXTERN int st_foreach ARGS((st_table *, ST_PFSR, char *));
00065 EXTERN int st_strhash ARGS((char *, int));
00066 EXTERN int st_numhash ARGS((char *, int));
00067 EXTERN int st_ptrhash ARGS((char *, int));
00068 EXTERN int st_numcmp ARGS((const char *, const char *));
00069 EXTERN int st_ptrcmp ARGS((const char *, const char *));
00070 EXTERN st_generator *st_init_gen ARGS((st_table *));
00071 EXTERN int st_gen ARGS((st_generator *, char **, char **));
00072 EXTERN int st_gen_int ARGS((st_generator *, char **, long *));
00073 EXTERN void st_free_gen ARGS((st_generator *));
00074 
00075 
00076 #define ST_DEFAULT_MAX_DENSITY 5
00077 #define ST_DEFAULT_INIT_TABLE_SIZE 11
00078 #define ST_DEFAULT_GROW_FACTOR 2.0
00079 #define ST_DEFAULT_REORDER_FLAG 0
00080 
00081 #define st_foreach_item(table, gen, key, value) \
00082     for(gen=st_init_gen(table); st_gen(gen,key,value) || (st_free_gen(gen),0);)
00083 
00084 #define st_foreach_item_int(table, gen, key, value) \
00085     for(gen=st_init_gen(table); st_gen_int(gen,key,value) || (st_free_gen(gen),0);)
00086 
00087 #define ST_OUT_OF_MEM -10000
00088 
00089 #endif /* ST_INCLUDED */

Generated on Fri Jan 14 08:29:11 2005 for SystemC2.1beta11(excludingMSLib)(IncludingSCV)\nProvidedby:www.openverificationfoundation.org by doxygen1.2.18