Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
2300537c
Commit
2300537c
authored
Jan 13, 2014
by
Damien George
Browse files
Cleanup built-ins, and fix some compiler warnings/errors.
parent
3f5e1b3e
Changes
8
Hide whitespace changes
Inline
Side-by-side
py/builtin.c
View file @
2300537c
...
...
@@ -18,7 +18,7 @@
// args[0] is function from class body
// args[1] is class name
// args[2:] are base objects
mp_obj_t
mp_builtin___build_class__
(
int
n_args
,
const
mp_obj_t
*
args
)
{
static
mp_obj_t
mp_builtin___build_class__
(
int
n_args
,
const
mp_obj_t
*
args
)
{
assert
(
2
<=
n_args
);
// we differ from CPython: we set the new __locals__ object here
...
...
@@ -62,7 +62,7 @@ mp_obj_t mp_builtin___build_class__(int n_args, const mp_obj_t *args) {
MP_DEFINE_CONST_FUN_OBJ_VAR
(
mp_builtin___build_class___obj
,
2
,
mp_builtin___build_class__
);
mp_obj_t
mp_builtin___repl_print__
(
mp_obj_t
o
)
{
static
mp_obj_t
mp_builtin___repl_print__
(
mp_obj_t
o
)
{
if
(
o
!=
mp_const_none
)
{
mp_obj_print
(
o
);
printf
(
"
\n
"
);
...
...
@@ -70,6 +70,8 @@ mp_obj_t mp_builtin___repl_print__(mp_obj_t o) {
return
mp_const_none
;
}
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin___repl_print___obj
,
mp_builtin___repl_print__
);
mp_obj_t
mp_builtin_abs
(
mp_obj_t
o_in
)
{
if
(
MP_OBJ_IS_SMALL_INT
(
o_in
))
{
mp_small_int_t
val
=
MP_OBJ_SMALL_INT_VALUE
(
o_in
);
...
...
@@ -97,7 +99,9 @@ mp_obj_t mp_builtin_abs(mp_obj_t o_in) {
}
}
mp_obj_t
mp_builtin_all
(
mp_obj_t
o_in
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_abs_obj
,
mp_builtin_abs
);
static
mp_obj_t
mp_builtin_all
(
mp_obj_t
o_in
)
{
mp_obj_t
iterable
=
rt_getiter
(
o_in
);
mp_obj_t
item
;
while
((
item
=
rt_iternext
(
iterable
))
!=
mp_const_stop_iteration
)
{
...
...
@@ -108,7 +112,9 @@ mp_obj_t mp_builtin_all(mp_obj_t o_in) {
return
mp_const_true
;
}
mp_obj_t
mp_builtin_any
(
mp_obj_t
o_in
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_all_obj
,
mp_builtin_all
);
static
mp_obj_t
mp_builtin_any
(
mp_obj_t
o_in
)
{
mp_obj_t
iterable
=
rt_getiter
(
o_in
);
mp_obj_t
item
;
while
((
item
=
rt_iternext
(
iterable
))
!=
mp_const_stop_iteration
)
{
...
...
@@ -119,7 +125,9 @@ mp_obj_t mp_builtin_any(mp_obj_t o_in) {
return
mp_const_false
;
}
mp_obj_t
mp_builtin_callable
(
mp_obj_t
o_in
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_any_obj
,
mp_builtin_any
);
static
mp_obj_t
mp_builtin_callable
(
mp_obj_t
o_in
)
{
if
(
mp_obj_is_callable
(
o_in
))
{
return
mp_const_true
;
}
else
{
...
...
@@ -127,7 +135,9 @@ mp_obj_t mp_builtin_callable(mp_obj_t o_in) {
}
}
mp_obj_t
mp_builtin_chr
(
mp_obj_t
o_in
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_callable_obj
,
mp_builtin_callable
);
static
mp_obj_t
mp_builtin_chr
(
mp_obj_t
o_in
)
{
int
ord
=
mp_obj_get_int
(
o_in
);
if
(
0
<=
ord
&&
ord
<=
0x10ffff
)
{
char
*
str
=
m_new
(
char
,
2
);
...
...
@@ -139,7 +149,9 @@ mp_obj_t mp_builtin_chr(mp_obj_t o_in) {
}
}
mp_obj_t
mp_builtin_divmod
(
mp_obj_t
o1_in
,
mp_obj_t
o2_in
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_chr_obj
,
mp_builtin_chr
);
static
mp_obj_t
mp_builtin_divmod
(
mp_obj_t
o1_in
,
mp_obj_t
o2_in
)
{
if
(
MP_OBJ_IS_SMALL_INT
(
o1_in
)
&&
MP_OBJ_IS_SMALL_INT
(
o2_in
))
{
mp_small_int_t
i1
=
MP_OBJ_SMALL_INT_VALUE
(
o1_in
);
mp_small_int_t
i2
=
MP_OBJ_SMALL_INT_VALUE
(
o2_in
);
...
...
@@ -152,6 +164,8 @@ mp_obj_t mp_builtin_divmod(mp_obj_t o1_in, mp_obj_t o2_in) {
}
}
MP_DEFINE_CONST_FUN_OBJ_2
(
mp_builtin_divmod_obj
,
mp_builtin_divmod
);
static
mp_obj_t
mp_builtin_hash
(
mp_obj_t
o_in
)
{
// TODO hash will generally overflow small integer; can we safely truncate it?
return
mp_obj_new_int
(
mp_obj_hash
(
o_in
));
...
...
@@ -165,7 +179,7 @@ static mp_obj_t mp_builtin_iter(mp_obj_t o_in) {
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_iter_obj
,
mp_builtin_iter
);
mp_obj_t
mp_builtin_len
(
mp_obj_t
o_in
)
{
static
mp_obj_t
mp_builtin_len
(
mp_obj_t
o_in
)
{
mp_obj_t
len
=
mp_obj_len_maybe
(
o_in
);
if
(
len
==
NULL
)
{
nlr_jump
(
mp_obj_new_exception_msg_varg
(
MP_QSTR_TypeError
,
"object of type '%s' has no len()"
,
mp_obj_get_type_str
(
o_in
)));
...
...
@@ -174,7 +188,9 @@ mp_obj_t mp_builtin_len(mp_obj_t o_in) {
}
}
mp_obj_t
mp_builtin_max
(
int
n_args
,
const
mp_obj_t
*
args
)
{
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_len_obj
,
mp_builtin_len
);
static
mp_obj_t
mp_builtin_max
(
int
n_args
,
const
mp_obj_t
*
args
)
{
if
(
n_args
==
1
)
{
// given an iterable
mp_obj_t
iterable
=
rt_getiter
(
args
[
0
]);
...
...
@@ -201,7 +217,9 @@ 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_DEFINE_CONST_FUN_OBJ_VAR
(
mp_builtin_max_obj
,
1
,
mp_builtin_max
);
static
mp_obj_t
mp_builtin_min
(
int
n_args
,
const
mp_obj_t
*
args
)
{
if
(
n_args
==
1
)
{
// given an iterable
mp_obj_t
iterable
=
rt_getiter
(
args
[
0
]);
...
...
@@ -228,6 +246,8 @@ mp_obj_t mp_builtin_min(int n_args, const mp_obj_t *args) {
}
}
MP_DEFINE_CONST_FUN_OBJ_VAR
(
mp_builtin_min_obj
,
1
,
mp_builtin_min
);
static
mp_obj_t
mp_builtin_next
(
mp_obj_t
o
)
{
mp_obj_t
ret
=
rt_iternext
(
o
);
if
(
ret
==
mp_const_stop_iteration
)
{
...
...
@@ -239,7 +259,7 @@ static mp_obj_t mp_builtin_next(mp_obj_t o) {
MP_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_next_obj
,
mp_builtin_next
);
mp_obj_t
mp_builtin_ord
(
mp_obj_t
o_in
)
{
static
mp_obj_t
mp_builtin_ord
(
mp_obj_t
o_in
)
{
const
char
*
str
=
qstr_str
(
mp_obj_get_qstr
(
o_in
));
if
(
strlen
(
str
)
==
1
)
{
return
mp_obj_new_int
(
str
[
0
]);
...
...
@@ -248,15 +268,19 @@ 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_DEFINE_CONST_FUN_OBJ_1
(
mp_builtin_ord_obj
,
mp_builtin_ord
);
static
mp_obj_t
mp_builtin_pow
(
int
n_args
,
const
mp_obj_t
*
args
)
{
assert
(
2
<=
n_args
&&
n_args
<=
3
);
switch
(
n_args
)
{
case
2
:
return
rt_binary_op
(
RT_BINARY_OP_POWER
,
args
[
0
],
args
[
1
]);
case
3
:
return
rt_binary_op
(
RT_BINARY_OP_MODULO
,
rt_binary_op
(
RT_BINARY_OP_POWER
,
args
[
0
],
args
[
1
]),
args
[
2
]);
// TODO optimise...
default:
nlr_jump
(
mp_obj_new_exception_msg_varg
(
MP_QSTR_TypeError
,
"pow expected at most 3 arguments, got %d"
,
n_args
));
default:
return
rt_binary_op
(
RT_BINARY_OP_MODULO
,
rt_binary_op
(
RT_BINARY_OP_POWER
,
args
[
0
],
args
[
1
]),
args
[
2
]);
// TODO optimise...
}
}
mp_obj_t
mp_builtin_print
(
int
n_args
,
const
mp_obj_t
*
args
)
{
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mp_builtin_pow_obj
,
2
,
3
,
mp_builtin_pow
);
static
mp_obj_t
mp_builtin_print
(
int
n_args
,
const
mp_obj_t
*
args
)
{
for
(
int
i
=
0
;
i
<
n_args
;
i
++
)
{
if
(
i
>
0
)
{
printf
(
" "
);
...
...
@@ -273,21 +297,25 @@ mp_obj_t mp_builtin_print(int n_args, const mp_obj_t *args) {
return
mp_const_none
;
}
mp_obj_t
mp_builtin_range
(
int
n_args
,
const
mp_obj_t
*
args
)
{
MP_DEFINE_CONST_FUN_OBJ_VAR
(
mp_builtin_print_obj
,
0
,
mp_builtin_print
);
static
mp_obj_t
mp_builtin_range
(
int
n_args
,
const
mp_obj_t
*
args
)
{
assert
(
1
<=
n_args
&&
n_args
<=
3
);
switch
(
n_args
)
{
case
1
:
return
mp_obj_new_range
(
0
,
mp_obj_get_int
(
args
[
0
]),
1
);
case
2
:
return
mp_obj_new_range
(
mp_obj_get_int
(
args
[
0
]),
mp_obj_get_int
(
args
[
1
]),
1
);
case
3
:
return
mp_obj_new_range
(
mp_obj_get_int
(
args
[
0
]),
mp_obj_get_int
(
args
[
1
]),
mp_obj_get_int
(
args
[
2
]));
default:
nlr_jump
(
mp_obj_new_exception_msg_varg
(
MP_QSTR_TypeError
,
"range expected at most 3 arguments, got %d"
,
n_args
));
default:
return
mp_obj_new_range
(
mp_obj_get_int
(
args
[
0
]),
mp_obj_get_int
(
args
[
1
]),
mp_obj_get_int
(
args
[
2
]));
}
}
mp_obj_t
mp_builtin_sum
(
int
n_args
,
const
mp_obj_t
*
args
)
{
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mp_builtin_range_obj
,
1
,
3
,
mp_builtin_range
);
static
mp_obj_t
mp_builtin_sum
(
int
n_args
,
const
mp_obj_t
*
args
)
{
assert
(
1
<=
n_args
&&
n_args
<=
2
);
mp_obj_t
value
;
switch
(
n_args
)
{
case
1
:
value
=
mp_obj_new_int
(
0
);
break
;
case
2
:
value
=
args
[
1
];
break
;
default:
nlr_jump
(
mp_obj_new_exception_msg_varg
(
MP_QSTR_TypeError
,
"sum expected at most 2 arguments, got %d"
,
n_args
));
default:
value
=
args
[
1
];
break
;
}
mp_obj_t
iterable
=
rt_getiter
(
args
[
0
]);
mp_obj_t
item
;
...
...
@@ -296,3 +324,5 @@ mp_obj_t mp_builtin_sum(int n_args, const mp_obj_t *args) {
}
return
value
;
}
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mp_builtin_sum_obj
,
1
,
2
,
mp_builtin_sum
);
py/builtin.h
View file @
2300537c
// TODO convert all these to objects using MP_DECLARE and MP_DEFINE
mp_obj_t
mp_builtin___import__
(
int
n_args
,
mp_obj_t
*
args
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin___build_class___obj
);
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_callable
(
mp_obj_t
o_in
);
mp_obj_t
mp_builtin_chr
(
mp_obj_t
o_in
);
mp_obj_t
mp_builtin_divmod
(
mp_obj_t
o1_in
,
mp_obj_t
o2_in
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin___repl_print___obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_abs_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_all_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_any_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_callable_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_chr_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_divmod_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_hash_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_isinstance_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_issubclass_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_len_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_list_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_max_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_min_obj
);
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_obj_t
mp_builtin_sum
(
int
n_args
,
const
mp_obj_t
*
args
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_ord_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_pow_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_print_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_range_obj
);
MP_DECLARE_CONST_FUN_OBJ
(
mp_builtin_sum_obj
);
py/builtinimport.c
View file @
2300537c
...
...
@@ -18,7 +18,7 @@
#include
"map.h"
#include
"builtin.h"
mp_obj_t
mp_builtin___import__
(
int
n
,
mp_obj_t
*
args
)
{
mp_obj_t
mp_builtin___import__
(
int
n
_args
,
mp_obj_t
*
args
)
{
/*
printf("import:\n");
for (int i = 0; i < n; i++) {
...
...
py/mpconfig.h
View file @
2300537c
...
...
@@ -91,7 +91,7 @@ typedef long long mp_longint_impl_t;
#define BITS_PER_BYTE (8)
#define BITS_PER_WORD (BITS_PER_BYTE * BYTES_PER_WORD)
// machine_int_t value with most significant bit set
#define WORD_MSBIT_HIGH (
1
<< (BYTES_PER_WORD * 8 - 1))
#define WORD_MSBIT_HIGH (
((machine_uint_t)1)
<< (BYTES_PER_WORD * 8 - 1))
// printf format spec to use for machine_int_t and friends
#ifndef INT_FMT
...
...
py/objint.c
View file @
2300537c
...
...
@@ -54,11 +54,13 @@ void int_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj
// This is called only for non-SMALL_INT
mp_obj_t
int_binary_op
(
int
op
,
mp_obj_t
lhs_in
,
mp_obj_t
rhs_in
)
{
assert
(
0
);
return
mp_const_none
;
}
// This is called only with strings whose value doesn't fit in SMALL_INT
mp_obj_t
mp_obj_new_int_from_long_str
(
const
char
*
s
)
{
assert
(
0
);
return
mp_const_none
;
}
mp_obj_t
mp_obj_new_int_from_uint
(
machine_uint_t
value
)
{
...
...
@@ -69,6 +71,7 @@ mp_obj_t mp_obj_new_int_from_uint(machine_uint_t value) {
}
// TODO: Raise exception
assert
(
0
);
return
mp_const_none
;
}
mp_obj_t
mp_obj_new_int
(
machine_int_t
value
)
{
...
...
@@ -77,5 +80,6 @@ mp_obj_t mp_obj_new_int(machine_int_t value) {
}
// TODO: Raise exception
assert
(
0
);
return
mp_const_none
;
}
#endif
py/objstr.c
View file @
2300537c
...
...
@@ -169,8 +169,8 @@ static mp_obj_t str_find(int n_args, const mp_obj_t *args) {
const
char
*
haystack
=
qstr_str
(((
mp_obj_str_t
*
)
args
[
0
])
->
qstr
);
const
char
*
needle
=
qstr_str
(((
mp_obj_str_t
*
)
args
[
1
])
->
qstr
);
s
size_t
haystack_len
=
strlen
(
haystack
);
s
size_t
needle_len
=
strlen
(
needle
);
size_t
haystack_len
=
strlen
(
haystack
);
size_t
needle_len
=
strlen
(
needle
);
size_t
start
=
0
;
size_t
end
=
haystack_len
;
...
...
@@ -183,14 +183,17 @@ static mp_obj_t str_find(int n_args, const mp_obj_t *args) {
}
char
*
p
=
strstr
(
haystack
+
start
,
needle
);
ssize_t
pos
=
-
1
;
if
(
p
)
{
pos
=
p
-
haystack
;
if
(
p
==
NULL
)
{
// not found
return
MP_OBJ_NEW_SMALL_INT
(
-
1
);
}
else
{
// found
machine_int_t
pos
=
p
-
haystack
;
if
(
pos
+
needle_len
>
end
)
{
pos
=
-
1
;
}
return
MP_OBJ_NEW_SMALL_INT
(
pos
);
}
return
MP_OBJ_NEW_SMALL_INT
(
pos
);
}
mp_obj_t
str_strip
(
int
n_args
,
const
mp_obj_t
*
args
)
{
...
...
py/runtime.c
View file @
2300537c
...
...
@@ -97,7 +97,7 @@ void rt_init(void) {
// built-in core functions
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR___build_class__
,
(
mp_obj_t
)
&
mp_builtin___build_class___obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR___repl_print__
,
rt_make_function_1
(
mp_builtin___repl_print__
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR___repl_print__
,
(
mp_obj_t
)
&
mp_builtin___repl_print__
_obj
);
// built-in types
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_bool
,
(
mp_obj_t
)
&
bool_type
);
...
...
@@ -114,26 +114,26 @@ void rt_init(void) {
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_tuple
,
(
mp_obj_t
)
&
tuple_type
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_type
,
(
mp_obj_t
)
&
mp_const_type
);
// built-in user functions
; TODO covert all to &mp_builtin_xxx's
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_abs
,
rt_make_function_1
(
mp_builtin_abs
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_all
,
rt_make_function_1
(
mp_builtin_all
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_any
,
rt_make_function_1
(
mp_builtin_any
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_callable
,
rt_make_function_1
(
mp_builtin_callable
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_chr
,
rt_make_function_1
(
mp_builtin_chr
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_divmod
,
rt_make_function_2
(
mp_builtin_divmod
)
);
// built-in user functions
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_abs
,
(
mp_obj_t
)
&
mp_builtin_abs
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_all
,
(
mp_obj_t
)
&
mp_builtin_all
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_any
,
(
mp_obj_t
)
&
mp_builtin_any
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_callable
,
(
mp_obj_t
)
&
mp_builtin_callable
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_chr
,
(
mp_obj_t
)
&
mp_builtin_chr
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_divmod
,
(
mp_obj_t
)
&
mp_builtin_divmod
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_hash
,
(
mp_obj_t
)
&
mp_builtin_hash_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_isinstance
,
(
mp_obj_t
)
&
mp_builtin_isinstance_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_issubclass
,
(
mp_obj_t
)
&
mp_builtin_issubclass_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_iter
,
(
mp_obj_t
)
&
mp_builtin_iter_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_len
,
rt_make_function_1
(
mp_builtin_len
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_max
,
rt_make_function_var
(
1
,
mp_builtin_max
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_min
,
rt_make_function_var
(
1
,
mp_builtin_min
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_len
,
(
mp_obj_t
)
&
mp_builtin_len
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_max
,
(
mp_obj_t
)
&
mp_builtin_max
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_min
,
(
mp_obj_t
)
&
mp_builtin_min
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_next
,
(
mp_obj_t
)
&
mp_builtin_next_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_ord
,
rt_make_function_1
(
mp_builtin_ord
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_pow
,
rt_make_function_var
(
2
,
mp_builtin_pow
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_print
,
rt_make_function_var
(
0
,
mp_builtin_print
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_range
,
rt_make_function_var
(
1
,
mp_builtin_range
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_sum
,
rt_make_function_var
(
1
,
mp_builtin_sum
)
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_ord
,
(
mp_obj_t
)
&
mp_builtin_ord
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_pow
,
(
mp_obj_t
)
&
mp_builtin_pow
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_print
,
(
mp_obj_t
)
&
mp_builtin_print
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_range
,
(
mp_obj_t
)
&
mp_builtin_range
_obj
);
mp_map_add_qstr
(
&
map_builtins
,
MP_QSTR_sum
,
(
mp_obj_t
)
&
mp_builtin_sum
_obj
);
next_unique_code_id
=
1
;
// 0 indicates "no code"
unique_codes_alloc
=
0
;
...
...
stm/printf.c
View file @
2300537c
...
...
@@ -213,9 +213,9 @@ int pfenv_printf(const pfenv_t *pfenv, const char *fmt, va_list args) {
// usable. I expect that this will be replaced with something
// more appropriate.
char
dot
=
'.'
;
double
d
=
va_arg
(
args
,
double
);
mp_float_t
d
=
va_arg
(
args
,
double
);
int
left
=
(
int
)
d
;
int
right
=
(
int
)((
d
-
(
double
)(
int
)
d
)
*
1000000
.
0
);
int
right
=
(
int
)((
d
-
(
mp_float_t
)(
int
)
d
)
*
1000000
.
0
);
chrs
+=
pfenv_print_int
(
pfenv
,
left
,
1
,
10
,
'a'
,
flags
,
width
);
chrs
+=
pfenv_print_strn
(
pfenv
,
&
dot
,
1
,
flags
,
width
);
chrs
+=
pfenv_print_int
(
pfenv
,
right
,
0
,
10
,
'a'
,
PF_FLAG_ZERO_PAD
,
6
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment