diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-21 11:45:46 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-21 11:45:46 +0000 |
commit | 6e48f7fa856e4acaf085dfc8876c4e3772d979c2 (patch) | |
tree | 46c65f64490eae2818fbf9bf334a558453be9e88 /py/parsenum.c | |
parent | c06ea7abf249765bf93595fc42656eed585d7a47 (diff) |
py: Allow 'complex()' to take a string as first argument.
Diffstat (limited to 'py/parsenum.c')
-rw-r--r-- | py/parsenum.c | 6 |
1 files changed, 4 insertions, 2 deletions
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); } |