blob: 6c9df9ece09ecb49be01f8964412f38523522786 [file] [log] [blame]
Damien660365e2013-12-17 18:27:24 +00001typedef enum {
2 MAP_QSTR,
3 MAP_PY_OBJ,
4} py_map_kind_t;
5
6typedef struct _py_map_elem_t {
7 py_obj_t key;
8 py_obj_t value;
9} py_map_elem_t;
10
11typedef struct _py_map_t {
12 struct {
13 py_map_kind_t kind : 1;
14 machine_uint_t used : (8 * BYTES_PER_WORD - 1);
15 };
16 machine_uint_t alloc;
17 py_map_elem_t *table;
18} py_map_t;
19
20// these are defined in runtime.c
21py_map_t *rt_get_map_locals(void);
22void rt_set_map_locals(py_map_t *m);
23
24int get_doubling_prime_greater_or_equal_to(int x);
25void py_map_init(py_map_t *map, py_map_kind_t kind, int n);
26py_map_t *py_map_new(py_map_kind_t kind, int n);
27py_map_elem_t* py_map_lookup_helper(py_map_t *map, py_obj_t index, bool add_if_not_found);
28py_map_elem_t* py_qstr_map_lookup(py_map_t *map, qstr index, bool add_if_not_found);
29py_map_elem_t* py_map_lookup(py_obj_t o, py_obj_t index, bool add_if_not_found);
30py_obj_t py_set_lookup(py_obj_t o_in, py_obj_t index, bool add_if_not_found);