From 6e48f7fa856e4acaf085dfc8876c4e3772d979c2 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 21 Mar 2014 11:45:46 +0000 Subject: py: Allow 'complex()' to take a string as first argument. --- py/parsenum.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'py/parsenum.c') diff --git a/py/parsenum.c b/py/parsenum.c index b1a70c352..77f00957c 100644 --- a/py/parsenum.c +++ b/py/parsenum.c @@ -88,7 +88,7 @@ mp_obj_t mp_parse_num_integer(const char *restrict str, uint len, int base) { #define PARSE_DEC_IN_FRAC (2) #define PARSE_DEC_IN_EXP (3) -mp_obj_t mp_parse_num_decimal(const char *str, uint len, bool allow_imag) { +mp_obj_t mp_parse_num_decimal(const char *str, uint len, bool allow_imag, bool force_complex) { #if MICROPY_ENABLE_FLOAT const char *top = str + len; mp_float_t dec_val = 0; @@ -129,7 +129,7 @@ mp_obj_t mp_parse_num_decimal(const char *str, uint len, bool allow_imag) { dec_val = MICROPY_FLOAT_C_FUN(nan)(""); } } else { - // parse the digits + // string should be a decimal number int in = PARSE_DEC_IN_INTG; bool exp_neg = false; int exp_val = 0; @@ -198,6 +198,8 @@ mp_obj_t mp_parse_num_decimal(const char *str, uint len, bool allow_imag) { // return the object if (imag) { return mp_obj_new_complex(0, dec_val); + } else if (force_complex) { + return mp_obj_new_complex(dec_val, 0); } else { return mp_obj_new_float(dec_val); } -- cgit v1.2.3