-- 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 ()