on master help sign in
Tidy up the Utf16 module
b9983b2Bryan O'Sullivan
Data/Text/Utf16.hs+11−6
@@ -1,11 +1,14 @@
1{-# LANGUAGE MagicHash #-}
1{-# LANGUAGE MagicHash #-}
2
2
3−module Data.Text.Utf16 where
3+module Data.Text.Utf16
4+ (
5+ chr2
6+ , validate1
7+ , validate2
8+ ) where
4
9
5import GHC.Exts
10import GHC.Exts
6−import GHC.Word
11+import GHC.Word (Word16(..))
7−
8−import Data.Word
9
12
10chr2 :: Word16 -> Word16 -> Char
13chr2 :: Word16 -> Word16 -> Char
11chr2 (W16# a#) (W16# b#) = C# (chr# (upper# +# lower# +# 0x10000#))
14chr2 (W16# a#) (W16# b#) = C# (chr# (upper# +# lower# +# 0x10000#))
@@ -18,7 +21,9 @@ chr2 (W16# a#) (W16# b#) = C# (chr# (upper# +# lower# +# 0x10000#))
18
21
19validate1 :: Word16 -> Bool
22validate1 :: Word16 -> Bool
20validate1 x1 = (x1 >= 0 && x1 < 0xD800) || (x1 > 0xDFFF && x1 < 0x10000)
23validate1 x1 = (x1 >= 0 && x1 < 0xD800) || (x1 > 0xDFFF && x1 < 0x10000)
24+{-# INLINE validate1 #-}
21
25
22validate2 :: Word16 -> Word16 -> Bool
26validate2 :: Word16 -> Word16 -> Bool
23−validate2 x1 x2 = (x1 >= 0xD800 && x1 <= 0xDBFF) &&
27+validate2 x1 x2 = x1 >= 0xD800 && x1 <= 0xDBFF &&
24− (x2 >= 0xDC00 && x2 <= 0xDFFF)
28+ x2 >= 0xDC00 && x2 <= 0xDFFF
29+{-# INLINE validate2 #-}