-- autogenerated from https://www.unicode.org/Public/15.1.0/ucd/PropList.txt
-- |
-- Module      : Unicode.Internal.Char.PropList
-- Copyright   : (c) 2020 Composewell Technologies and Contributors
-- License     : Apache-2.0
-- Maintainer  : streamly@composewell.com
-- Stability   : experimental

{-# OPTIONS_HADDOCK hide #-}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use camelCase" #-}

module Unicode.Internal.Char.PropList
    ( isPattern_Syntax
    , isPattern_White_Space
    , isWhite_Space
    ) where

import Data.Bits (Bits(..))
import Data.Char (ord)
import Data.Int (Int8)
import Data.Word (Word8)
import GHC.Exts (Ptr(..))
import Unicode.Internal.Bits (lookupBit, lookupWord8AsInt)

{-# INLINE isPattern_Syntax #-}
isPattern_Syntax :: Char -> Bool
isPattern_Syntax :: Char -> Bool
isPattern_Syntax Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\x0021' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\xFE46' Bool -> Bool -> Bool
&& Int -> Bool
lookupIsPattern_SyntaxBitMap (Char -> Int
ord Char
c)

{-# INLINE lookupIsPattern_SyntaxBitMap #-}
lookupIsPattern_SyntaxBitMap :: Int -> Bool
lookupIsPattern_SyntaxBitMap :: Int -> Bool
lookupIsPattern_SyntaxBitMap Int
n =
    Addr# -> Int -> Int -> Bool
lookupBit Addr#
data# (
        Addr# -> Int -> Int
lookupWord8AsInt Addr#
offsets# (
            Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
8
        ) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ ((Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
3) Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
mask)
    ) (Int
n Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
7)
    where
    mask :: Int
mask = (Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftL` Int
5) Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1
    !(Ptr Addr#
data#) = Ptr Int8
isPattern_SyntaxDataBitMap
    !(Ptr Addr#
offsets#) = Ptr Word8
isPattern_SyntaxOffsetsBitMap

isPattern_SyntaxDataBitMap :: Ptr Int8
isPattern_SyntaxDataBitMap :: Ptr Int8
isPattern_SyntaxDataBitMap = Addr# -> Ptr Int8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\0\0\255\255\255\0\255\127\254\255\239\127\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\255\0\252\1\0\
    \\0\120\1\0\0\120\0\0\0\0\254\90\67\136\0\0\128\0\0\0\128\0\14\255\255\255\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
    \\0\0\0\0\192\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\96\0\0\255\255\255\0\255\127\254\255\239\127\0\0\0\0\0\0\0\0\
    \\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\0\0\0\0\0\0\
    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\255\255\255\255\255\255\255\255\255\255\255\255\255\63\0\0\0\240\255\255\255\255\255\255\255\255\255\255\255\255\255"#

isPattern_SyntaxOffsetsBitMap :: Ptr Word8
isPattern_SyntaxOffsetsBitMap :: Ptr Word8
isPattern_SyntaxOffsetsBitMap = Addr# -> Ptr Word8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\40\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\0\144\162\162\182\162\162\214\162\162\162\162\12\12\178\12\72\12\
    \\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\
    \\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\
    \\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\
    \\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\
    \\12\12\12\97\121"#

{-# INLINE isPattern_White_Space #-}
isPattern_White_Space :: Char -> Bool
isPattern_White_Space :: Char -> Bool
isPattern_White_Space Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\x0009' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\x2029' Bool -> Bool -> Bool
&& Int -> Bool
lookupIsPattern_White_SpaceBitMap (Char -> Int
ord Char
c)

{-# INLINE lookupIsPattern_White_SpaceBitMap #-}
lookupIsPattern_White_SpaceBitMap :: Int -> Bool
lookupIsPattern_White_SpaceBitMap :: Int -> Bool
lookupIsPattern_White_SpaceBitMap Int
n =
    Addr# -> Int -> Int -> Bool
lookupBit Addr#
data# (
        Addr# -> Int -> Int
lookupWord8AsInt Addr#
offsets# (
            Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
8
        ) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ ((Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
3) Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
mask)
    ) (Int
n Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
7)
    where
    mask :: Int
mask = (Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftL` Int
5) Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1
    !(Ptr Addr#
data#) = Ptr Int8
isPattern_White_SpaceDataBitMap
    !(Ptr Addr#
offsets#) = Ptr Word8
isPattern_White_SpaceOffsetsBitMap

isPattern_White_SpaceDataBitMap :: Ptr Int8
isPattern_White_SpaceDataBitMap :: Ptr Int8
isPattern_White_SpaceDataBitMap = Addr# -> Ptr Int8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\0\62\0\0\1\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
    \\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\192\0\0\0\3"#

isPattern_White_SpaceOffsetsBitMap :: Ptr Word8
isPattern_White_SpaceOffsetsBitMap :: Ptr Word8
isPattern_White_SpaceOffsetsBitMap = Addr# -> Ptr Word8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\0\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\80"#

{-# INLINE isWhite_Space #-}
isWhite_Space :: Char -> Bool
isWhite_Space :: Char -> Bool
isWhite_Space Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\x0009' Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\x3000' Bool -> Bool -> Bool
&& Int -> Bool
lookupIsWhite_SpaceBitMap (Char -> Int
ord Char
c)

{-# INLINE lookupIsWhite_SpaceBitMap #-}
lookupIsWhite_SpaceBitMap :: Int -> Bool
lookupIsWhite_SpaceBitMap :: Int -> Bool
lookupIsWhite_SpaceBitMap Int
n =
    Addr# -> Int -> Int -> Bool
lookupBit Addr#
data# (
        Addr# -> Int -> Int
lookupWord8AsInt Addr#
offsets# (
            Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
8
        ) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ ((Int
n Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftR` Int
3) Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
mask)
    ) (Int
n Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
7)
    where
    mask :: Int
mask = (Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shiftL` Int
5) Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1
    !(Ptr Addr#
data#) = Ptr Int8
isWhite_SpaceDataBitMap
    !(Ptr Addr#
offsets#) = Ptr Word8
isWhite_SpaceOffsetsBitMap

isWhite_SpaceDataBitMap :: Ptr Int8
isWhite_SpaceDataBitMap :: Ptr Int8
isWhite_SpaceDataBitMap = Addr# -> Ptr Int8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\255\7\0\0\0\131\0\0\0\0\0\128\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\
    \\0\0\0\0\0\0\0\0\0\0\0\62\0\0\1\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
    \\0\0\0\0\0\0\0\0\0\0\0\0\0"#

isWhite_SpaceOffsetsBitMap :: Ptr Word8
isWhite_SpaceOffsetsBitMap :: Ptr Word8
isWhite_SpaceOffsetsBitMap = Addr# -> Ptr Word8
forall a. Addr# -> Ptr a
Ptr
    Addr#
"\60\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\28\12\12\12\12\12\12\12\12\12\0\12\12\12\12\12\12\12\12\12\12\12\12\12\12\12\44"#