Blame src/st.h

Packit b89d10
/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
Packit b89d10
Packit b89d10
/* @(#) st.h 5.1 89/12/14 */
Packit b89d10
Packit b89d10
#ifndef ST_INCLUDED
Packit b89d10
Packit b89d10
#define ST_INCLUDED
Packit b89d10
Packit b89d10
#ifdef _WIN32
Packit b89d10
# include <windows.h>
Packit b89d10
typedef ULONG_PTR st_data_t;
Packit b89d10
#else
Packit b89d10
typedef unsigned long st_data_t;
Packit b89d10
#endif
Packit b89d10
#define ST_DATA_T_DEFINED
Packit b89d10
Packit b89d10
typedef struct st_table st_table;
Packit b89d10
Packit b89d10
struct st_hash_type {
Packit b89d10
    int (*compare)();
Packit b89d10
    int (*hash)();
Packit b89d10
};
Packit b89d10
Packit b89d10
struct st_table {
Packit b89d10
    struct st_hash_type *type;
Packit b89d10
    int num_bins;
Packit b89d10
    int num_entries;
Packit b89d10
    struct st_table_entry **bins;
Packit b89d10
};
Packit b89d10
Packit b89d10
#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
Packit b89d10
Packit b89d10
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
Packit b89d10
Packit b89d10
#ifndef _
Packit b89d10
# define _(args) args
Packit b89d10
#endif
Packit b89d10
#ifndef ANYARGS
Packit b89d10
# ifdef __cplusplus
Packit b89d10
#   define ANYARGS ...
Packit b89d10
# else
Packit b89d10
#   define ANYARGS
Packit b89d10
# endif
Packit b89d10
#endif
Packit b89d10
Packit b89d10
st_table *st_init_table _((struct st_hash_type *));
Packit b89d10
st_table *st_init_table_with_size _((struct st_hash_type *, int));
Packit b89d10
st_table *st_init_numtable _((void));
Packit b89d10
st_table *st_init_numtable_with_size _((int));
Packit b89d10
st_table *st_init_strtable _((void));
Packit b89d10
st_table *st_init_strtable_with_size _((int));
Packit b89d10
int st_delete _((st_table *, st_data_t *, st_data_t *));
Packit b89d10
int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t));
Packit b89d10
int st_insert _((st_table *, st_data_t, st_data_t));
Packit b89d10
int st_lookup _((st_table *, st_data_t, st_data_t *));
Packit b89d10
int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t));
Packit b89d10
void st_add_direct _((st_table *, st_data_t, st_data_t));
Packit b89d10
void st_free_table _((st_table *));
Packit b89d10
void st_cleanup_safe _((st_table *, st_data_t));
Packit b89d10
st_table *st_copy _((st_table *));
Packit b89d10
Packit b89d10
#define ST_NUMCMP	((int (*)()) 0)
Packit b89d10
#define ST_NUMHASH	((int (*)()) -2)
Packit b89d10
Packit b89d10
#define st_numcmp	ST_NUMCMP
Packit b89d10
#define st_numhash	ST_NUMHASH
Packit b89d10
Packit b89d10
#endif /* ST_INCLUDED */