module Basement.Runtime
where
import Basement.Compat.Base
import Basement.Types.OffsetSize
import System.Environment
import System.IO.Unsafe (unsafePerformIO)
import Text.Read (readMaybe)
unsafeUArrayUnpinnedMaxSize :: CountOf Word8
unsafeUArrayUnpinnedMaxSize :: CountOf Word8
unsafeUArrayUnpinnedMaxSize = IO (CountOf Word8) -> CountOf Word8
forall a. IO a -> a
unsafePerformIO (IO (CountOf Word8) -> CountOf Word8)
-> IO (CountOf Word8) -> CountOf Word8
forall a b. (a -> b) -> a -> b
$ do
maxSize <- (Maybe String -> (String -> Maybe Int) -> Maybe Int
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> Maybe Int
forall a. Read a => String -> Maybe a
readMaybe) (Maybe String -> Maybe Int) -> IO (Maybe String) -> IO (Maybe Int)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> IO (Maybe String)
lookupEnv String
"HS_FOUNDATION_UARRAY_UNPINNED_MAX"
pure $ maybe (CountOf 1024) CountOf maxSize
{-# NOINLINE unsafeUArrayUnpinnedMaxSize #-}