on master help sign in
Tidy up the Utf8 module
1c20faaBryan O'Sullivan
Data/Text/Utf8.hs+46−51
@@ -1,14 +1,24 @@
1{-# LANGUAGE MagicHash #-}
1{-# LANGUAGE MagicHash #-}
2−module Data.Text.Utf8 where
2+module Data.Text.Utf8
3−
3+ (
4+ ord2
5+ , ord3
6+ , ord4
7+ , chr2
8+ , chr3
9+ , chr4
10+ , validate1
11+ , validate2
12+ , validate3
13+ , validate4
14+ ) where
15+
4−import Data.Char(ord)
16+import Data.Char (ord)
5−import Data.Bits
17+import Data.Bits (shiftR, (.&.))
6−
7import GHC.Exts
18import GHC.Exts
8−import GHC.Prim
19+import GHC.Word (Word8(..))
9−import GHC.Word
10
20
11−between :: Word8 -> Word8 -> Word8 -> Bool
21+between :: Word8 -> Word8 -> Word8 -> Bool
12between x y z = x >= y && x <= z
22between x y z = x >= y && x <= z
13{-# INLINE between #-}
23{-# INLINE between #-}
14
24
@@ -79,55 +89,40 @@ validate2 x1 x2 = between x1 0xC2 0xDF && between x2 0x80 0xBF
79{-# INLINE validate2 #-}
89{-# INLINE validate2 #-}
80
90
81validate3 :: Word8 -> Word8 -> Word8 -> Bool
91validate3 :: Word8 -> Word8 -> Word8 -> Bool
92+{-# INLINE validate3 #-}
82validate3 x1 x2 x3 = validate3_1 x1 x2 x3 ||
93validate3 x1 x2 x3 = validate3_1 x1 x2 x3 ||
83 validate3_2 x1 x2 x3 ||
94 validate3_2 x1 x2 x3 ||
84 validate3_3 x1 x2 x3 ||
95 validate3_3 x1 x2 x3 ||
85 validate3_4 x1 x2 x3
96 validate3_4 x1 x2 x3
86−{-# INLINE validate3 #-}
97+ where
98+ validate3_1 x1 x2 x3 = (x1 == 0xE0) &&
99+ between x2 0xA0 0xBF &&
100+ between x3 0x80 0xBF
101+ validate3_2 x1 x2 x3 = between x1 0xE1 0xEC &&
102+ between x2 0x80 0xBF &&
103+ between x3 0x80 0xBF
104+ validate3_3 x1 x2 x3 = x1 == 0xED &&
105+ between x2 0x80 0x9F &&
106+ between x3 0x80 0xBF
107+ validate3_4 x1 x2 x3 = between x1 0xEE 0xEF &&
108+ between x2 0x80 0xBF &&
109+ between x3 0x80 0xBF
87
110
88validate4 :: Word8 -> Word8 -> Word8 -> Word8 -> Bool
111validate4 :: Word8 -> Word8 -> Word8 -> Word8 -> Bool
112+{-# INLINE validate4 #-}
89validate4 x1 x2 x3 x4 = validate4_1 x1 x2 x3 x4 ||
113validate4 x1 x2 x3 x4 = validate4_1 x1 x2 x3 x4 ||
90 validate4_2 x1 x2 x3 x4 ||
114 validate4_2 x1 x2 x3 x4 ||
91 validate4_3 x1 x2 x3 x4
115 validate4_3 x1 x2 x3 x4
92−{-# INLINE validate4 #-}
116+ where
93−
94−
95−
96−validate3_1 x1 x2 x3 = (x1 == 0xE0) &&
97− between x2 0xA0 0xBF &&
98− between x3 0x80 0xBF
99−{-# INLINE validate3_1 #-}
100−
101−validate3_2 x1 x2 x3 = between x1 0xE1 0xEC &&
102− between x2 0x80 0xBF &&
103− between x3 0x80 0xBF
104−{-# INLINE validate3_2 #-}
105−
106−validate3_3 x1 x2 x3 = x1 == 0xED &&
107− between x2 0x80 0x9F &&
108− between x3 0x80 0xBF
109−{-# INLINE validate3_3 #-}
110−
111−validate3_4 x1 x2 x3 = between x1 0xEE 0xEF &&
112− between x2 0x80 0xBF &&
113− between x2 0x80 0xBF
114−{-# INLINE validate3_4 #-}
115−
116−
117−validate4_1 x1 x2 x3 x4 = x1 == 0xF0 &&
117+ validate4_1 x1 x2 x3 x4 = x1 == 0xF0 &&
118− between x2 0x90 0xBF &&
118+ between x2 0x90 0xBF &&
119− between x3 0x80 0xBF &&
119+ between x3 0x80 0xBF &&
120− between x4 0x80 0xBF
120+ between x4 0x80 0xBF
121−{-# INLINE validate4_1 #-}
122−
123−validate4_2 x1 x2 x3 x4 = between x1 0xF1 0xF3 &&
121+ validate4_2 x1 x2 x3 x4 = between x1 0xF1 0xF3 &&
124− between x2 0x80 0xBF &&
122+ between x2 0x80 0xBF &&
125− between x3 0x80 0xBF &&
123+ between x3 0x80 0xBF &&
126− between x4 0x80 0xBF
124+ between x4 0x80 0xBF
127−{-# INLINE validate4_2 #-}
128−
129−validate4_3 x1 x2 x3 x4 = x1 == 0xF4 &&
125+ validate4_3 x1 x2 x3 x4 = x1 == 0xF4 &&
130− between x2 0x80 0x8F &&
126+ between x2 0x80 0x8F &&
131− between x3 0x80 0xBF &&
127+ between x3 0x80 0xBF &&
132− between x4 0x80 0xBF
128+ between x4 0x80 0xBF
133−{-# INLINE validate4_3 #-}