packages feed

posix-api-0.3.4.0: src-assertions/Assertion.hs

{-# language MagicHash #-}
{-# language UnboxedTuples #-}

module Assertion
  ( assertByteArrayPinned
  , assertMutablePrimArrayPinned
  ) where

import GHC.Exts (isTrue#)

import qualified Data.Primitive as PM
import qualified GHC.Exts as Exts

assertMutablePrimArrayPinned :: PM.MutablePrimArray s a -> PM.MutablePrimArray s a
assertMutablePrimArrayPinned x = if isMutablePrimArrayPinned x
  then x
  else error "assertMutablePrimArrayPinned"

isMutablePrimArrayPinned :: PM.MutablePrimArray s a -> Bool
isMutablePrimArrayPinned (PM.MutablePrimArray marr#) = isTrue# (Exts.isMutableByteArrayPinned# marr#)

assertByteArrayPinned :: PM.ByteArray -> PM.ByteArray
assertByteArrayPinned x = if PM.isByteArrayPinned x
  then x
  else error "assertByteArrayPinned"