#ifndef HASH_INCLUDED
#define HASH_INCLUDED

#define HASH_SIZE_LIMIT (~ ( (~0) << 8))
#define HSL (~ ( (~0) << 8))
#define HSL1 (~ ( (~0) << 8))
#define HSL2 (~ ( (~0) << 8))
#define HSL3 (~ ( (~0) << 8))
#define HSL4 (~ ( (~0) << 8))
#define HSL5 (~ ( (~0) << 8))
#define HSL6 (~ ( (~0) << 8))
#define HSL7 (~ ( (~0) << 8))
#define HSL8 (~ ( (~0) << 8))
#define HSL9 (~ ( (~0) << 8))
#define HSL10 (~ ( (~0) << 8))

struct hash_elem_s {
    int *data;
    struct hash_elem_s *next;
};
typedef struct hash_elem_s *hash_elem_t;
typedef struct hash_elem_s **hash_table_t;

extern void init_hash();
extern long hash_str();
extern hash_table_t new_hash_table();
extern void free_hash_table();
extern int *query_and_insert();
extern int *query_table();
extern int process_hash_table();
#endif /* HASH_INCLUDED */
