    -- 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"#