diff options
author | Damien George <damien.p.george@gmail.com> | 2016-03-14 22:34:03 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-03-14 22:34:03 +0000 |
commit | dddb98db8b7544db0248843ad2450a7177adac4a (patch) | |
tree | 50c3b5e017dffb41cd10edd223e9503a43db0fd3 | |
parent | 99fc0d120a139a1525384663552b568fab6215e2 (diff) | |
download | micropython-dddb98db8b7544db0248843ad2450a7177adac4a.tar.gz micropython-dddb98db8b7544db0248843ad2450a7177adac4a.zip |
py/parsenum: Use size_t to count bytes, and int for type of base arg.
size_t is the proper type to count number of bytes in a string. The base
argument does not need to be a full mp_uint_t, int is enough.
-rw-r--r-- | py/parsenum.c | 5 | ||||
-rw-r--r-- | py/parsenum.h | 6 | ||||
-rw-r--r-- | py/parsenumbase.c | 2 | ||||
-rw-r--r-- | py/parsenumbase.h | 8 |
4 files changed, 10 insertions, 11 deletions
diff --git a/py/parsenum.c b/py/parsenum.c index 57261de40d..c73ae54a16 100644 --- a/py/parsenum.c +++ b/py/parsenum.c @@ -28,6 +28,7 @@ #include <stdlib.h> #include "py/nlr.h" +#include "py/parsenumbase.h" #include "py/parsenum.h" #include "py/smallint.h" @@ -45,7 +46,7 @@ STATIC NORETURN void raise_exc(mp_obj_t exc, mp_lexer_t *lex) { nlr_raise(exc); } -mp_obj_t mp_parse_num_integer(const char *restrict str_, mp_uint_t len, mp_uint_t base, mp_lexer_t *lex) { +mp_obj_t mp_parse_num_integer(const char *restrict str_, size_t len, int base, mp_lexer_t *lex) { const byte *restrict str = (const byte *)str_; const byte *restrict top = str + len; bool neg = false; @@ -169,7 +170,7 @@ typedef enum { PARSE_DEC_IN_EXP, } parse_dec_in_t; -mp_obj_t mp_parse_num_decimal(const char *str, mp_uint_t len, bool allow_imag, bool force_complex, mp_lexer_t *lex) { +mp_obj_t mp_parse_num_decimal(const char *str, size_t len, bool allow_imag, bool force_complex, mp_lexer_t *lex) { #if MICROPY_PY_BUILTINS_FLOAT const char *top = str + len; mp_float_t dec_val = 0; diff --git a/py/parsenum.h b/py/parsenum.h index 26aac49bcf..f140cfc85e 100644 --- a/py/parsenum.h +++ b/py/parsenum.h @@ -30,10 +30,8 @@ #include "py/lexer.h" #include "py/obj.h" -mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base); - // these functions raise a SyntaxError if lex!=NULL, else a ValueError -mp_obj_t mp_parse_num_integer(const char *restrict str, mp_uint_t len, mp_uint_t base, mp_lexer_t *lex); -mp_obj_t mp_parse_num_decimal(const char *str, mp_uint_t len, bool allow_imag, bool force_complex, mp_lexer_t *lex); +mp_obj_t mp_parse_num_integer(const char *restrict str, size_t len, int base, mp_lexer_t *lex); +mp_obj_t mp_parse_num_decimal(const char *str, size_t len, bool allow_imag, bool force_complex, mp_lexer_t *lex); #endif // __MICROPY_INCLUDED_PY_PARSENUM_H__ diff --git a/py/parsenumbase.c b/py/parsenumbase.c index 31e4a9164d..8d057af187 100644 --- a/py/parsenumbase.c +++ b/py/parsenumbase.c @@ -28,7 +28,7 @@ // find real radix base, and strip preceding '0x', '0o' and '0b' // puts base in *base, and returns number of bytes to skip the prefix -mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base) { +size_t mp_parse_num_base(const char *str, size_t len, int *base) { const byte *p = (const byte*)str; if (len <= 1) { goto no_prefix; diff --git a/py/parsenumbase.h b/py/parsenumbase.h index f8953ec835..9da9db8412 100644 --- a/py/parsenumbase.h +++ b/py/parsenumbase.h @@ -23,11 +23,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#ifndef __MICROPY_INCLUDED_PY_PARSENUM_H__ -#define __MICROPY_INCLUDED_PY_PARSENUM_H__ +#ifndef __MICROPY_INCLUDED_PY_PARSENUMBASE_H__ +#define __MICROPY_INCLUDED_PY_PARSENUMBASE_H__ #include "py/mpconfig.h" -mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base); +size_t mp_parse_num_base(const char *str, size_t len, int *base); -#endif // __MICROPY_INCLUDED_PY_PARSENUM_H__ +#endif // __MICROPY_INCLUDED_PY_PARSENUMBASE_H__ |