Damien | 660365e | 2013-12-17 18:27:24 +0000 | [diff] [blame^] | 1 | typedef enum { |
| 2 | MAP_QSTR, |
| 3 | MAP_PY_OBJ, |
| 4 | } py_map_kind_t; |
| 5 | |
| 6 | typedef struct _py_map_elem_t { |
| 7 | py_obj_t key; |
| 8 | py_obj_t value; |
| 9 | } py_map_elem_t; |
| 10 | |
| 11 | typedef 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 |
| 21 | py_map_t *rt_get_map_locals(void); |
| 22 | void rt_set_map_locals(py_map_t *m); |
| 23 | |
| 24 | int get_doubling_prime_greater_or_equal_to(int x); |
| 25 | void py_map_init(py_map_t *map, py_map_kind_t kind, int n); |
| 26 | py_map_t *py_map_new(py_map_kind_t kind, int n); |
| 27 | py_map_elem_t* py_map_lookup_helper(py_map_t *map, py_obj_t index, bool add_if_not_found); |
| 28 | py_map_elem_t* py_qstr_map_lookup(py_map_t *map, qstr index, bool add_if_not_found); |
| 29 | py_map_elem_t* py_map_lookup(py_obj_t o, py_obj_t index, bool add_if_not_found); |
| 30 | py_obj_t py_set_lookup(py_obj_t o_in, py_obj_t index, bool add_if_not_found); |