diff options
Diffstat (limited to 'py/objprivate.h')
-rw-r--r-- | py/objprivate.h | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/py/objprivate.h b/py/objprivate.h deleted file mode 100644 index 70ee6560da..0000000000 --- a/py/objprivate.h +++ /dev/null @@ -1,140 +0,0 @@ -// internal py_obj_t representation -// not for general use, instead access using py_obj_xxx functions - -#define IS_O(o, k) (((((py_small_int_t)(o)) & 1) == 0) && (((py_obj_base_t*)(o))->kind == (k))) -#define IS_SMALL_INT(o) (((py_small_int_t)(o)) & 1) -#define FROM_SMALL_INT(o) (((py_small_int_t)(o)) >> 1) -#define TO_SMALL_INT(o) ((py_obj_t)(((o) << 1) | 1)) - -typedef enum { - O_CONST, - O_STR, -#if MICROPY_ENABLE_FLOAT - O_FLOAT, - O_COMPLEX, -#endif - O_CELL, - O_EXCEPTION_0, - O_EXCEPTION_N, - O_RANGE, - O_RANGE_IT, - O_FUN_0, - O_FUN_1, - O_FUN_2, - O_FUN_N, - O_FUN_VAR, - O_FUN_BC, - O_FUN_ASM, - O_GEN_WRAP, - O_GEN_INSTANCE, - O_BOUND_METH, - O_CLOSURE, - O_TUPLE, - O_LIST, - O_TUPLE_IT, - O_LIST_IT, - O_SET, - O_MAP, - O_CLASS, - O_OBJ, - O_USER, -} py_obj_kind_t; - -typedef struct _py_obj_base_t py_obj_base_t; - -struct _py_obj_base_t { - py_obj_kind_t kind; - union { - const char *id; - qstr u_str; -#if MICROPY_ENABLE_FLOAT - py_float_t u_float; // for O_FLOAT - struct { // for O_COMPLEX - py_float_t real; - py_float_t imag; - } u_complex; -#endif - py_obj_t u_cell; // for O_CELL - struct { // for O_EXCEPTION_0 - qstr id; - } u_exc0; - struct { // for O_EXCEPTION_N - // TODO make generic object or something - qstr id; - int n_args; - const void **args; - } u_exc_n; - struct { // for O_RANGE - // TODO make generic object or something - machine_int_t start; - machine_int_t stop; - machine_int_t step; - } u_range; - struct { // for O_RANGE_IT - // TODO make generic object or something - machine_int_t cur; - machine_int_t stop; - machine_int_t step; - } u_range_it; - struct { // for O_FUN_[012N], O_FUN_VAR - int n_args; - void *fun; - } u_fun; - struct { // for O_FUN_BC - int n_args; - uint n_state; - byte *code; - } u_fun_bc; - struct { // for O_FUN_ASM - int n_args; - void *fun; - } u_fun_asm; - struct { // for O_GEN_WRAP - int n_state; - py_obj_base_t *fun; - } u_gen_wrap; - struct { // for O_GEN_INSTANCE - py_obj_t *state; - const byte *ip; - py_obj_t *sp; - } u_gen_instance; - struct { // for O_BOUND_METH - py_obj_t meth; - py_obj_t self; - } u_bound_meth; - struct { // for O_CLOSURE - py_obj_t fun; - py_obj_t vars; - } u_closure; - struct { // for O_TUPLE, O_LIST - machine_uint_t alloc; - machine_uint_t len; - py_obj_t *items; - } u_tuple_list; - struct { // for O_TUPLE_IT, O_LIST_IT - py_obj_base_t *obj; - machine_uint_t cur; - } u_tuple_list_it; - struct { // for O_SET - machine_uint_t alloc; - machine_uint_t used; - py_obj_t *table; - } u_set; - py_map_t u_map; // for O_MAP - struct { // for O_CLASS - py_map_t *locals; - } u_class; - struct { // for O_OBJ - py_obj_base_t *class; // points to a O_CLASS object - py_map_t *members; - } u_obj; - struct { // for O_USER - const py_user_info_t *info; - machine_uint_t data1; - machine_uint_t data2; - } u_user; - }; -}; - -py_obj_t py_obj_new_tuple_iterator(py_obj_base_t *tuple, int cur); -py_obj_t py_obj_new_list_iterator(py_obj_base_t *list, int cur); |