-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Read-only mutable primitives
--
-- Read-only mutable primitives.
--
-- This can be used for more accurate FFI bindings or simply to indicate
-- more cleanly in your code what you are and aren't allowed to modify.
@package const
@version 0
module Data.Const.Unsafe
class (Constable q q, forall a. Coercible (q a) (p a)) => Constable q p | p -> q
newtype ConstPtr a
ConstPtr :: Ptr a -> ConstPtr a
[unsafeConstPtrPtr] :: ConstPtr a -> Ptr a
newtype ConstForeignPtr a
ConstForeignPtr :: ForeignPtr a -> ConstForeignPtr a
[unsafeConstForeignPtrForeignPtr] :: ConstForeignPtr a -> ForeignPtr a
newtype ConstArray s a
ConstArray :: MutableArray s a -> ConstArray s a
[unsafeConstArrayMutableArray] :: ConstArray s a -> MutableArray s a
newtype ConstByteArray s
ConstByteArray :: MutableByteArray s -> ConstByteArray s
[unsafeConstByteArrayMutableByteArray] :: ConstByteArray s -> MutableByteArray s
newtype ConstPrimArray s a
ConstPrimArray :: MutablePrimArray s a -> ConstPrimArray s a
[unsafeConstPrimArrayMutablePrimArray] :: ConstPrimArray s a -> MutablePrimArray s a
newtype ConstMutVar s a
ConstMutVar :: MutVar s a -> ConstMutVar s a
[unsafeConstMutVarMutVar] :: ConstMutVar s a -> MutVar s a
newtype ConstIORef a
ConstIORef :: IORef a -> ConstIORef a
[unsafeConstIORefIORef] :: ConstIORef a -> IORef a
newtype ConstSTRef s a
ConstSTRef :: STRef s a -> ConstSTRef s a
[unsafeConstSTRefSTRef] :: ConstSTRef s a -> STRef s a
newtype SmallConstArray s a
SmallConstArray :: SmallMutableArray s a -> SmallConstArray s a
[unsafeSmallConstArraySmallMutableArray] :: SmallConstArray s a -> SmallMutableArray s a
type ConstCString = ConstPtr CChar
type ConstCStringLen = (ConstCString, Int)
type ConstCWString = ConstPtr CWchar
type ConstCWStringLen = (ConstCWString, Int)
constant :: forall p a q. Constable q p => p a -> q a
unsafeConstantCoercion :: forall p a q. Constable q p => Coercion (q a) (p a)
type APtr = Constable ConstPtr
unsafePtr :: forall p a. APtr p => p a -> Ptr a
unsafePtrCoercion :: forall p a. APtr p => Coercion (Ptr a) (p a)
type AForeignPtr = Constable ConstForeignPtr
unsafeForeignPtr :: forall p a. AForeignPtr p => p a -> ForeignPtr a
unsafeForeignPtrCoercion :: forall p a. AForeignPtr p => Coercion (ForeignPtr a) (p a)
type AnArray s = Constable (ConstArray s)
unsafeArray :: forall s p a. AnArray s p => p a -> MutableArray s a
unsafeArrayCoercion :: forall s p a. AnArray s p => Coercion (MutableArray s a) (p a)
type AByteArray = Constable ConstByteArray
unsafeByteArray :: forall s p. AByteArray p => p s -> MutableByteArray s
unsafeByteArrayCoercion :: forall p s. AByteArray p => Coercion (MutableByteArray s) (p s)
type APrimArray s = Constable (ConstPrimArray s)
unsafePrimArray :: forall s p a. APrimArray s p => p a -> MutablePrimArray s a
unsafePrimArrayCoercion :: forall s p a. APrimArray s p => Coercion (MutablePrimArray s a) (p a)
type ASmallArray s = Constable (SmallConstArray s)
unsafeSmallArray :: forall s p a. ASmallArray s p => p a -> SmallMutableArray s a
unsafeSmallArrayCoercion :: forall s p a. ASmallArray s p => Coercion (SmallMutableArray s a) (p a)
type AMutVar s = Constable (ConstMutVar s)
unsafeMutVar :: forall s p a. AMutVar s p => p a -> MutVar s a
unsafeMutVarCoercion :: forall s p a. AMutVar s p => Coercion (MutVar s a) (p a)
type AnIORef = Constable ConstIORef
unsafeIORef :: forall p a. AnIORef p => p a -> IORef a
unsafeIORefCoercion :: forall p a. AnIORef p => Coercion (IORef a) (p a)
type AnSTRef s = Constable (ConstSTRef s)
unsafeSTRef :: forall s p a. AnSTRef s p => p a -> STRef s a
unsafeSTRefCoercion :: forall s p a. AnSTRef s p => Coercion (STRef s a) (p a)
type ACString s = (s ~ Unapply s CChar, APtr (Unapply s))
unsafeCStringCoercion :: forall s. ACString s => Coercion CString s
type ACWString s = (s ~ Unapply s CWchar, APtr (Unapply s))
unsafeCWStringCoercion :: forall s. ACWString s => Coercion CWString s
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstSTRef s a)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstMutVar s a)
instance GHC.Classes.Eq (Data.Const.Unsafe.SmallConstArray s a)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstArray s a)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstIORef a)
instance Foreign.Ptr.Diff.DiffTorsor Data.Const.Unsafe.ConstForeignPtr
instance Data.Data.Data a => Data.Data.Data (Data.Const.Unsafe.ConstForeignPtr a)
instance GHC.Show.Show (Data.Const.Unsafe.ConstForeignPtr a)
instance GHC.Classes.Ord (Data.Const.Unsafe.ConstForeignPtr a)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstForeignPtr a)
instance Foreign.Ptr.Diff.DiffTorsor Data.Const.Unsafe.ConstPtr
instance Foreign.Storable.Storable (Data.Const.Unsafe.ConstPtr a)
instance Data.Data.Data a => Data.Data.Data (Data.Const.Unsafe.ConstPtr a)
instance GHC.Show.Show (Data.Const.Unsafe.ConstPtr a)
instance GHC.Classes.Ord (Data.Const.Unsafe.ConstPtr a)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstPtr a)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstSTRef s) (GHC.STRef.STRef s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstSTRef s) (Data.Const.Unsafe.ConstSTRef s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstMutVar s) (Data.Primitive.MutVar.MutVar s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstMutVar s) (Data.Const.Unsafe.ConstMutVar s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.SmallConstArray s) (Data.Primitive.SmallArray.SmallMutableArray s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.SmallConstArray s) (Data.Const.Unsafe.SmallConstArray s)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstPrimArray s a)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstPrimArray s) (Data.Primitive.PrimArray.MutablePrimArray s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstPrimArray s) (Data.Const.Unsafe.ConstPrimArray s)
instance GHC.Classes.Eq (Data.Const.Unsafe.ConstByteArray s)
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstByteArray Data.Primitive.ByteArray.MutableByteArray
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstByteArray Data.Const.Unsafe.ConstByteArray
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstArray s) (Data.Primitive.Array.MutableArray s)
instance Data.Const.Unsafe.Constable (Data.Const.Unsafe.ConstArray s) (Data.Const.Unsafe.ConstArray s)
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstIORef GHC.IORef.IORef
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstIORef Data.Const.Unsafe.ConstIORef
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstForeignPtr GHC.ForeignPtr.ForeignPtr
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstForeignPtr Data.Const.Unsafe.ConstForeignPtr
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstPtr GHC.Ptr.Ptr
instance Data.Const.Unsafe.Constable Data.Const.Unsafe.ConstPtr Data.Const.Unsafe.ConstPtr
module Data.Const.STRef
data ConstSTRef s a
constSTRef :: AnSTRef s p => p a -> ConstSTRef s a
type AnSTRef s = Constable (ConstSTRef s)
readAnSTRef :: forall s p a. AnSTRef s p => p a -> ST s a
module Data.Const.Primitive.SmallArray
data SmallConstArray s a
smallConstArray :: ASmallArray s p => p a -> SmallConstArray s a
type ASmallArray s = Constable (SmallConstArray s)
readASmallArray :: forall m p a. (PrimMonad m, ASmallArray (PrimState m) p) => p a -> Int -> m a
sameSmallArray :: forall s p q a. (ASmallArray s p, ASmallArray s q) => p a -> q a -> Bool
copyASmallArray :: forall m p a. (PrimMonad m, ASmallArray (PrimState m) p) => SmallMutableArray (PrimState m) a -> Int -> p a -> Int -> Int -> m ()
cloneASmallArray :: forall m p a. (PrimMonad m, ASmallArray (PrimState m) p) => p a -> Int -> Int -> m (SmallMutableArray (PrimState m) a)
sizeofASmallArray :: forall s p a. ASmallArray s p => p a -> Int
module Data.Const.Primitive.PrimArray
data ConstPrimArray s a
constPrimArray :: APrimArray s p => p a -> ConstPrimArray s a
type APrimArray s = Constable (ConstPrimArray s)
readAPrimArray :: forall a m p. (Prim a, PrimMonad m, APrimArray (PrimState m) p) => p a -> Int -> m a
samePrimArray :: forall s a p q. (APrimArray s p, APrimArray s q) => p a -> q a -> Bool
copyAPrimArray :: forall m a p. (Prim a, PrimMonad m, APrimArray (PrimState m) p) => MutablePrimArray (PrimState m) a -> Int -> p a -> Int -> Int -> m ()
copyAPrimArrayToPtr :: forall m a p. (Prim a, PrimMonad m, APrimArray (PrimState m) p) => Ptr a -> p a -> Int -> Int -> m ()
sizeofAPrimArray :: forall s a p. (Prim a, APrimArray s p) => p a -> Int
getSizeofAPrimArray :: forall m a p. (Prim a, PrimMonad m, APrimArray (PrimState m) p) => p a -> m Int
module Data.Const.Primitive.MutVar
data ConstMutVar s a
constMutVar :: AMutVar s p => p a -> ConstMutVar s a
type AMutVar s = Constable (ConstMutVar s)
readAMutVar :: forall m p a. (PrimMonad m, AMutVar (PrimState m) p) => p a -> m a
module Data.Const.Primitive.ByteArray
data ConstByteArray s
constByteArray :: AByteArray p => p s -> ConstByteArray s
type AByteArray = Constable ConstByteArray
readAByteArray :: forall a m p. (Prim a, PrimMonad m, AByteArray p) => p (PrimState m) -> Int -> m a
sameByteArray :: forall s p q. (AByteArray p, AByteArray q) => p s -> q s -> Bool
copyAByteArray :: forall m p. (AByteArray p, PrimMonad m) => MutableByteArray (PrimState m) -> Int -> p (PrimState m) -> Int -> Int -> m ()
copyAByteArrayToAddr :: forall m p. (AByteArray p, PrimMonad m) => Addr -> p (PrimState m) -> Int -> Int -> m ()
moveAByteArray :: forall m p. (AByteArray p, PrimMonad m) => MutableByteArray (PrimState m) -> Int -> p (PrimState m) -> Int -> Int -> m ()
sizeofAByteArray :: forall s p. AByteArray p => p s -> Int
getSizeofAByteArray :: forall m p. (PrimMonad m, AByteArray p) => p (PrimState m) -> m Int
isAByteArrayPinned :: forall s p. AByteArray p => p s -> Bool
-- | Only safe on a pinned ByteArray or pinned ConstByteArray
constByteArrayContents :: forall s p. AByteArray p => p s -> ConstPtr Word8
module Data.Const.Primitive.Array
data ConstArray s a
constArray :: AnArray s p => p a -> ConstArray s a
type AnArray s = Constable (ConstArray s)
readAnArray :: forall m p a. (PrimMonad m, AnArray (PrimState m) p) => p a -> Int -> m a
sameArray :: forall s p q a. (AnArray s p, AnArray s q) => p a -> q a -> Bool
copyAnArray :: forall m p a. (PrimMonad m, AnArray (PrimState m) p) => MutableArray (PrimState m) a -> Int -> p a -> Int -> Int -> m ()
cloneAnArray :: forall m p a. (PrimMonad m, AnArray (PrimState m) p) => p a -> Int -> Int -> m (MutableArray (PrimState m) a)
sizeofAnArray :: forall s p a. AnArray s p => p a -> Int
module Data.Const.IORef
data ConstIORef a
constIORef :: AnIORef p => p a -> ConstIORef a
type AnIORef = Constable ConstIORef
readAnIORef :: forall p a. AnIORef p => p a -> IO a
module Data.Const.ByteString
packACString :: forall s. ACString s => s -> IO ByteString
packACStringLen :: forall s. ACString s => (s, Int) -> IO ByteString
useAsConstCString :: forall a. ByteString -> (ConstCString -> IO a) -> IO a
useAsConstCStringLen :: forall a. ByteString -> (ConstCStringLen -> IO a) -> IO a
module Data.Const
class (Constable q q, forall a. Coercible (q a) (p a)) => Constable q p | p -> q
constant :: forall p a q. Constable q p => p a -> q a
module Foreign.Const.C.String
type ConstCString = ConstPtr CChar
type ConstCStringLen = (ConstCString, Int)
type ConstCWString = ConstPtr CWchar
type ConstCWStringLen = (ConstCWString, Int)
constCString :: ACString s => s -> ConstCString
constCWString :: ACWString s => s -> ConstCWString
type ACString s = (s ~ Unapply s CChar, APtr (Unapply s))
type ACWString s = (s ~ Unapply s CWchar, APtr (Unapply s))
peekACAString :: forall s. ACString s => s -> IO String
peekACAStringLen :: forall s. ACString s => (s, Int) -> IO String
peekACString :: forall s. ACString s => s -> IO String
peekACStringLen :: forall s. ACString s => (s, Int) -> IO String
peekACWString :: forall s. ACWString s => s -> IO String
peekACWStringLen :: forall s. ACWString s => (s, Int) -> IO String
withConstCAString :: forall a. String -> (ConstCString -> IO a) -> IO a
withConstCAStringLen :: forall a. String -> (ConstCStringLen -> IO a) -> IO a
withConstCString :: forall a. String -> (ConstCString -> IO a) -> IO a
withConstCStringLen :: forall a. String -> (ConstCStringLen -> IO a) -> IO a
withConstCWString :: forall a. String -> (ConstCWString -> IO a) -> IO a
withConstCWStringLen :: forall a. String -> (ConstCWStringLen -> IO a) -> IO a
module Foreign.Const.Concurrent
-- | Analogous to newForeignPtr
newConstForeignPtr :: forall p a. APtr p => p a -> IO () -> IO (ConstForeignPtr a)
-- | Analogous to addForeignPtrFinalizer
addAForeignPtrFinalizer :: forall fp a. AForeignPtr fp => fp a -> IO () -> IO ()
module Foreign.Const.Marshal.Array
peekAnArray :: forall a p. (APtr p, Storable a) => Int -> p a -> IO [a]
peekAnArray0 :: forall a p. (APtr p, Storable a, Eq a) => a -> p a -> IO [a]
withConstArray :: forall a b. Storable a => [a] -> (ConstPtr a -> IO b) -> IO b
withConstArray0 :: forall a b. Storable a => a -> [a] -> (ConstPtr a -> IO b) -> IO b
withConstArrayLen :: forall a b. Storable a => [a] -> (Int -> ConstPtr a -> IO b) -> IO b
withConstArrayLen0 :: forall a b. Storable a => a -> [a] -> (Int -> ConstPtr a -> IO b) -> IO b
copyAnArray :: forall a p. (APtr p, Storable a) => Ptr a -> p a -> Int -> IO ()
moveAnArray :: forall a p. (APtr p, Storable a) => Ptr a -> p a -> Int -> IO ()
lengthAnArray0 :: forall a p. (APtr p, Storable a, Eq a) => a -> p a -> IO Int
advanceConstPtr :: forall a p. (APtr p, Storable a) => p a -> Int -> ConstPtr a
advanceAPtr :: forall a p. (APtr p, Storable a) => p a -> Int -> p a
module Foreign.Const.Marshal.Utils
withConst :: forall a b. Storable a => a -> (ConstPtr a -> IO b) -> IO b
newConst :: forall a. Storable a => a -> IO (ConstPtr a)
copyBytesAt :: forall a p. APtr p => Ptr a -> p a -> Int -> IO ()
moveBytesAt :: forall a p. APtr p => Ptr a -> p a -> Int -> IO ()
maybeNewA :: forall a b p. APtr p => (a -> IO (p b)) -> Maybe a -> IO (p b)
maybePeekA :: forall a b p. APtr p => (p a -> IO b) -> p a -> IO (Maybe b)
maybeWithA :: forall a b c p. APtr p => (a -> (p b -> IO c) -> IO c) -> Maybe a -> (p b -> IO c) -> IO c
module Foreign.Const.Ptr
data ConstPtr a
constPtr :: APtr p => p a -> ConstPtr a
type APtr = Constable ConstPtr
peekAt :: forall p a. (Storable a, APtr p) => p a -> IO a
peekAtElemOff :: forall p a. (Storable a, APtr p) => p a -> Int -> IO a
peekAtByteOff :: forall p a b. (Storable a, APtr p) => p b -> Int -> IO a
minusAPtr :: forall p q a b. (APtr p, APtr q) => p a -> q b -> Int
castAPtr :: forall p a b. APtr p => p a -> p b
plusAPtr :: forall p a b. APtr p => p a -> Int -> p b
alignAPtr :: forall p a. APtr p => p a -> Int -> p a
nullConstPtr :: ConstPtr a
castConstPtr :: forall p a b. APtr p => p a -> ConstPtr b
plusConstPtr :: forall p a b. APtr p => p a -> Int -> ConstPtr b
alignConstPtr :: forall p a. APtr p => p a -> Int -> ConstPtr a
module Foreign.Const.ForeignPtr
data ConstForeignPtr a
constForeignPtr :: AForeignPtr fp => fp a -> ConstForeignPtr a
type AForeignPtr = Constable ConstForeignPtr
newConstForeignPtr :: forall p a. APtr p => FinalizerPtr a -> p a -> IO (ConstForeignPtr a)
newConstForeignPtr_ :: forall p a. APtr p => p a -> IO (ConstForeignPtr a)
castConstForeignPtr :: forall fp a b. AForeignPtr fp => fp a -> ConstForeignPtr b
plusConstForeignPtr :: forall fp a b. AForeignPtr fp => fp a -> Int -> ConstForeignPtr b
newConstForeignPtrEnv :: forall p env a. APtr p => FinalizerEnvPtr env a -> Ptr env -> p a -> IO (ConstForeignPtr a)
withConstForeignPtr :: forall fp a r. AForeignPtr fp => fp a -> (ConstPtr a -> IO r) -> IO r
type family Unforeign (fp :: Type -> Type) :: Type -> Type
plusAForeignPtr :: forall fp a b. AForeignPtr fp => fp a -> Int -> fp b
withAForeignPtr :: forall fp a r. (AForeignPtr fp, APtr (Unforeign fp)) => fp a -> (Unforeign fp a -> IO r) -> IO r
addAForeignPtrFinalizer :: forall fp a. AForeignPtr fp => FinalizerPtr a -> fp a -> IO ()
addAForeignPtrFinalizerEnv :: forall fp env a. AForeignPtr fp => FinalizerEnvPtr env a -> Ptr env -> fp a -> IO ()
finalizeAForeignPtr :: forall fp a. AForeignPtr fp => fp a -> IO ()
touchAForeignPtr :: forall fp a. AForeignPtr fp => fp a -> IO ()