unliftio-0.2.23.0: The MonadUnliftIO typeclass for unlifting monads to IO (batteries included)
Safe Haskell None
Language Haskell2010

UnliftIO.Foreign

Description

Unlifted Foreign .

Since: 0.2.5.0

Synopsis

Re-exported modules

module Data.Int

Unlifted Foreign.C.String

type CString = Ptr CChar Source #

A C string is a reference to an array of C characters terminated by NUL.

type CStringLen = ( Ptr CChar , Int ) Source #

A string with explicit length information in bytes instead of a terminating NUL (allowing NUL characters in the middle of the string).

withCString :: MonadUnliftIO m => String -> ( CString -> m a) -> m a Source #

Unlifted withCString .

Since: 0.2.5.0

castCharToCChar :: Char -> CChar Source #

Convert a Haskell character to a C character. This function is only safe on the first 256 characters.

castCCharToChar :: CChar -> Char Source #

Convert a C byte, representing a Latin-1 character, to the corresponding Haskell character.

castCharToCUChar :: Char -> CUChar Source #

Convert a Haskell character to a C unsigned char . This function is only safe on the first 256 characters.

castCUCharToChar :: CUChar -> Char Source #

Convert a C unsigned char , representing a Latin-1 character, to the corresponding Haskell character.

castCharToCSChar :: Char -> CSChar Source #

Convert a Haskell character to a C signed char . This function is only safe on the first 256 characters.

castCSCharToChar :: CSChar -> Char Source #

Convert a C signed char , representing a Latin-1 character, to the corresponding Haskell character.

withCAString :: MonadUnliftIO m => String -> ( CString -> m a) -> m a Source #

Unlifted withCAString .

Since: 0.2.5.0

type CWString = Ptr CWchar Source #

A C wide string is a reference to an array of C wide characters terminated by NUL.

type CWStringLen = ( Ptr CWchar , Int ) Source #

A wide character string with explicit length information in CWchar s instead of a terminating NUL (allowing NUL characters in the middle of the string).

withCWString :: MonadUnliftIO m => String -> ( CWString -> m a) -> m a Source #

Unlifted withCWString .

Since: 0.2.5.0

Unlifted Foreign.C.Error

newtype Errno Source #

Haskell representation for errno values. The implementation is deliberately exposed, to allow users to add their own definitions of Errno values.

Constructors

Errno CInt

Instances

Instances details
Eq Errno

Since: base-2.1

Instance details

Defined in Foreign.C.Error

eNOTSUP :: Errno Source #

Since: base-4.7.0.0

isValidErrno :: Errno -> Bool Source #

Yield True if the given Errno value is valid on the system. This implies that the Eq instance of Errno is also system dependent as it is only defined for valid values of Errno .

resetErrno :: MonadIO m => m () Source #

Lifted resetErrno .

Since: 0.2.5.0

errnoToIOError Source #

Arguments

:: String

the location where the error occurred

-> Errno

the error number

-> Maybe Handle

optional handle associated with the error

-> Maybe String

optional filename associated with the error

-> IOError

Construct an IOError based on the given Errno value. The optional information can be used to improve the accuracy of error messages.

throwErrnoIf :: MonadUnliftIO m => (a -> Bool ) -> String -> m a -> m a Source #

Unlifted throwErrnoIf .

Since: 0.2.5.0

throwErrnoIf_ :: MonadUnliftIO m => (a -> Bool ) -> String -> m a -> m () Source #

Unlifted throwErrnoIf_ .

Since: 0.2.5.0

throwErrnoIfRetry :: MonadUnliftIO m => (a -> Bool ) -> String -> m a -> m a Source #

Unlifted throwErrnoIfRetry .

Since: 0.2.5.0

throwErrnoIfRetry_ :: MonadUnliftIO m => (a -> Bool ) -> String -> m a -> m () Source #

Unlifted throwErrnoIfRetry_ .

Since: 0.2.5.0

Unlifted Foreign.Ptr

data Ptr a Source #

A value of type Ptr a represents a pointer to an object, or an array of objects, which may be marshalled to or from Haskell values of type a .

The type a will often be an instance of class Storable which provides the marshalling operations. However this is not essential, and you can provide your own operations to access the pointer. For example you might write small foreign functions to get or set the fields of a C struct .

Instances

Instances details
NFData1 Ptr

Since: deepseq-1.4.3.0

Instance details

Defined in Control.DeepSeq

Methods

liftRnf :: (a -> ()) -> Ptr a -> () Source #

Generic1 ( URec ( Ptr ()) :: k -> Type )

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ( URec ( Ptr ())) :: k -> Type Source #

Methods

from1 :: forall (a :: k0). URec ( Ptr ()) a -> Rep1 ( URec ( Ptr ())) a Source #

to1 :: forall (a :: k0). Rep1 ( URec ( Ptr ())) a -> URec ( Ptr ()) a Source #

Eq ( Ptr a)

Since: base-2.1

Instance details

Defined in GHC.Ptr

Ord ( Ptr a)

Since: base-2.1

Instance details

Defined in GHC.Ptr

Show ( Ptr a)

Since: base-2.1

Instance details

Defined in GHC.Ptr

Foldable ( UAddr :: Type -> Type )

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Traversable ( UAddr :: Type -> Type )

Since: base-4.9.0.0

Instance details

Defined in Data.Traversable

Storable ( Ptr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

NFData ( Ptr a)

Since: deepseq-1.4.2.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: Ptr a -> () Source #

Hashable ( Ptr a)
Instance details

Defined in Data.Hashable.Class

Functor ( URec ( Ptr ()) :: Type -> Type )

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec ( Ptr ()) a -> URec ( Ptr ()) b Source #

(<$) :: a -> URec ( Ptr ()) b -> URec ( Ptr ()) a Source #

Eq ( URec ( Ptr ()) p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Ord ( URec ( Ptr ()) p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Generic ( URec ( Ptr ()) p)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Associated Types

type Rep ( URec ( Ptr ()) p) :: Type -> Type Source #

data URec ( Ptr ()) (p :: k)

Used for marking occurrences of Addr#

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

data URec ( Ptr ()) (p :: k) = UAddr { }
type Rep1 ( URec ( Ptr ()) :: k -> Type )
Instance details

Defined in GHC.Generics

type Rep ( URec ( Ptr ()) p)
Instance details

Defined in GHC.Generics

nullPtr :: Ptr a Source #

The constant nullPtr contains a distinguished value of Ptr that is not associated with a valid memory location.

castPtr :: Ptr a -> Ptr b Source #

The castPtr function casts a pointer from one type to another.

plusPtr :: Ptr a -> Int -> Ptr b Source #

Advances the given address by the given offset in bytes.

alignPtr :: Ptr a -> Int -> Ptr a Source #

Given an arbitrary address and an alignment constraint, alignPtr yields the next higher address that fulfills the alignment constraint. An alignment constraint x is fulfilled by any address divisible by x . This operation is idempotent.

minusPtr :: Ptr a -> Ptr b -> Int Source #

Computes the offset required to get from the second to the first argument. We have

p2 == p1 `plusPtr` (p2 `minusPtr` p1)

data FunPtr a Source #

A value of type FunPtr a is a pointer to a function callable from foreign code. The type a will normally be a foreign type , a function type with zero or more arguments where

A value of type FunPtr a may be a pointer to a foreign function, either returned by another foreign function or imported with a a static address import like

foreign import ccall "stdlib.h &free"
  p_free :: FunPtr (Ptr a -> IO ())

or a pointer to a Haskell function created using a wrapper stub declared to produce a FunPtr of the correct type. For example:

type Compare = Int -> Int -> Bool
foreign import ccall "wrapper"
  mkCompare :: Compare -> IO (FunPtr Compare)

Calls to wrapper stubs like mkCompare allocate storage, which should be released with freeHaskellFunPtr when no longer required.

To convert FunPtr values to corresponding Haskell functions, one can define a dynamic stub for the specific foreign type, e.g.

type IntFunction = CInt -> IO ()
foreign import ccall "dynamic"
  mkFun :: FunPtr IntFunction -> IntFunction

Instances

Instances details
NFData1 FunPtr

Since: deepseq-1.4.3.0

Instance details

Defined in Control.DeepSeq

Methods

liftRnf :: (a -> ()) -> FunPtr a -> () Source #

Eq ( FunPtr a)
Instance details

Defined in GHC.Ptr

Ord ( FunPtr a)
Instance details

Defined in GHC.Ptr

Show ( FunPtr a)

Since: base-2.1

Instance details

Defined in GHC.Ptr

Storable ( FunPtr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

NFData ( FunPtr a)

Since: deepseq-1.4.2.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: FunPtr a -> () Source #

Hashable ( FunPtr a)
Instance details

Defined in Data.Hashable.Class

nullFunPtr :: FunPtr a Source #

The constant nullFunPtr contains a distinguished value of FunPtr that is not associated with a valid memory location.

castFunPtr :: FunPtr a -> FunPtr b Source #

Casts a FunPtr to a FunPtr of a different type.

castFunPtrToPtr :: FunPtr a -> Ptr b Source #

Casts a FunPtr to a Ptr .

Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption.

castPtrToFunPtr :: Ptr a -> FunPtr b Source #

Casts a Ptr to a FunPtr .

Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption.

newtype IntPtr Source #

A signed integral type that can be losslessly converted to and from Ptr . This type is also compatible with the C99 type intptr_t , and can be marshalled to and from that type safely.

Constructors

IntPtr Int

Instances

Instances details
Bounded IntPtr
Instance details

Defined in Foreign.Ptr

Enum IntPtr
Instance details

Defined in Foreign.Ptr

Eq IntPtr
Instance details

Defined in Foreign.Ptr

Integral IntPtr
Instance details

Defined in Foreign.Ptr

Num IntPtr
Instance details

Defined in Foreign.Ptr

Ord IntPtr
Instance details

Defined in Foreign.Ptr

Read IntPtr
Instance details

Defined in Foreign.Ptr

Real IntPtr
Instance details

Defined in Foreign.Ptr

Show IntPtr
Instance details

Defined in Foreign.Ptr

Storable IntPtr
Instance details

Defined in Foreign.Ptr

Bits IntPtr
Instance details

Defined in Foreign.Ptr

FiniteBits IntPtr
Instance details

Defined in Foreign.Ptr

Hashable IntPtr
Instance details

Defined in Data.Hashable.Class

ptrToIntPtr :: Ptr a -> IntPtr Source #

casts a Ptr to an IntPtr

intPtrToPtr :: IntPtr -> Ptr a Source #

casts an IntPtr to a Ptr

newtype WordPtr Source #

An unsigned integral type that can be losslessly converted to and from Ptr . This type is also compatible with the C99 type uintptr_t , and can be marshalled to and from that type safely.

Constructors

WordPtr Word

Instances

Instances details
Bounded WordPtr
Instance details

Defined in Foreign.Ptr

Enum WordPtr
Instance details

Defined in Foreign.Ptr

Eq WordPtr
Instance details

Defined in Foreign.Ptr

Integral WordPtr
Instance details

Defined in Foreign.Ptr

Num WordPtr
Instance details

Defined in Foreign.Ptr

Ord WordPtr
Instance details

Defined in Foreign.Ptr

Read WordPtr
Instance details

Defined in Foreign.Ptr

Real WordPtr
Instance details

Defined in Foreign.Ptr

Show WordPtr
Instance details

Defined in Foreign.Ptr

Storable WordPtr
Instance details

Defined in Foreign.Ptr

Bits WordPtr
Instance details

Defined in Foreign.Ptr

FiniteBits WordPtr
Instance details

Defined in Foreign.Ptr

Hashable WordPtr
Instance details

Defined in Data.Hashable.Class

ptrToWordPtr :: Ptr a -> WordPtr Source #

casts a Ptr to a WordPtr

wordPtrToPtr :: WordPtr -> Ptr a Source #

casts a WordPtr to a Ptr

Unlifted Foreign.ForeignPtr

data ForeignPtr a Source #

The type ForeignPtr represents references to objects that are maintained in a foreign language, i.e., that are not part of the data structures usually managed by the Haskell storage manager. The essential difference between ForeignPtr s and vanilla memory references of type Ptr a is that the former may be associated with finalizers . A finalizer is a routine that is invoked when the Haskell storage manager detects that - within the Haskell heap and stack - there are no more references left that are pointing to the ForeignPtr . Typically, the finalizer will, then, invoke routines in the foreign language that free the resources bound by the foreign object.

The ForeignPtr is parameterised in the same way as Ptr . The type argument of ForeignPtr should normally be an instance of class Storable .

type FinalizerPtr a = FunPtr ( Ptr a -> IO ()) Source #

A finalizer is represented as a pointer to a foreign function that, at finalisation time, gets as an argument a plain pointer variant of the foreign pointer that the finalizer is associated with.

Note that the foreign function must use the ccall calling convention.

withForeignPtr :: MonadUnliftIO m => ForeignPtr a -> ( Ptr a -> m b) -> m b Source #

Unlifted withForeignPtr .

Since: 0.2.5.0

castForeignPtr :: ForeignPtr a -> ForeignPtr b Source #

This function casts a ForeignPtr parameterised by one type into another type.

plusForeignPtr :: ForeignPtr a -> Int -> ForeignPtr b Source #

Advances the given address by the given offset in bytes.

The new ForeignPtr shares the finalizer of the original, equivalent from a finalization standpoint to just creating another reference to the original. That is, the finalizer will not be called before the new ForeignPtr is unreachable, nor will it be called an additional time due to this call, and the finalizer will be called with the same address that it would have had this call not happened, *not* the new address.

Since: base-4.10.0.0

unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a Source #

This function extracts the pointer component of a foreign pointer. This is a potentially dangerous operations, as if the argument to unsafeForeignPtrToPtr is the last usage occurrence of the given foreign pointer, then its finalizer(s) will be run, which potentially invalidates the plain pointer just obtained. Hence, touchForeignPtr must be used wherever it has to be guaranteed that the pointer lives on - i.e., has another usage occurrence.

To avoid subtle coding errors, hand written marshalling code should preferably use withForeignPtr rather than combinations of unsafeForeignPtrToPtr and touchForeignPtr . However, the latter routines are occasionally preferred in tool generated marshalling code.

Unlifted Foreign.StablePtr

data StablePtr a Source #

A stable pointer is a reference to a Haskell expression that is guaranteed not to be affected by garbage collection, i.e., it will neither be deallocated nor will the value of the stable pointer itself change during garbage collection (ordinary references may be relocated during garbage collection). Consequently, stable pointers can be passed to foreign code, which can treat it as an opaque reference to a Haskell value.

A value of type StablePtr a is a stable pointer to a Haskell expression of type a .

castStablePtrToPtr :: StablePtr a -> Ptr () Source #

Coerce a stable pointer to an address. No guarantees are made about the resulting value, except that the original stable pointer can be recovered by castPtrToStablePtr . In particular, the address may not refer to an accessible memory location and any attempt to pass it to the member functions of the class Storable leads to undefined behaviour.

castPtrToStablePtr :: Ptr () -> StablePtr a Source #

The inverse of castStablePtrToPtr , i.e., we have the identity

sp == castPtrToStablePtr (castStablePtrToPtr sp)

for any stable pointer sp on which freeStablePtr has not been executed yet. Moreover, castPtrToStablePtr may only be applied to pointers that have been produced by castStablePtrToPtr .

Unlifted Foreign.Storable

class Storable a where Source #

The member functions of this class facilitate writing values of primitive types to raw memory (which may have been allocated with the above mentioned routines) and reading values from blocks of raw memory. The class, furthermore, includes support for computing the storage requirements and alignment restrictions of storable types.

Memory addresses are represented as values of type Ptr a , for some a which is an instance of class Storable . The type argument to Ptr helps provide some valuable type safety in FFI code (you can't mix pointers of different types without an explicit cast), while helping the Haskell type system figure out which marshalling method is needed for a given pointer.

All marshalling between Haskell and a foreign language ultimately boils down to translating Haskell data structures into the binary representation of a corresponding data structure of the foreign language and vice versa. To code this marshalling in Haskell, it is necessary to manipulate primitive data types stored in unstructured memory blocks. The class Storable facilitates this manipulation on all types for which it is instantiated, which are the standard basic types of Haskell, the fixed size Int types ( Int8 , Int16 , Int32 , Int64 ), the fixed size Word types ( Word8 , Word16 , Word32 , Word64 ), StablePtr , all types from Foreign.C.Types , as well as Ptr .

Methods

sizeOf :: a -> Int Source #

Computes the storage requirements (in bytes) of the argument. The value of the argument is not used.

alignment :: a -> Int Source #

Computes the alignment constraint of the argument. An alignment constraint x is fulfilled by any address divisible by x . The value of the argument is not used.

peekElemOff :: Ptr a -> Int -> IO a Source #

Read a value from a memory area regarded as an array of values of the same kind. The first argument specifies the start address of the array and the second the index into the array (the first element of the array has index 0 ). The following equality holds,

peekElemOff addr idx = IOExts.fixIO $ \result ->
  peek (addr `plusPtr` (idx * sizeOf result))

Note that this is only a specification, not necessarily the concrete implementation of the function.

pokeElemOff :: Ptr a -> Int -> a -> IO () Source #

Write a value to a memory area regarded as an array of values of the same kind. The following equality holds:

pokeElemOff addr idx x = 
  poke (addr `plusPtr` (idx * sizeOf x)) x

peekByteOff :: Ptr b -> Int -> IO a Source #

Read a value from a memory location given by a base address and offset. The following equality holds:

peekByteOff addr off = peek (addr `plusPtr` off)

pokeByteOff :: Ptr b -> Int -> a -> IO () Source #

Write a value to a memory location given by a base address and offset. The following equality holds:

pokeByteOff addr off x = poke (addr `plusPtr` off) x

peek :: Ptr a -> IO a Source #

Read a value from the given memory location.

Note that the peek and poke functions might require properly aligned addresses to function correctly. This is architecture dependent; thus, portable code should ensure that when peeking or poking values of some type a , the alignment constraint for a , as given by the function alignment is fulfilled.

poke :: Ptr a -> a -> IO () Source #

Write the given value to the given memory location. Alignment restrictions might apply; see peek .

Instances

Instances details
Storable Bool

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Char

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Double

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Float

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Int

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Int8

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Int16

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Int32

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Int64

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word8

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word16

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word32

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word64

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable ()

Since: base-4.9.0.0

Instance details

Defined in Foreign.Storable

Storable CDev
Instance details

Defined in System.Posix.Types

Storable CIno
Instance details

Defined in System.Posix.Types

Storable CMode
Instance details

Defined in System.Posix.Types

Storable COff
Instance details

Defined in System.Posix.Types

Storable CPid
Instance details

Defined in System.Posix.Types

Storable CSsize
Instance details

Defined in System.Posix.Types

Storable CGid
Instance details

Defined in System.Posix.Types

Storable CNlink
Instance details

Defined in System.Posix.Types

Storable CUid
Instance details

Defined in System.Posix.Types

Storable CCc
Instance details

Defined in System.Posix.Types

Storable CSpeed
Instance details

Defined in System.Posix.Types

Storable CTcflag
Instance details

Defined in System.Posix.Types

Storable CRLim
Instance details

Defined in System.Posix.Types

Storable CBlkSize
Instance details

Defined in System.Posix.Types

Storable CBlkCnt
Instance details

Defined in System.Posix.Types

Storable CClockId
Instance details

Defined in System.Posix.Types

Storable CFsBlkCnt
Instance details

Defined in System.Posix.Types

Storable CFsFilCnt
Instance details

Defined in System.Posix.Types

Storable CId
Instance details

Defined in System.Posix.Types

Storable CKey
Instance details

Defined in System.Posix.Types

Storable CSocklen
Instance details

Defined in System.Posix.Types

Storable CNfds
Instance details

Defined in System.Posix.Types

Storable Fd
Instance details

Defined in System.Posix.Types

Storable CChar
Instance details

Defined in Foreign.C.Types

Storable CSChar
Instance details

Defined in Foreign.C.Types

Storable CUChar
Instance details

Defined in Foreign.C.Types

Storable CShort
Instance details

Defined in Foreign.C.Types

Storable CUShort
Instance details

Defined in Foreign.C.Types

Storable CInt
Instance details

Defined in Foreign.C.Types

Storable CUInt
Instance details

Defined in Foreign.C.Types

Storable CLong
Instance details

Defined in Foreign.C.Types

Storable CULong
Instance details

Defined in Foreign.C.Types

Storable CLLong
Instance details

Defined in Foreign.C.Types

Storable CULLong
Instance details

Defined in Foreign.C.Types

Storable CBool
Instance details

Defined in Foreign.C.Types

Storable CFloat
Instance details

Defined in Foreign.C.Types

Storable CDouble
Instance details

Defined in Foreign.C.Types

Storable CPtrdiff
Instance details

Defined in Foreign.C.Types

Storable CSize
Instance details

Defined in Foreign.C.Types

Storable CWchar
Instance details

Defined in Foreign.C.Types

Storable CSigAtomic
Instance details

Defined in Foreign.C.Types

Storable CClock
Instance details

Defined in Foreign.C.Types

Storable CTime
Instance details

Defined in Foreign.C.Types

Storable CUSeconds
Instance details

Defined in Foreign.C.Types

Storable CSUSeconds
Instance details

Defined in Foreign.C.Types

Storable CIntPtr
Instance details

Defined in Foreign.C.Types

Storable CUIntPtr
Instance details

Defined in Foreign.C.Types

Storable CIntMax
Instance details

Defined in Foreign.C.Types

Storable CUIntMax
Instance details

Defined in Foreign.C.Types

Storable WordPtr
Instance details

Defined in Foreign.Ptr

Storable IntPtr
Instance details

Defined in Foreign.Ptr

Storable Fingerprint

Since: base-4.4.0.0

Instance details

Defined in Foreign.Storable

Storable CTimeVal
Instance details

Defined in System.Posix.Files.Common

( Storable a, Integral a) => Storable ( Ratio a)

Since: base-4.8.0.0

Instance details

Defined in Foreign.Storable

Storable ( StablePtr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable ( Ptr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable ( FunPtr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable a => Storable ( Complex a)

Since: base-4.8.0.0

Instance details

Defined in Data.Complex

Storable a => Storable ( Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Storable a => Storable ( Down a)

Since: base-4.14.0.0

Instance details

Defined in Data.Ord

Storable a => Storable ( Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Unlifted Foreign.Marshal.Alloc

alloca :: ( MonadUnliftIO m, Storable a) => ( Ptr a -> m b) -> m b Source #

Unlifted alloca .

Since: 0.2.5.0

allocaBytes :: MonadUnliftIO m => Int -> ( Ptr a -> m b) -> m b Source #

Unlifted allocaBytes .

Since: 0.2.5.0

malloc :: ( MonadIO m, Storable a) => m ( Ptr a) Source #

Lifted malloc .

Since: 0.2.5.0

calloc :: ( MonadIO m, Storable a) => m ( Ptr a) Source #

Lifted calloc .

Since: 0.2.5.0

realloc :: ( MonadIO m, Storable b) => Ptr a -> m ( Ptr b) Source #

Lifted realloc .

Since: 0.2.5.0

free :: MonadIO m => Ptr a -> m () Source #

Lifted free .

Since: 0.2.5.0

finalizerFree :: FinalizerPtr a Source #

A pointer to a foreign function equivalent to free , which may be used as a finalizer (cf ForeignPtr ) for storage allocated with malloc , mallocBytes , realloc or reallocBytes .

Unlifted Foreign.Marshal.Array

allocaArray :: ( MonadUnliftIO m, Storable a) => Int -> ( Ptr a -> m b) -> m b Source #

Unlifted allocaArray .

Since: 0.2.5.0

allocaArray0 :: ( MonadUnliftIO m, Storable a) => Int -> ( Ptr a -> m b) -> m b Source #

Unlifted allocaArray0 .

Since: 0.2.5.0

peekArray :: ( MonadIO m, Storable a) => Int -> Ptr a -> m [a] Source #

Lifted peekArray .

Since: 0.2.5.0

peekArray0 :: ( MonadIO m, Storable a, Eq a) => a -> Ptr a -> m [a] Source #

Lifted peekArray0 .

Since: 0.2.5.0

pokeArray :: ( MonadIO m, Storable a) => Ptr a -> [a] -> m () Source #

Lifted pokeArray .

Since: 0.2.5.0

pokeArray0 :: ( MonadIO m, Storable a) => a -> Ptr a -> [a] -> m () Source #

Lifted pokeArray0 .

Since: 0.2.5.0

newArray :: ( MonadIO m, Storable a) => [a] -> m ( Ptr a) Source #

Lifted newArray .

Since: 0.2.5.0

newArray0 :: ( MonadIO m, Storable a) => a -> [a] -> m ( Ptr a) Source #

Lifted newArray0

Since: 0.2.5.0

withArray :: ( MonadUnliftIO m, Storable a) => [a] -> ( Ptr a -> m b) -> m b Source #

Unlifted withArray .

Since: 0.2.5.0

withArray0 :: ( MonadUnliftIO m, Storable a) => a -> [a] -> ( Ptr a -> m b) -> m b Source #

Unlifted withArray0 .

Since: 0.2.5.0

withArrayLen :: ( MonadUnliftIO m, Storable a) => [a] -> ( Int -> Ptr a -> m b) -> m b Source #

Unlifted withArrayLen .

Since: 0.2.5.0

withArrayLen0 :: ( MonadUnliftIO m, Storable a) => a -> [a] -> ( Int -> Ptr a -> m b) -> m b Source #

Unlifted withArrayLen0 .

Since: 0.2.5.0

copyArray :: ( MonadIO m, Storable a) => Ptr a -> Ptr a -> Int -> m () Source #

Lifted copyArray .

Since: 0.2.5.0

moveArray :: ( MonadIO m, Storable a) => Ptr a -> Ptr a -> Int -> m () Source #

Lifted moveArray .

Since: 0.2.5.0

advancePtr :: Storable a => Ptr a -> Int -> Ptr a Source #

Advance a pointer into an array by the given number of elements

Unlifted Foreign.Marshal.Error

throwIf :: MonadUnliftIO m => (a -> Bool ) -> (a -> String ) -> m a -> m a Source #

Unlifted throwIf .

Since: 0.2.5.0

throwIf_ :: MonadUnliftIO m => (a -> Bool ) -> (a -> String ) -> m a -> m () Source #

Unlifted throwIf_ .

Since: 0.2.5.0

throwIfNeg :: ( MonadUnliftIO m, Ord a, Num a) => (a -> String ) -> m a -> m a Source #

Unlifted throwIfNeg .

Since: 0.2.5.0

throwIfNeg_ :: ( MonadUnliftIO m, Ord a, Num a) => (a -> String ) -> m a -> m () Source #

Unlifted throwIfNeg_ .

Since: 0.2.5.0

throwIfNull :: MonadUnliftIO m => String -> m ( Ptr a) -> m ( Ptr a) Source #

Unlifted throwIfNull .

Since: 0.2.5.0

Unlifted Foreign.Marshal.Pool

data Pool Source #

A memory pool.

freePool :: MonadIO m => Pool -> m () Source #

Lifted freePool .

Since: 0.2.5.0

withPool :: MonadUnliftIO m => ( Pool -> m b) -> m b Source #

Unlifted withPool .

Since: 0.2.5.0

pooledNew :: ( MonadIO m, Storable a) => Pool -> a -> m ( Ptr a) Source #

Lifted pooledNew .

Since: 0.2.5.0

pooledNewArray0 :: ( MonadIO m, Storable a) => Pool -> a -> [a] -> m ( Ptr a) Source #

Lifted pooledNewArray0 .

Since: 0.2.5.0

Unlifted Foreign.Marshal.Utils

with :: ( MonadUnliftIO m, Storable a) => a -> ( Ptr a -> m b) -> m b Source #

Unlifted with .

Since: 0.2.5.0

new :: ( MonadIO m, Storable a) => a -> m ( Ptr a) Source #

Lifted new .

Since: 0.2.5.0

fromBool :: Num a => Bool -> a Source #

Convert a Haskell Bool to its numeric representation

toBool :: ( Eq a, Num a) => a -> Bool Source #

Convert a Boolean in numeric representation to a Haskell value

maybeNew :: MonadIO m => (a -> m ( Ptr b)) -> Maybe a -> m ( Ptr b) Source #

Lifted maybeNew .

Since: 0.2.5.0

maybeWith :: MonadIO m => (a -> ( Ptr b -> m c) -> m c) -> Maybe a -> ( Ptr b -> m c) -> m c Source #

Lifted maybeWith .

Since: 0.2.5.0

maybePeek :: MonadUnliftIO m => ( Ptr a -> m b) -> Ptr a -> m ( Maybe b) Source #

Unlifted maybePeek .

Since: 0.2.5.0

withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res Source #

Replicates a withXXX combinator over a list of objects, yielding a list of marshalled objects

copyBytes :: MonadIO m => Ptr a -> Ptr a -> Int -> m () Source #

Lifted copyBytes .

Since: 0.2.5.0

moveBytes :: MonadIO m => Ptr a -> Ptr a -> Int -> m () Source #

Lifted moveBytes .

Since: 0.2.5.0

fillBytes :: MonadIO m => Ptr a -> Word8 -> Int -> m () Source #

Lifted fillBytes .

Since: 0.2.5.0