Skip to content
Snippets Groups Projects
Commit 15343736 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Merge branch 'ctype_conv' into 'master'

Use lossless type conversion in ctype.h

See merge request !246
parents 10f2e0fe 0b4b3cd5
No related branches found
No related tags found
No related merge requests found
...@@ -4,75 +4,79 @@ use crate::platform::types::*; ...@@ -4,75 +4,79 @@ use crate::platform::types::*;
#[no_mangle] #[no_mangle]
pub extern "C" fn isalnum(c: c_int) -> c_int { pub extern "C" fn isalnum(c: c_int) -> c_int {
(isdigit(c) != 0 || isalpha(c) != 0) as c_int c_int::from(isdigit(c) != 0 || isalpha(c) != 0)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isalpha(c: c_int) -> c_int { pub extern "C" fn isalpha(c: c_int) -> c_int {
(islower(c) != 0 || isupper(c) != 0) as c_int c_int::from(islower(c) != 0 || isupper(c) != 0)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isascii(c: c_int) -> c_int { pub extern "C" fn isascii(c: c_int) -> c_int {
((c & !0x7f) == 0) as c_int c_int::from((c & !0x7f) == 0)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isblank(c: c_int) -> c_int { pub extern "C" fn isblank(c: c_int) -> c_int {
(c == ' ' as c_int || c == '\t' as c_int) as c_int c_int::from(c == c_int::from(b' ') || c == c_int::from(b'\t'))
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn iscntrl(c: c_int) -> c_int { pub extern "C" fn iscntrl(c: c_int) -> c_int {
((c >= 0x00 && c <= 0x1f) || c == 0x7f) as c_int c_int::from((c >= 0x00 && c <= 0x1f) || c == 0x7f)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isdigit(c: c_int) -> c_int { pub extern "C" fn isdigit(c: c_int) -> c_int {
(c >= b'0' as c_int && c <= b'9' as c_int) as c_int c_int::from(c >= c_int::from(b'0') && c <= c_int::from(b'9'))
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isgraph(c: c_int) -> c_int { pub extern "C" fn isgraph(c: c_int) -> c_int {
(c >= 0x21 && c <= 0x7e) as c_int c_int::from(c >= 0x21 && c <= 0x7e)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn islower(c: c_int) -> c_int { pub extern "C" fn islower(c: c_int) -> c_int {
(c >= b'a' as c_int && c <= b'z' as c_int) as c_int c_int::from(c >= c_int::from(b'a') && c <= c_int::from(b'z'))
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isprint(c: c_int) -> c_int { pub extern "C" fn isprint(c: c_int) -> c_int {
(c >= 0x20 && c < 0x7f) as c_int c_int::from(c >= 0x20 && c < 0x7f)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn ispunct(c: c_int) -> c_int { pub extern "C" fn ispunct(c: c_int) -> c_int {
((c >= b'!' as c_int && c <= b'/' as c_int) c_int::from(
|| (c >= b':' as c_int && c <= b'@' as c_int) (c >= c_int::from(b'!') && c <= c_int::from(b'/'))
|| (c >= b'[' as c_int && c <= b'`' as c_int) || (c >= c_int::from(b':') && c <= c_int::from(b'@'))
|| (c >= b'{' as c_int && c <= b'~' as c_int)) as c_int || (c >= c_int::from(b'[') && c <= c_int::from(b'`'))
|| (c >= c_int::from(b'{') && c <= c_int::from(b'~')),
)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isspace(c: c_int) -> c_int { pub extern "C" fn isspace(c: c_int) -> c_int {
(c == ' ' as c_int c_int::from(
|| c == '\t' as c_int c == c_int::from(b' ')
|| c == '\n' as c_int || c == c_int::from(b'\t')
|| c == '\r' as c_int || c == c_int::from(b'\n')
|| c == 0x0b || c == c_int::from(b'\r')
|| c == 0x0c) as c_int || c == 0x0b
|| c == 0x0c,
)
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isupper(c: c_int) -> c_int { pub extern "C" fn isupper(c: c_int) -> c_int {
(c >= b'A' as c_int && c <= b'Z' as c_int) as c_int c_int::from(c >= c_int::from(b'A') && c <= c_int::from(b'Z'))
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn isxdigit(c: c_int) -> c_int { pub extern "C" fn isxdigit(c: c_int) -> c_int {
(isdigit(c) != 0 || (c | 32 >= b'a' as c_int && c | 32 <= 'f' as c_int)) as c_int c_int::from(isdigit(c) != 0 || (c | 32 >= c_int::from(b'a') && c | 32 <= c_int::from(b'f')))
} }
#[no_mangle] #[no_mangle]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment