/*
// ColdMUD was created and is copyright 1993, 1994 by Greg Hudson
//
// ColdX is a derivitive work, and is copyright 1995 by the ColdX Project.
// Full copyright information can be found in the file doc/CREDITS
//
// File:        dict.h
// Version:     0.1-5
// Last Edited: 18 May 1995
//
// ---
//
// Declarations for ColdC 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