module TextBuilderDev.Unicode where
import TextBuilderDev.Prelude
{-# INLINE utf8CodeUnits3 #-}
utf8CodeUnits3 :: Word8 -> Word8 -> Word8 -> Int
utf8CodeUnits3 :: Word8 -> Word8 -> Word8 -> Int
utf8CodeUnits3 Word8
byte1 Word8
byte2 Word8
byte3 =
forall a. Bits a => a -> Int -> a
shiftL (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte1 forall a. Num a => a -> a -> a
- Int
0xE0) Int
12
forall a. Num a => a -> a -> a
+ forall a. Bits a => a -> Int -> a
shiftL (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte2 forall a. Num a => a -> a -> a
- Int
0x80) Int
6
forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte3
forall a. Num a => a -> a -> a
- Int
0x80
{-# INLINE utf8CodeUnits4 #-}
utf8CodeUnits4 :: Word8 -> Word8 -> Word8 -> Word8 -> Int
utf8CodeUnits4 :: Word8 -> Word8 -> Word8 -> Word8 -> Int
utf8CodeUnits4 Word8
byte1 Word8
byte2 Word8
byte3 Word8
byte4 =
forall a. Bits a => a -> Int -> a
shiftL (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte1 forall a. Num a => a -> a -> a
- Int
0xF0) Int
18
forall a. Num a => a -> a -> a
+ forall a. Bits a => a -> Int -> a
shiftL (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte2 forall a. Num a => a -> a -> a
- Int
0x80) Int
12
forall a. Num a => a -> a -> a
+ forall a. Bits a => a -> Int -> a
shiftL (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte3 forall a. Num a => a -> a -> a
- Int
0x80) Int
6
forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
byte4
forall a. Num a => a -> a -> a
- Int
0x80