module Data.Transient.Primitive.Unsafe
( unsafeCheckMutableArray
, unsafeCheckSmallMutableArray
, unsafeCheckMutableArray#
, unsafeCheckSmallMutableArray#
) where
import Control.Monad.Primitive
import Data.Primitive.Array
import Data.Transient.Primitive.SmallArray
import GHC.Exts
#ifndef HLINT
foreign import prim "checkMutableArrayzh" unsafeCheckMutableArray# :: MutableArray# s a -> State# s -> (# State# s, Int# #)
foreign import prim "checkSmallMutableArrayzh" unsafeCheckSmallMutableArray# :: SmallMutableArray# s a -> State# s -> (# State# s, Int# #)
#endif
unsafeCheckMutableArray :: PrimMonad m => MutableArray (PrimState m) a -> m Bool
unsafeCheckMutableArray (MutableArray m) = primitive $ \s -> case unsafeCheckMutableArray# m s of
(# s', i #) -> (# s', isTrue# i #)
unsafeCheckSmallMutableArray :: PrimMonad m => SmallMutableArray (PrimState m) a -> m Bool
unsafeCheckSmallMutableArray (SmallMutableArray m) = primitive $ \s -> case unsafeCheckSmallMutableArray# m s of
(# s', i #) -> (# s', isTrue# i #)