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
d6b31e45
Commit
d6b31e45
authored
Jan 07, 2016
by
Damien George
Browse files
py: Change mp_obj_int_is_positive to more general mp_obj_int_sign.
This function returns the sign (-1, 0 or 1) of the integer object.
parent
93b37262
Changes
5
Hide whitespace changes
Inline
Side-by-side
py/mpprint.c
View file @
d6b31e45
...
...
@@ -217,7 +217,7 @@ int mp_print_mp_int(const mp_print_t *print, mp_obj_t x, int base, int base_char
char
prefix_buf
[
4
];
char
*
prefix
=
prefix_buf
;
if
(
mp_obj_int_
is_positive
(
x
)
)
{
if
(
mp_obj_int_
sign
(
x
)
>
0
)
{
if
(
flags
&
PF_FLAG_SHOW_SIGN
)
{
*
prefix
++
=
'+'
;
}
else
if
(
flags
&
PF_FLAG_SPACE_SIGN
)
{
...
...
py/objint.c
View file @
d6b31e45
...
...
@@ -259,8 +259,15 @@ char *mp_obj_int_formatted(char **buf, mp_uint_t *buf_size, mp_uint_t *fmt_size,
#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE
bool
mp_obj_int_is_positive
(
mp_obj_t
self_in
)
{
return
mp_obj_get_int
(
self_in
)
>=
0
;
int
mp_obj_int_sign
(
mp_obj_t
self_in
)
{
mp_int_t
val
=
mp_obj_get_int
(
self_in
);
if
(
val
<
0
)
{
return
-
1
;
}
else
if
(
val
>
0
)
{
return
1
;
}
else
{
return
0
;
}
}
// This must handle int and bool types, and must raise a
...
...
py/objint.h
View file @
d6b31e45
...
...
@@ -57,7 +57,7 @@ char *mp_obj_int_formatted_impl(char **buf, mp_uint_t *buf_size, mp_uint_t *fmt_
int
base
,
const
char
*
prefix
,
char
base_char
,
char
comma
);
mp_int_t
mp_obj_int_hash
(
mp_obj_t
self_in
);
void
mp_obj_int_to_bytes_impl
(
mp_obj_t
self_in
,
bool
big_endian
,
mp_uint_t
len
,
byte
*
buf
);
bool
mp_obj_int_
is_positive
(
mp_obj_t
self_in
);
int
mp_obj_int_
sign
(
mp_obj_t
self_in
);
mp_obj_t
mp_obj_int_abs
(
mp_obj_t
self_in
);
mp_obj_t
mp_obj_int_unary_op
(
mp_uint_t
op
,
mp_obj_t
o_in
);
mp_obj_t
mp_obj_int_binary_op
(
mp_uint_t
op
,
mp_obj_t
lhs_in
,
mp_obj_t
rhs_in
);
...
...
py/objint_longlong.c
View file @
d6b31e45
...
...
@@ -71,12 +71,21 @@ void mp_obj_int_to_bytes_impl(mp_obj_t self_in, bool big_endian, mp_uint_t len,
}
}
bool
mp_obj_int_is_positive
(
mp_obj_t
self_in
)
{
int
mp_obj_int_sign
(
mp_obj_t
self_in
)
{
mp_longint_impl_t
val
;
if
(
MP_OBJ_IS_SMALL_INT
(
self_in
))
{
return
MP_OBJ_SMALL_INT_VALUE
(
self_in
)
>=
0
;
val
=
MP_OBJ_SMALL_INT_VALUE
(
self_in
);
}
else
{
mp_obj_int_t
*
self
=
self_in
;
val
=
self
->
val
;
}
if
(
val
<
0
)
{
return
-
1
;
}
else
if
(
val
>
0
)
{
return
1
;
}
else
{
return
0
;
}
mp_obj_int_t
*
self
=
self_in
;
return
self
->
val
>=
0
;
}
// This must handle int and bool types, and must raise a
...
...
py/objint_mpz.c
View file @
d6b31e45
...
...
@@ -113,12 +113,25 @@ void mp_obj_int_to_bytes_impl(mp_obj_t self_in, bool big_endian, mp_uint_t len,
mpz_as_bytes
(
&
self
->
mpz
,
big_endian
,
len
,
buf
);
}
bool
mp_obj_int_
is_positive
(
mp_obj_t
self_in
)
{
int
mp_obj_int_
sign
(
mp_obj_t
self_in
)
{
if
(
MP_OBJ_IS_SMALL_INT
(
self_in
))
{
return
MP_OBJ_SMALL_INT_VALUE
(
self_in
)
>=
0
;
mp_int_t
val
=
MP_OBJ_SMALL_INT_VALUE
(
self_in
);
if
(
val
<
0
)
{
return
-
1
;
}
else
if
(
val
>
0
)
{
return
1
;
}
else
{
return
0
;
}
}
mp_obj_int_t
*
self
=
MP_OBJ_TO_PTR
(
self_in
);
return
!
self
->
mpz
.
neg
;
if
(
self
->
mpz
.
len
==
0
)
{
return
0
;
}
else
if
(
self
->
mpz
.
neg
==
0
)
{
return
1
;
}
else
{
return
-
1
;
}
}
// This must handle int and bool types, and must raise a
...
...
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