/* dict.h: Declarations for C-- dictionaries. */ #ifndef DICT_H #define DICT_H typedef struct dict Dict; #include "data.h" struct dict { List *keys; List *values; int *links; int *hashtab; int hashtab_size; int refs; }; Dict *dict_new(List *keys, List *values); Dict *dict_new_empty(void); Dict *dict_from_slices(List *slices); Dict *dict_dup(Dict *dict); void dict_discard(Dict *dict); int dict_cmp(Dict *dict1, Dict *dict2); Dict *dict_add(Dict *dict, Data *key, Data *value); Dict *dict_del(Dict *dict, Data *key); long dict_find(Dict *dict, Data *key, Data *ret); int dict_contains(Dict *dict, Data *key); List *dict_keys(Dict *dict); List *dict_key_value_pair(Dict *mapping, int i); int dict_size(Dict *dict); String *dict_add_literal_to_str(String *str, Dict *dict); #endif