From c51c883cc84bb680dcc810a81e81dd1df879a07c Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 3 Sep 2016 00:19:02 +1000 Subject: [PATCH] tools/mpy-tool.py: Support freezing of complex numbers. --- tools/mpy-tool.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py index bfb2a5da7..bc8ac4fbd 100755 --- a/tools/mpy-tool.py +++ b/tools/mpy-tool.py @@ -320,6 +320,9 @@ class RawCode: print('STATIC const mp_obj_float_t %s = {{&mp_type_float}, %.16g};' % (obj_name, obj)) print('#endif') + elif type(obj) is complex: + print('STATIC const mp_obj_complex_t %s = {{&mp_type_complex}, %.16g, %.16g};' + % (obj_name, obj.real, obj.imag)) else: # TODO raise FreezeError(self, 'freezing of object %r is not implemented' % (obj,)) @@ -485,6 +488,15 @@ def freeze_mpy(base_qstrs, raw_codes): print('#endif') print() + print('#if MICROPY_PY_BUILTINS_COMPLEX') + print('typedef struct _mp_obj_complex_t {') + print(' mp_obj_base_t base;') + print(' mp_float_t real;') + print(' mp_float_t imag;') + print('} mp_obj_complex_t;') + print('#endif') + print() + print('enum {') for i in range(len(new)): if i == 0: