Hoogle Search
Within LTS Haskell 24.35 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
-
primitive-offset Data.Primitive.ByteArray.Offset A mutable byte array and an index into the array. The element type is understood to be byte (an 8-bit word).
MutableByteArrayOffset :: {-# UNPACK #-} !MutableByteArray s -> Int -> MutableByteArrayOffset sprimitive-offset Data.Primitive.ByteArray.Offset No documentation available.
offset :: ByteArrayOffset -> {-# UNPACK #-} !Intprimitive-offset Data.Primitive.ByteArray.Offset No documentation available.
offset :: MutableByteArrayOffset s -> {-# UNPACK #-} !Intprimitive-offset Data.Primitive.ByteArray.Offset No documentation available.
module Data.Primitive.PrimArray.
Offset Data types for describing an array paired with an index into it. This is intended to be used in wrappers for unsafe FFI calls. For example, the POSIX function recvfrom takes a socklen_t* argument. (Let us assume that socklen_t is equivalant to int for this example.) How is this argument best described by a Haskell type? When working with pinned memory, the best option Ptr CInt. It works equally well regardless of whether we originally had an array of CInt or a pointer to a single CInt. This works because of functions like advancePtr and plusPtr that effectively index into an array. Unpinned memory, however, is trickier. We want to have the full flexibility (handling both a single-element or multi-element buffer) that Ptr CInt affords. We cannot offset into a MutablePrimArray to get a new one like we could with Ptr. (Such a function is not possible because unpinned memory can be relocated.) So, the offseting must be done in the C function wrapped by the unsafe FFI. This means that the offset must be passed together with the MutablePrimArray. This is the precisely the product that MutablePrimArrayOffset represents. In a type signature, it provides additional clarity about the meaning of the offset. This library is used in the extensively in the posix-api library to clarify intent in a number of type signatures.
data
MutablePrimArrayOffset s aprimitive-offset Data.Primitive.PrimArray.Offset A mutable primitive array and an index into the array.
MutablePrimArrayOffset :: {-# UNPACK #-} !MutablePrimArray s a -> Int -> MutablePrimArrayOffset s aprimitive-offset Data.Primitive.PrimArray.Offset No documentation available.
-
primitive-offset Data.Primitive.PrimArray.Offset A primitive array and an index into the array.
PrimArrayOffset :: {-# UNPACK #-} !PrimArray a -> Int -> PrimArrayOffset aprimitive-offset Data.Primitive.PrimArray.Offset No documentation available.
indexOffset :: Prim a => PrimArrayOffset a -> aprimitive-offset Data.Primitive.PrimArray.Offset Recover the element in the primitive array.