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
9e215fa4
Commit
9e215fa4
authored
Jun 28, 2014
by
Paul Sokolovsky
Browse files
py: Make unichar_charlen() accept/return machine_uint_t.
parent
a62da515
Changes
5
Hide whitespace changes
Inline
Side-by-side
py/builtin.c
View file @
9e215fa4
...
@@ -372,7 +372,7 @@ STATIC mp_obj_t mp_builtin_ord(mp_obj_t o_in) {
...
@@ -372,7 +372,7 @@ STATIC mp_obj_t mp_builtin_ord(mp_obj_t o_in) {
uint
len
;
uint
len
;
const
char
*
str
=
mp_obj_str_get_data
(
o_in
,
&
len
);
const
char
*
str
=
mp_obj_str_get_data
(
o_in
,
&
len
);
#if MICROPY_PY_BUILTINS_STR_UNICODE
#if MICROPY_PY_BUILTINS_STR_UNICODE
uint
charlen
=
unichar_charlen
(
str
,
len
);
machine_
uint
_t
charlen
=
unichar_charlen
(
str
,
len
);
if
(
charlen
==
1
)
{
if
(
charlen
==
1
)
{
if
(
MP_OBJ_IS_STR
(
o_in
)
&&
UTF8_IS_NONASCII
(
*
str
))
{
if
(
MP_OBJ_IS_STR
(
o_in
)
&&
UTF8_IS_NONASCII
(
*
str
))
{
machine_int_t
ord
=
*
str
++
&
0x7F
;
machine_int_t
ord
=
*
str
++
&
0x7F
;
...
...
py/misc.h
View file @
9e215fa4
...
@@ -100,7 +100,7 @@ bool unichar_isupper(unichar c);
...
@@ -100,7 +100,7 @@ bool unichar_isupper(unichar c);
bool
unichar_islower
(
unichar
c
);
bool
unichar_islower
(
unichar
c
);
unichar
unichar_tolower
(
unichar
c
);
unichar
unichar_tolower
(
unichar
c
);
unichar
unichar_toupper
(
unichar
c
);
unichar
unichar_toupper
(
unichar
c
);
uint
unichar_charlen
(
const
char
*
str
,
uint
len
);
// TODO this should return
machine_uint_t
machine_
uint
_t
unichar_charlen
(
const
char
*
str
,
machine_uint_t
len
);
#define UTF8_IS_NONASCII(ch) ((ch) & 0x80)
#define UTF8_IS_NONASCII(ch) ((ch) & 0x80)
#define UTF8_IS_CONT(ch) (((ch) & 0xC0) == 0x80)
#define UTF8_IS_CONT(ch) (((ch) & 0xC0) == 0x80)
...
...
py/objstr.c
View file @
9e215fa4
...
@@ -1448,7 +1448,7 @@ STATIC mp_obj_t str_count(uint n_args, const mp_obj_t *args) {
...
@@ -1448,7 +1448,7 @@ STATIC mp_obj_t str_count(uint n_args, const mp_obj_t *args) {
// if needle_len is zero then we count each gap between characters as an occurrence
// if needle_len is zero then we count each gap between characters as an occurrence
if
(
needle_len
==
0
)
{
if
(
needle_len
==
0
)
{
return
MP_OBJ_NEW_SMALL_INT
(
(
machine_uint_t
)
unichar_charlen
((
const
char
*
)
start
,
end
-
start
)
+
1
);
return
MP_OBJ_NEW_SMALL_INT
(
unichar_charlen
((
const
char
*
)
start
,
end
-
start
)
+
1
);
}
}
// count the occurrences
// count the occurrences
...
...
py/objstrunicode.c
View file @
9e215fa4
...
@@ -106,7 +106,7 @@ STATIC mp_obj_t uni_unary_op(int op, mp_obj_t self_in) {
...
@@ -106,7 +106,7 @@ STATIC mp_obj_t uni_unary_op(int op, mp_obj_t self_in) {
case
MP_UNARY_OP_BOOL
:
case
MP_UNARY_OP_BOOL
:
return
MP_BOOL
(
str_len
!=
0
);
return
MP_BOOL
(
str_len
!=
0
);
case
MP_UNARY_OP_LEN
:
case
MP_UNARY_OP_LEN
:
return
MP_OBJ_NEW_SMALL_INT
(
(
machine_int_t
)
unichar_charlen
((
const
char
*
)
str_data
,
str_len
));
return
MP_OBJ_NEW_SMALL_INT
(
unichar_charlen
((
const
char
*
)
str_data
,
str_len
));
default:
default:
return
MP_OBJ_NULL
;
// op not supported
return
MP_OBJ_NULL
;
// op not supported
}
}
...
...
py/unicode.c
View file @
9e215fa4
...
@@ -107,11 +107,11 @@ machine_uint_t utf8_ptr_to_index(const char *s, const char *ptr) {
...
@@ -107,11 +107,11 @@ machine_uint_t utf8_ptr_to_index(const char *s, const char *ptr) {
return
i
;
return
i
;
}
}
// TODO: Rename to str_charlen
; return machine_uint_t
// TODO: Rename to str_charlen
uint
unichar_charlen
(
const
char
*
str
,
uint
len
)
machine_
uint
_t
unichar_charlen
(
const
char
*
str
,
machine_
uint
_t
len
)
{
{
#if MICROPY_PY_BUILTINS_STR_UNICODE
#if MICROPY_PY_BUILTINS_STR_UNICODE
uint
charlen
=
0
;
machine_
uint
_t
charlen
=
0
;
for
(
const
char
*
top
=
str
+
len
;
str
<
top
;
++
str
)
{
for
(
const
char
*
top
=
str
+
len
;
str
<
top
;
++
str
)
{
if
(
!
UTF8_IS_CONT
(
*
str
))
{
if
(
!
UTF8_IS_CONT
(
*
str
))
{
++
charlen
;
++
charlen
;
...
...
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