11# This file is a part of Julia. License is MIT: http://julialang.org/license
22
3- convert (:: Type{Char} , x:: UInt32 ) = reinterpret (Char, x)
3+ function convert (:: Type{UInt32} , c:: Char )
4+ u = reinterpret (UInt32, c)
5+ u $= ifelse (
6+ u <= 0x0000ffff ,
7+ ifelse (u <= 0x000000ff , 0x00000000 , 0x0000c080 ),
8+ ifelse (u <= 0x00ffffff , 0x00e08080 , 0xf0808080 ),
9+ )
10+ ((u & 0x000000ff ) >> 0 ) $ ((u & 0x0000ff00 ) >> 2 ) $
11+ ((u & 0x00ff0000 ) >> 4 ) $ ((u & 0xff000000 ) >> 6 )
12+ end
13+
14+ function convert (:: Type{Char} , u:: UInt32 )
15+ u < 0x00200000 || throw (InexactError ())
16+ c = (u & 0x3f ) | ((u << 2 ) & 0x3f00 ) | ((u << 4 ) & 0x3f0000 ) | ((u << 6 ) & 0x3f000000 )
17+ reinterpret (Char, ifelse (u <= 0x7f , u,
18+ c | ifelse (u <= 0x000007ff , 0x0000c080 ,
19+ ifelse (u <= 0x0000ffff , 0x00e08080 , 0xf0808080 ))))
20+ end
21+
422convert (:: Type{Char} , x:: Number ) = Char (UInt32 (x))
5- convert (:: Type{UInt32} , x:: Char ) = reinterpret (UInt32, x)
623convert {T<:Number} (:: Type{T} , x:: Char ) = convert (T, UInt32 (x))
724
825rem {T<:Number} (x:: Char , :: Type{T} ) = rem (UInt32 (x), T)
@@ -29,11 +46,11 @@ done(c::Char, state) = state
2946isempty (c:: Char ) = false
3047in (x:: Char , y:: Char ) = x == y
3148
32- == (x:: Char , y:: Char ) = UInt32 (x) == UInt32 (y )
49+ == (x:: Char , y:: Char ) = eq_int ( unbox (Char,x), unbox (Char,y) )
3350== (x:: Char , y:: Integer ) = UInt32 (x) == y
3451== (x:: Integer , y:: Char ) = x == UInt32 (y)
3552
36- isless (x:: Char , y:: Char ) = isless ( UInt32 ( x), UInt32 ( y))
53+ isless (x:: Char , y:: Char ) = ult_int ( unbox (Char, x), unbox (Char, y))
3754isless (x:: Char , y:: Integer ) = isless (UInt32 (x), y)
3855isless (x:: Integer , y:: Char ) = isless (x, UInt32 (y))
3956
@@ -42,8 +59,6 @@ isless(x::Integer, y::Char) = isless(x, UInt32(y))
4259+ (x:: Char , y:: Integer ) = Char (Int32 (x) + Int32 (y))
4360+ (x:: Integer , y:: Char ) = y + x
4461
45- bswap (x:: Char ) = Char (bswap (UInt32 (x)))
46-
4762print (io:: IO , c:: Char ) = (write (io, c); nothing )
4863
4964const hex_chars = UInt8[' 0' :' 9' ;' a' :' z' ]
0 commit comments