diff options
author | Damien <damien.p.george@gmail.com> | 2013-12-21 18:17:45 +0000 |
---|---|---|
committer | Damien <damien.p.george@gmail.com> | 2013-12-21 18:17:45 +0000 |
commit | d99b05282d14ceb0163cbcd059aa37bdb415af43 (patch) | |
tree | 978135f9fe83d3c4d5b3c95f84cb104c0092936a /py/builtin.h | |
parent | e2880aa2fdc75298df487df7519d483acb03959c (diff) |
Change object representation from 1 big union to individual structs.
A big change. Micro Python objects are allocated as individual structs
with the first element being a pointer to the type information (which
is itself an object). This scheme follows CPython. Much more flexible,
not necessarily slower, uses same heap memory, and can allocate objects
statically.
Also change name prefix, from py_ to mp_ (mp for Micro Python).
Diffstat (limited to 'py/builtin.h')
-rw-r--r-- | py/builtin.h | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/py/builtin.h b/py/builtin.h index 0a0470a84..c164a7661 100644 --- a/py/builtin.h +++ b/py/builtin.h @@ -1,24 +1,27 @@ -py_obj_t py_builtin___build_class__(py_obj_t o_class_fun, py_obj_t o_class_name); -py_obj_t py_builtin___import__(int n, py_obj_t *args); -py_obj_t py_builtin___repl_print__(py_obj_t o); -py_obj_t py_builtin_abs(py_obj_t o_in); -py_obj_t py_builtin_all(py_obj_t o_in); -py_obj_t py_builtin_any(py_obj_t o_in); -py_obj_t py_builtin_bool(int n_args, const py_obj_t *args); -py_obj_t py_builtin_callable(py_obj_t o_in); -py_obj_t py_builtin_complex(int n_args, const py_obj_t *args); -py_obj_t py_builtin_chr(py_obj_t o_in); -py_obj_t py_builtin_dict(void); -py_obj_t py_builtin_divmod(py_obj_t o1_in, py_obj_t o2_in); -py_obj_t py_builtin_hash(py_obj_t o_in); -py_obj_t py_builtin_iter(py_obj_t o_in); -py_obj_t py_builtin_len(py_obj_t o_in); -py_obj_t py_builtin_list(int n_args, const py_obj_t *args); -py_obj_t py_builtin_max(int n_args, const py_obj_t *args); -py_obj_t py_builtin_min(int n_args, const py_obj_t *args); -py_obj_t py_builtin_next(py_obj_t o_in); -py_obj_t py_builtin_ord(py_obj_t o_in); -py_obj_t py_builtin_pow(int n_args, const py_obj_t *args); -py_obj_t py_builtin_print(int n_args, const py_obj_t *args); -py_obj_t py_builtin_range(int n_args, const py_obj_t *args); -py_obj_t py_builtin_sum(int n_args, const py_obj_t *args); +// TODO convert all these to objects using MP_DECLARE and MP_DEFINE + +mp_obj_t mp_builtin___build_class__(mp_obj_t o_class_fun, mp_obj_t o_class_name); +mp_obj_t mp_builtin___import__(int n, mp_obj_t *args); +mp_obj_t mp_builtin___repl_print__(mp_obj_t o); +mp_obj_t mp_builtin_abs(mp_obj_t o_in); +mp_obj_t mp_builtin_all(mp_obj_t o_in); +mp_obj_t mp_builtin_any(mp_obj_t o_in); +mp_obj_t mp_builtin_bool(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_callable(mp_obj_t o_in); +mp_obj_t mp_builtin_complex(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_chr(mp_obj_t o_in); +mp_obj_t mp_builtin_dict(void); +mp_obj_t mp_builtin_divmod(mp_obj_t o1_in, mp_obj_t o2_in); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_hash_obj); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_iter_obj); +mp_obj_t mp_builtin_len(mp_obj_t o_in); +mp_obj_t mp_builtin_list(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_max(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_min(int n_args, const mp_obj_t *args); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_next_obj); +mp_obj_t mp_builtin_ord(mp_obj_t o_in); +mp_obj_t mp_builtin_pow(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_print(int n_args, const mp_obj_t *args); +mp_obj_t mp_builtin_range(int n_args, const mp_obj_t *args); +MP_DECLARE_CONST_FUN_OBJ(mp_builtin_set_obj); +mp_obj_t mp_builtin_sum(int n_args, const mp_obj_t *args); |