1from cpython.ref cimport PyObject
2
3# utility functions to perform iteration over dicts or generic mapping
4cdef class _iter_mapping:
5    cdef object it
6    cdef object cur
7
8ctypedef int (*f_map_next)(object p, Py_ssize_t *ppos, PyObject* *pkey, PyObject* *pval) except -1
9
10cdef f_map_next get_map_iter(object d, PyObject* *ptr) except NULL
11
12cdef int PyMapping_Next(object p, Py_ssize_t *ppos, PyObject* *pkey, PyObject* *pval) except -1
13
14
15cdef object c_merge(object dicts, object factory=*)
16
17
18cdef object c_merge_with(object func, object dicts, object factory=*)
19
20
21cpdef object valmap(object func, object d, object factory=*)
22
23
24cpdef object keymap(object func, object d, object factory=*)
25
26
27cpdef object itemmap(object func, object d, object factory=*)
28
29
30cpdef object valfilter(object predicate, object d, object factory=*)
31
32
33cpdef object keyfilter(object predicate, object d, object factory=*)
34
35
36cpdef object itemfilter(object predicate, object d, object factory=*)
37
38
39cpdef object assoc(object d, object key, object value, object factory=*)
40
41
42cpdef object assoc_in(object d, object keys, object value, object factory=*)
43
44
45cdef object c_dissoc(object d, object keys, object factory=*)
46
47
48cpdef object update_in(object d, object keys, object func, object default=*, object factory=*)
49
50
51cpdef object get_in(object keys, object coll, object default=*, object no_default=*)
52