blob: 7db011d210176cc6ea8e761deabb78afcc995006 [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 Moolenaar89483d42020-05-10 15:24:44 +02008void hashtab_free_contents(hashtab_T *ht);
Bram Moolenaarcd524592016-07-17 14:57:05 +02009void dict_unref(dict_T *d);
10int dict_free_nonref(int copyID);
11void dict_free_items(int copyID);
12dictitem_T *dictitem_alloc(char_u *key);
13void dictitem_remove(dict_T *dict, dictitem_T *item);
14void dictitem_free(dictitem_T *item);
Bram Moolenaar381692b2022-02-02 20:01:27 +000015dict_T *dict_copy(dict_T *orig, int deep, int top, int copyID);
Bram Moolenaar6f1d2aa2021-06-01 21:21:55 +020016int dict_wrong_func_name(dict_T *d, typval_T *tv, char_u *name);
Bram Moolenaarcd524592016-07-17 14:57:05 +020017int dict_add(dict_T *d, dictitem_T *item);
Bram Moolenaare0be1672018-07-08 16:50:37 +020018int dict_add_number(dict_T *d, char *key, varnumber_T nr);
Bram Moolenaar9b4a15d2020-01-11 16:05:23 +010019int dict_add_bool(dict_T *d, char *key, varnumber_T nr);
Bram Moolenaare0be1672018-07-08 16:50:37 +020020int dict_add_string(dict_T *d, char *key, char_u *str);
Bram Moolenaare6fdf792018-12-26 22:57:42 +010021int dict_add_string_len(dict_T *d, char *key, char_u *str, int len);
Bram Moolenaarcd524592016-07-17 14:57:05 +020022int dict_add_list(dict_T *d, char *key, list_T *list);
Bram Moolenaar08928322020-01-04 14:32:48 +010023int dict_add_tv(dict_T *d, char *key, typval_T *tv);
Bram Moolenaarae943152019-06-16 22:54:14 +020024int dict_add_callback(dict_T *d, char *key, callback_T *cb);
Bram Moolenaar45e18cb2019-04-28 18:05:35 +020025void dict_iterate_start(typval_T *var, dict_iterator_T *iter);
26char_u *dict_iterate_next(dict_iterator_T *iter, typval_T **tv_result);
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +020027int dict_add_dict(dict_T *d, char *key, dict_T *dict);
Bram Moolenaarcd524592016-07-17 14:57:05 +020028long dict_len(dict_T *d);
29dictitem_T *dict_find(dict_T *d, char_u *key, int len);
Bram Moolenaar08928322020-01-04 14:32:48 +010030int dict_get_tv(dict_T *d, char_u *key, typval_T *rettv);
Bram Moolenaar8f667172018-12-14 15:38:31 +010031char_u *dict_get_string(dict_T *d, char_u *key, int save);
32varnumber_T dict_get_number(dict_T *d, char_u *key);
Bram Moolenaar8c6173c2019-08-30 22:08:34 +020033varnumber_T dict_get_number_def(dict_T *d, char_u *key, int def);
Bram Moolenaarb0ebbda2019-06-02 16:51:21 +020034varnumber_T dict_get_number_check(dict_T *d, char_u *key);
Bram Moolenaar55881332020-08-18 13:04:15 +020035varnumber_T dict_get_bool(dict_T *d, char_u *key, int def);
Bram Moolenaarcd524592016-07-17 14:57:05 +020036char_u *dict2string(typval_T *tv, int copyID, int restore_copyID);
Bram Moolenaarc5e6a712020-12-04 19:12:14 +010037char_u *get_literal_key(char_u **arg);
Bram Moolenaar8ea93902020-06-27 14:11:53 +020038int eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal);
Bram Moolenaar7a3fe3e2021-07-22 14:58:47 +020039void dict_extend(dict_T *d1, dict_T *d2, char_u *action, char *func_name);
Bram Moolenaarcd524592016-07-17 14:57:05 +020040dictitem_T *dict_lookup(hashitem_T *hi);
41int dict_equal(dict_T *d1, dict_T *d2, int ic, int recursive);
Yegappan Lakshmananf973eeb2021-12-22 18:19:26 +000042long dict_count(dict_T *d, typval_T *needle, int ic);
43void dict_extend_func(typval_T *argvars, type_T *type, char *func_name, char_u *arg_errmsg, int is_new, typval_T *rettv);
44void dict_filter_map(dict_T *d, filtermap_T filtermap, type_T *argtype, char *func_name, char_u *arg_errmsg, typval_T *expr, typval_T *rettv);
45void dict_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg);
Bram Moolenaar9f9fe372019-07-27 23:12:12 +020046void f_items(typval_T *argvars, typval_T *rettv);
47void f_keys(typval_T *argvars, typval_T *rettv);
48void f_values(typval_T *argvars, typval_T *rettv);
Bram Moolenaar7e1652c2017-12-16 18:27:02 +010049void dict_set_items_ro(dict_T *di);
Bram Moolenaar9f9fe372019-07-27 23:12:12 +020050void f_has_key(typval_T *argvars, typval_T *rettv);
Bram Moolenaarcd524592016-07-17 14:57:05 +020051/* vim: set ft=c : */