blob: 75519a404771c60574ed3fa1024b1bba15c522b5 [file] [log] [blame]
Bram Moolenaarcd524592016-07-17 14:57:05 +02001/* dict.c */
2dict_T *dict_alloc(void);
Bram Moolenaarf49cc602018-11-11 15:21:05 +01003dict_T *dict_alloc_id(alloc_id_T id);
Bram Moolenaar7e1652c2017-12-16 18:27:02 +01004dict_T *dict_alloc_lock(int lock);
Bram Moolenaarcd524592016-07-17 14:57:05 +02005int rettv_dict_alloc(typval_T *rettv);
Bram Moolenaar45cf6e92017-04-30 20:25:19 +02006void rettv_dict_set(typval_T *rettv, dict_T *d);
Bram Moolenaar7e1652c2017-12-16 18:27:02 +01007void dict_free_contents(dict_T *d);
Bram Moolenaarcd524592016-07-17 14:57:05 +02008void dict_unref(dict_T *d);
9int dict_free_nonref(int copyID);
10void dict_free_items(int copyID);
11dictitem_T *dictitem_alloc(char_u *key);
12void dictitem_remove(dict_T *dict, dictitem_T *item);
13void dictitem_free(dictitem_T *item);
14dict_T *dict_copy(dict_T *orig, int deep, int copyID);
15int dict_add(dict_T *d, dictitem_T *item);
Bram Moolenaare0be1672018-07-08 16:50:37 +020016int dict_add_number(dict_T *d, char *key, varnumber_T nr);
Bram Moolenaard7f246c2019-04-08 18:15:41 +020017int dict_add_special(dict_T *d, char *key, varnumber_T nr);
Bram Moolenaare0be1672018-07-08 16:50:37 +020018int dict_add_string(dict_T *d, char *key, char_u *str);
Bram Moolenaare6fdf792018-12-26 22:57:42 +010019int dict_add_string_len(dict_T *d, char *key, char_u *str, int len);
Bram Moolenaarcd524592016-07-17 14:57:05 +020020int dict_add_list(dict_T *d, char *key, list_T *list);
Bram Moolenaar08928322020-01-04 14:32:48 +010021int dict_add_tv(dict_T *d, char *key, typval_T *tv);
Bram Moolenaarae943152019-06-16 22:54:14 +020022int dict_add_callback(dict_T *d, char *key, callback_T *cb);
Bram Moolenaar45e18cb2019-04-28 18:05:35 +020023void dict_iterate_start(typval_T *var, dict_iterator_T *iter);
24char_u *dict_iterate_next(dict_iterator_T *iter, typval_T **tv_result);
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +020025int dict_add_dict(dict_T *d, char *key, dict_T *dict);
Bram Moolenaarcd524592016-07-17 14:57:05 +020026long dict_len(dict_T *d);
27dictitem_T *dict_find(dict_T *d, char_u *key, int len);
Bram Moolenaar08928322020-01-04 14:32:48 +010028int dict_get_tv(dict_T *d, char_u *key, typval_T *rettv);
Bram Moolenaar8f667172018-12-14 15:38:31 +010029char_u *dict_get_string(dict_T *d, char_u *key, int save);
30varnumber_T dict_get_number(dict_T *d, char_u *key);
Bram Moolenaar8c6173c2019-08-30 22:08:34 +020031varnumber_T dict_get_number_def(dict_T *d, char_u *key, int def);
Bram Moolenaarb0ebbda2019-06-02 16:51:21 +020032varnumber_T dict_get_number_check(dict_T *d, char_u *key);
Bram Moolenaarcd524592016-07-17 14:57:05 +020033char_u *dict2string(typval_T *tv, int copyID, int restore_copyID);
Bram Moolenaar08928322020-01-04 14:32:48 +010034int eval_dict(char_u **arg, typval_T *rettv, int evaluate, int literal);
Bram Moolenaarcd524592016-07-17 14:57:05 +020035void dict_extend(dict_T *d1, dict_T *d2, char_u *action);
36dictitem_T *dict_lookup(hashitem_T *hi);
37int dict_equal(dict_T *d1, dict_T *d2, int ic, int recursive);
Bram Moolenaar9f9fe372019-07-27 23:12:12 +020038void f_items(typval_T *argvars, typval_T *rettv);
39void f_keys(typval_T *argvars, typval_T *rettv);
40void f_values(typval_T *argvars, typval_T *rettv);
Bram Moolenaar7e1652c2017-12-16 18:27:02 +010041void dict_set_items_ro(dict_T *di);
Bram Moolenaar9f9fe372019-07-27 23:12:12 +020042void f_has_key(typval_T *argvars, typval_T *rettv);
43void dict_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg);
Bram Moolenaarcd524592016-07-17 14:57:05 +020044/* vim: set ft=c : */