unliftio-0.2.25.0: The MonadUnliftIO typeclass for unlifting monads to IO (batteries included)

Safe Haskell | None
Language | Haskell2010

UnliftIO.Foreign

Contents

- Re-exported modules
- Unlifted Foreign.C.String
- Unlifted Foreign.C.Error
- Unlifted Foreign.Ptr
- Unlifted Foreign.ForeignPtr
- Unlifted Foreign.StablePtr
- Unlifted Foreign.Storable
- Unlifted Foreign.Marshal.Alloc
- Unlifted Foreign.Marshal.Array
- Unlifted Foreign.Marshal.Error
- Unlifted Foreign.Marshal.Pool
- Unlifted Foreign.Marshal.Utils

Description

Unlifted Foreign.

Since: 0.2.5.0

Synopsis

- module Data.Bits
- module Data.Int
- module Data.Word
- module Foreign.C.Types
- type CString = Ptr CChar
- type CStringLen = (Ptr CChar, Int)
- peekCString :: MonadIO m => CString -> m String
- peekCStringLen :: MonadIO m => CStringLen -> m String
- newCString :: MonadIO m => String -> m CString
- newCStringLen :: MonadIO m => String -> m CStringLen
- withCString :: MonadUnliftIO m => String -> (CString -> m a) -> m a
- withCStringLen :: MonadUnliftIO m => String -> (CStringLen -> m a) -> m a
- charIsRepresentable :: Char -> IO Bool
- castCharToCChar :: Char -> CChar
- castCCharToChar :: CChar -> Char
- castCharToCUChar :: Char -> CUChar
- castCUCharToChar :: CUChar -> Char
- castCharToCSChar :: Char -> CSChar
- castCSCharToChar :: CSChar -> Char
- peekCAString :: MonadIO m => CString -> m String
- peekCAStringLen :: MonadIO m => CStringLen -> m String
- newCAString :: MonadIO m => String -> m CString
- newCAStringLen :: MonadIO m => String -> m CStringLen
- withCAString :: MonadUnliftIO m => String -> (CString -> m a) -> m a
- withCAStringLen :: MonadUnliftIO m => String -> (CStringLen -> m a) -> m a
- type CWString = Ptr CWchar
- type CWStringLen = (Ptr CWchar, Int)
- peekCWString :: MonadIO m => CWString -> m String
- peekCWStringLen :: MonadIO m => CWStringLen -> m String
- newCWString :: MonadIO m => String -> m CWString
- newCWStringLen :: MonadIO m => String -> m CWStringLen
- withCWString :: MonadUnliftIO m => String -> (CWString -> m a) -> m a
- withCWStringLen :: MonadUnliftIO m => String -> (CWStringLen -> m a) -> m a
- newtype Errno = Errno CInt
- eOK :: Errno
- e2BIG :: Errno
- eACCES :: Errno
- eADDRINUSE :: Errno
- eADDRNOTAVAIL :: Errno
- eADV :: Errno
- eAFNOSUPPORT :: Errno
- eAGAIN :: Errno
- eALREADY :: Errno
- eBADF :: Errno
- eBADMSG :: Errno
- eBADRPC :: Errno
- eBUSY :: Errno
- eCHILD :: Errno
- eCOMM :: Errno
- eCONNABORTED :: Errno
- eCONNREFUSED :: Errno
- eCONNRESET :: Errno
- eDEADLK :: Errno
- eDESTADDRREQ :: Errno
- eDIRTY :: Errno
- eDOM :: Errno
- eDQUOT :: Errno
- eEXIST :: Errno
- eFAULT :: Errno
- eFBIG :: Errno
- eFTYPE :: Errno
- eHOSTDOWN :: Errno
- eHOSTUNREACH :: Errno
- eIDRM :: Errno
- eILSEQ :: Errno
- eINPROGRESS :: Errno
- eINTR :: Errno
- eINVAL :: Errno
- eIO :: Errno
- eISCONN :: Errno
- eISDIR :: Errno
- eLOOP :: Errno
- eMFILE :: Errno
- eMLINK :: Errno
- eMSGSIZE :: Errno
- eMULTIHOP :: Errno
- eNAMETOOLONG :: Errno
- eNETDOWN :: Errno
- eNETRESET :: Errno
- eNETUNREACH :: Errno
- eNFILE :: Errno
- eNOBUFS :: Errno
- eNODATA :: Errno
- eNODEV :: Errno
- eNOENT :: Errno
- eNOEXEC :: Errno
- eNOLCK :: Errno
- eNOLINK :: Errno
- eNOMEM :: Errno
- eNOMSG :: Errno
- eNONET :: Errno
- eNOPROTOOPT :: Errno
- eNOSPC :: Errno
- eNOSR :: Errno
- eNOSTR :: Errno
- eNOSYS :: Errno
- eNOTBLK :: Errno
- eNOTCONN :: Errno
- eNOTDIR :: Errno
- eNOTEMPTY :: Errno
- eNOTSOCK :: Errno
- eNOTSUP :: Errno
- eNOTTY :: Errno
- eNXIO :: Errno
- eOPNOTSUPP :: Errno
- ePERM :: Errno
- ePFNOSUPPORT :: Errno
- ePIPE :: Errno
- ePROCLIM :: Errno
- ePROCUNAVAIL :: Errno
- ePROGMISMATCH :: Errno
- ePROGUNAVAIL :: Errno
- ePROTO :: Errno
- ePROTONOSUPPORT :: Errno
- ePROTOTYPE :: Errno
- eRANGE :: Errno
- eREMCHG :: Errno
- eREMOTE :: Errno
- eROFS :: Errno
- eRPCMISMATCH :: Errno
- eRREMOTE :: Errno
- eSHUTDOWN :: Errno
- eSOCKTNOSUPPORT :: Errno
- eSPIPE :: Errno
- eSRCH :: Errno
- eSRMNT :: Errno
- eSTALE :: Errno
- eTIME :: Errno
- eTIMEDOUT :: Errno
- eTOOMANYREFS :: Errno
- eTXTBSY :: Errno
- eUSERS :: Errno
- eWOULDBLOCK :: Errno
- eXDEV :: Errno
- isValidErrno :: Errno -> Bool
- getErrno :: MonadIO m => m Errno
- resetErrno :: MonadIO m => m ()
- errnoToIOError :: String -> Errno -> Maybe Handle -> Maybe String -> IOError
- throwErrno :: MonadIO m => String -> m a
- throwErrnoIf :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m a
- throwErrnoIf_ :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m ()
- throwErrnoIfRetry :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m a
- throwErrnoIfRetry_ :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m ()
- throwErrnoIfMinus1 :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m a
- throwErrnoIfMinus1_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m ()
- throwErrnoIfMinus1Retry :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m a
- throwErrnoIfMinus1Retry_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m ()
- throwErrnoIfNull :: MonadUnliftIO m => String -> m (Ptr a) -> m (Ptr a)
- throwErrnoIfNullRetry :: MonadUnliftIO m => String -> m (Ptr a) -> m (Ptr a)
- throwErrnoIfRetryMayBlock :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m b -> m a
- throwErrnoIfRetryMayBlock_ :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m b -> m ()
- throwErrnoIfMinus1RetryMayBlock :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m b -> m a
- throwErrnoIfMinus1RetryMayBlock_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m b -> m ()
- throwErrnoIfNullRetryMayBlock :: MonadUnliftIO m => String -> m (Ptr a) -> m b -> m (Ptr a)
- throwErrnoPath :: MonadIO m => String -> FilePath -> m a
- throwErrnoPathIf :: MonadUnliftIO m => (a -> Bool) -> String -> FilePath -> m a -> m a
- throwErrnoPathIf_ :: MonadUnliftIO m => (a -> Bool) -> String -> FilePath -> m a -> m ()
- throwErrnoPathIfNull :: MonadUnliftIO m => String -> FilePath -> m (Ptr a) -> m (Ptr a)
- throwErrnoPathIfMinus1 :: (MonadUnliftIO m, Eq a, Num a) => String -> FilePath -> m a -> m a
- throwErrnoPathIfMinus1_ :: (MonadUnliftIO m, Eq a, Num a) => String -> FilePath -> m a -> m ()
- data Ptr a
- nullPtr :: Ptr a
- castPtr :: Ptr a -> Ptr b
- plusPtr :: Ptr a -> Int -> Ptr b
- alignPtr :: Ptr a -> Int -> Ptr a
- minusPtr :: Ptr a -> Ptr b -> Int
- data FunPtr a
- nullFunPtr :: FunPtr a
- castFunPtr :: FunPtr a -> FunPtr b
- castFunPtrToPtr :: FunPtr a -> Ptr b
- castPtrToFunPtr :: Ptr a -> FunPtr b
- freeHaskellFunPtr :: MonadIO m => FunPtr a -> m ()
- newtype IntPtr = IntPtr Int
- ptrToIntPtr :: Ptr a -> IntPtr
- intPtrToPtr :: IntPtr -> Ptr a
- newtype WordPtr = WordPtr Word
- ptrToWordPtr :: Ptr a -> WordPtr
- wordPtrToPtr :: WordPtr -> Ptr a
- data ForeignPtr a
- type FinalizerPtr a = FunPtr (Ptr a -> IO ())
- type FinalizerEnvPtr env a = FunPtr (Ptr env -> Ptr a -> IO ())
- newForeignPtr :: MonadIO m => FinalizerPtr a -> Ptr a -> m (ForeignPtr a)
- newForeignPtr_ :: MonadIO m => Ptr a -> m (ForeignPtr a)
- addForeignPtrFinalizer :: MonadIO m => FinalizerPtr a -> ForeignPtr a -> m ()
- newForeignPtrEnv :: MonadIO m => FinalizerEnvPtr env a -> Ptr env -> Ptr a -> m (ForeignPtr a)
- addForeignPtrFinalizerEnv :: MonadIO m => FinalizerEnvPtr env a -> Ptr env -> ForeignPtr a -> m ()
- withForeignPtr :: MonadUnliftIO m => ForeignPtr a -> (Ptr a -> m b) -> m b
- finalizeForeignPtr :: MonadIO m => ForeignPtr a -> m ()
- touchForeignPtr :: MonadIO m => ForeignPtr a -> m ()
- castForeignPtr :: ForeignPtr a -> ForeignPtr b
- plusForeignPtr :: ForeignPtr a -> Int -> ForeignPtr b
- mallocForeignPtr :: (MonadIO m, Storable a) => m (ForeignPtr a)
- mallocForeignPtrBytes :: MonadIO m => Int -> m (ForeignPtr a)
- mallocForeignPtrArray :: (MonadIO m, Storable a) => Int -> m (ForeignPtr a)
- mallocForeignPtrArray0 :: (MonadIO m, Storable a) => Int -> m (ForeignPtr a)
- newGHCForeignPtr :: MonadUnliftIO m => Ptr a -> m () -> m (ForeignPtr a)
- addGHCForeignPtrFinalizer :: MonadUnliftIO m => ForeignPtr a -> m () -> m ()
- unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a
- data StablePtr a
- newStablePtr :: MonadIO m => a -> m (StablePtr a)
- deRefStablePtr :: MonadIO m => StablePtr a -> m a
- freeStablePtr :: MonadIO m => StablePtr a -> m ()
- castStablePtrToPtr :: StablePtr a -> Ptr ()
- castPtrToStablePtr :: Ptr () -> StablePtr a
- class Storable a where
  - sizeOf :: a -> Int
  - alignment :: a -> Int
  - peekElemOff :: Ptr a -> Int -> IO a
  - pokeElemOff :: Ptr a -> Int -> a -> IO ()
  - peekByteOff :: Ptr b -> Int -> IO a
  - pokeByteOff :: Ptr b -> Int -> a -> IO ()
  - peek :: Ptr a -> IO a
  - poke :: Ptr a -> a -> IO ()
- alloca :: (MonadUnliftIO m, Storable a) => (Ptr a -> m b) -> m b
- allocaBytes :: MonadUnliftIO m => Int -> (Ptr a -> m b) -> m b
- allocaBytesAligned :: MonadUnliftIO m => Int -> Int -> (Ptr a -> m b) -> m b
- malloc :: (MonadIO m, Storable a) => m (Ptr a)
- mallocBytes :: MonadIO m => Int -> m (Ptr a)
- calloc :: (MonadIO m, Storable a) => m (Ptr a)
- callocBytes :: MonadIO m => Int -> m (Ptr a)
- realloc :: (MonadIO m, Storable b) => Ptr a -> m (Ptr b)
- reallocBytes :: MonadIO m => Ptr a -> Int -> m (Ptr a)
- free :: MonadIO m => Ptr a -> m ()
- finalizerFree :: FinalizerPtr a
- mallocArray :: (MonadIO m, Storable a) => Int -> m (Ptr a)
- mallocArray0 :: (MonadIO m, Storable a) => Int -> m (Ptr a)
- allocaArray :: (MonadUnliftIO m, Storable a) => Int -> (Ptr a -> m b) -> m b
- allocaArray0 :: (MonadUnliftIO m, Storable a) => Int -> (Ptr a -> m b) -> m b
- reallocArray :: (MonadIO m, Storable a) => Ptr a -> Int -> m (Ptr a)
- reallocArray0 :: (MonadIO m, Storable a) => Ptr a -> Int -> m (Ptr a)
- callocArray :: (MonadIO m, Storable a) => Int -> m (Ptr a)
- callocArray0 :: (MonadIO m, Storable a) => Int -> m (Ptr a)
- peekArray :: (MonadIO m, Storable a) => Int -> Ptr a -> m [a]
- peekArray0 :: (MonadIO m, Storable a, Eq a) => a -> Ptr a -> m [a]
- pokeArray :: (MonadIO m, Storable a) => Ptr a -> [a] -> m ()
- pokeArray0 :: (MonadIO m, Storable a) => a -> Ptr a -> [a] -> m ()
- newArray :: (MonadIO m, Storable a) => [a] -> m (Ptr a)
- newArray0 :: (MonadIO m, Storable a) => a -> [a] -> m (Ptr a)
- withArray :: (MonadUnliftIO m, Storable a) => [a] -> (Ptr a -> m b) -> m b
- withArray0 :: (MonadUnliftIO m, Storable a) => a -> [a] -> (Ptr a -> m b) -> m b
- withArrayLen :: (MonadUnliftIO m, Storable a) => [a] -> (Int -> Ptr a -> m b) -> m b
- withArrayLen0 :: (MonadUnliftIO m, Storable a) => a -> [a] -> (Int -> Ptr a -> m b) -> m b
- copyArray :: (MonadIO m, Storable a) => Ptr a -> Ptr a -> Int -> m ()
- moveArray :: (MonadIO m, Storable a) => Ptr a -> Ptr a -> Int -> m ()
- lengthArray0 :: (MonadIO m, Storable a, Eq a) => a -> Ptr a -> m Int
- advancePtr :: Storable a => Ptr a -> Int -> Ptr a
- throwIf :: MonadUnliftIO m => (a -> Bool) -> (a -> String) -> m a -> m a
- throwIf_ :: MonadUnliftIO m => (a -> Bool) -> (a -> String) -> m a -> m ()
- throwIfNeg :: (MonadUnliftIO m, Ord a, Num a) => (a -> String) -> m a -> m a
- throwIfNeg_ :: (MonadUnliftIO m, Ord a, Num a) => (a -> String) -> m a -> m ()
- throwIfNull :: MonadUnliftIO m => String -> m (Ptr a) -> m (Ptr a)
- data Pool
- newPool :: MonadIO m => m Pool
- freePool :: MonadIO m => Pool -> m ()
- withPool :: MonadUnliftIO m => (Pool -> m b) -> m b
- pooledMalloc :: (MonadIO m, Storable a) => Pool -> m (Ptr a)
- pooledMallocBytes :: MonadIO m => Pool -> Int -> m (Ptr a)
- pooledRealloc :: (MonadIO m, Storable a) => Pool -> Ptr a -> m (Ptr a)
- pooledReallocBytes :: MonadIO m => Pool -> Ptr a -> Int -> m (Ptr a)
- pooledMallocArray :: (MonadIO m, Storable a) => Pool -> Int -> m (Ptr a)
- pooledMallocArray0 :: (MonadIO m, Storable a) => Pool -> Int -> m (Ptr a)
- pooledReallocArray :: (MonadIO m, Storable a) => Pool -> Ptr a -> Int -> m (Ptr a)
- pooledReallocArray0 :: (MonadIO m, Storable a) => Pool -> Ptr a -> Int -> m (Ptr a)
- pooledNew :: (MonadIO m, Storable a) => Pool -> a -> m (Ptr a)
- pooledNewArray :: (MonadIO m, Storable a) => Pool -> [a] -> m (Ptr a)
- pooledNewArray0 :: (MonadIO m, Storable a) => Pool -> a -> [a] -> m (Ptr a)
- with :: (MonadUnliftIO m, Storable a) => a -> (Ptr a -> m b) -> m b
- new :: (MonadIO m, Storable a) => a -> m (Ptr a)
- fromBool :: Num a => Bool -> a
- toBool :: (Eq a, Num a) => a -> Bool
- maybeNew :: MonadIO m => (a -> m (Ptr b)) -> Maybe a -> m (Ptr b)
- maybeWith :: MonadIO m => (a -> (Ptr b -> m c) -> m c) -> Maybe a -> (Ptr b -> m c) -> m c
- maybePeek :: MonadUnliftIO m => (Ptr a -> m b) -> Ptr a -> m (Maybe b)
- withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res
- copyBytes :: MonadIO m => Ptr a -> Ptr a -> Int -> m ()
- moveBytes :: MonadIO m => Ptr a -> Ptr a -> Int -> m ()
- fillBytes :: MonadIO m => Ptr a -> Word8 -> Int -> m ()

# Re-exported modules

module Data.Bits

module Data.Int

module Data.Word

module Foreign.C.Types

# Unlifted Foreign.C.String

type CString = Ptr CChar #

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

type CStringLen = (Ptr CChar, Int) #

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

peekCString :: MonadIO m => CString -> m String #

Lifted `peekCString`.

Since: 0.2.5.0

peekCStringLen :: MonadIO m => CStringLen -> m String #

Lifted `peekCStringLen`.

Since: 0.2.5.0

newCString :: MonadIO m => String -> m CString #

Lifted `newCString`.

Since: 0.2.5.0

newCStringLen :: MonadIO m => String -> m CStringLen #

Lifted `newCStringLen`.

Since: 0.2.5.0

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

Unlifted `withCString`.

Since: 0.2.5.0

withCStringLen :: MonadUnliftIO m => String -> (CStringLen -> m a) -> m a #

Unlifted `withCStringLen`.

Since: 0.2.5.0

charIsRepresentable :: Char -> IO Bool #

castCharToCChar :: Char -> CChar #

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

castCCharToChar :: CChar -> Char #

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

castCharToCUChar :: Char -> CUChar #

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

castCUCharToChar :: CUChar -> Char #

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

castCharToCSChar :: Char -> CSChar #

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

castCSCharToChar :: CSChar -> Char #

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

peekCAString :: MonadIO m => CString -> m String #

Lifted `peekCAString`.

Since: 0.2.5.0

peekCAStringLen :: MonadIO m => CStringLen -> m String #

Lifted `peekCAStringLen`.

Since: 0.2.5.0

newCAString :: MonadIO m => String -> m CString #

Lifted `newCAString`.

Since: 0.2.5.0

newCAStringLen :: MonadIO m => String -> m CStringLen #

Lifted `newCAStringLen`.

Since: 0.2.5.0

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

Unlifted `withCAString`.

Since: 0.2.5.0

withCAStringLen :: MonadUnliftIO m => String -> (CStringLen -> m a) -> m a #

Unlifted `withCAStringLen`.

Since: 0.2.5.0

type CWString = Ptr CWchar #

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

type CWStringLen = (Ptr CWchar, Int) #

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

peekCWString :: MonadIO m => CWString -> m String #

Lifted `peekCWString`.

Since: 0.2.5.0

peekCWStringLen :: MonadIO m => CWStringLen -> m String #

Lifted `peekCWStringLen`.

Since: 0.2.5.0

newCWString :: MonadIO m => String -> m CWString #

Lifted `newCWString`.

Since: 0.2.5.0

newCWStringLen :: MonadIO m => String -> m CWStringLen #

Lifted `newCWStringLen`.

Since: 0.2.5.0

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

Unlifted `withCWString`.

Since: 0.2.5.0

withCWStringLen :: MonadUnliftIO m => String -> (CWStringLen -> m a) -> m a #

Unlifted `withCWStringLen`.

Since: 0.2.5.0

# Unlifted Foreign.C.Error

newtype Errno #

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 Methods (==) :: Errno -> Errno -> Bool # (/=) :: Errno -> Errno -> Bool #

eOK :: Errno #

e2BIG :: Errno #

eACCES :: Errno #

eADDRINUSE :: Errno #

eADDRNOTAVAIL :: Errno #

eADV :: Errno #

eAFNOSUPPORT :: Errno #

eAGAIN :: Errno #

eALREADY :: Errno #

eBADF :: Errno #

eBADMSG :: Errno #

eBADRPC :: Errno #

eBUSY :: Errno #

eCHILD :: Errno #

eCOMM :: Errno #

eCONNABORTED :: Errno #

eCONNREFUSED :: Errno #

eCONNRESET :: Errno #

eDEADLK :: Errno #

eDESTADDRREQ :: Errno #

eDIRTY :: Errno #

eDOM :: Errno #

eDQUOT :: Errno #

eEXIST :: Errno #

eFAULT :: Errno #

eFBIG :: Errno #

eFTYPE :: Errno #

eHOSTDOWN :: Errno #

eHOSTUNREACH :: Errno #

eIDRM :: Errno #

eILSEQ :: Errno #

eINPROGRESS :: Errno #

eINTR :: Errno #

eINVAL :: Errno #

eIO :: Errno #

eISCONN :: Errno #

eISDIR :: Errno #

eLOOP :: Errno #

eMFILE :: Errno #

eMLINK :: Errno #

eMSGSIZE :: Errno #

eMULTIHOP :: Errno #

eNAMETOOLONG :: Errno #

eNETDOWN :: Errno #

eNETRESET :: Errno #

eNETUNREACH :: Errno #

eNFILE :: Errno #

eNOBUFS :: Errno #

eNODATA :: Errno #

eNODEV :: Errno #

eNOENT :: Errno #

eNOEXEC :: Errno #

eNOLCK :: Errno #

eNOLINK :: Errno #

eNOMEM :: Errno #

eNOMSG :: Errno #

eNONET :: Errno #

eNOPROTOOPT :: Errno #

eNOSPC :: Errno #

eNOSR :: Errno #

eNOSTR :: Errno #

eNOSYS :: Errno #

eNOTBLK :: Errno #

eNOTCONN :: Errno #

eNOTDIR :: Errno #

eNOTEMPTY :: Errno #

eNOTSOCK :: Errno #

eNOTSUP :: Errno #

Since: base-4.7.0.0

eNOTTY :: Errno #

eNXIO :: Errno #

eOPNOTSUPP :: Errno #

ePERM :: Errno #

ePFNOSUPPORT :: Errno #

ePIPE :: Errno #

ePROCLIM :: Errno #

ePROCUNAVAIL :: Errno #

ePROGMISMATCH :: Errno #

ePROGUNAVAIL :: Errno #

ePROTO :: Errno #

ePROTONOSUPPORT :: Errno #

ePROTOTYPE :: Errno #

eRANGE :: Errno #

eREMCHG :: Errno #

eREMOTE :: Errno #

eROFS :: Errno #

eRPCMISMATCH :: Errno #

eRREMOTE :: Errno #

eSHUTDOWN :: Errno #

eSOCKTNOSUPPORT :: Errno #

eSPIPE :: Errno #

eSRCH :: Errno #

eSRMNT :: Errno #

eSTALE :: Errno #

eTIME :: Errno #

eTIMEDOUT :: Errno #

eTOOMANYREFS :: Errno #

eTXTBSY :: Errno #

eUSERS :: Errno #

eWOULDBLOCK :: Errno #

eXDEV :: Errno #

isValidErrno :: Errno -> Bool #

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`.

getErrno :: MonadIO m => m Errno #

Lifted `getErrno`.

Since: 0.2.5.0

resetErrno :: MonadIO m => m () #

Lifted `resetErrno`.

Since: 0.2.5.0

errnoToIOError #

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.

throwErrno :: MonadIO m => String -> m a #

Lifted `throwErrno`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIf`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIf_`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIfRetry`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIfRetry_`.

Since: 0.2.5.0

throwErrnoIfMinus1 :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m a #

Unlifted `throwErrnoIfMinus1`.

Since: 0.2.5.0

throwErrnoIfMinus1_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m () #

Unlifted `throwErrnoIfMinus1_`

Since: 0.2.5.0

throwErrnoIfMinus1Retry :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m a #

Unlifted `throwErrnoIfMinus1Retry`.

Since: 0.2.5.0

throwErrnoIfMinus1Retry_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m () #

Unlifted `throwErrnoIfMinus1Retry_`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIfNull`.

Since: 0.2.5.0

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

Unlifted `throwErrnoIfNullRetry`.

Since: 0.2.5.0

throwErrnoIfRetryMayBlock :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m b -> m a #

Unlifted `throwErrnoIfRetryMayBlock`.

Since: 0.2.5.0

throwErrnoIfRetryMayBlock_ :: MonadUnliftIO m => (a -> Bool) -> String -> m a -> m b -> m () #

Unlifted `throwErrnoIfRetryMayBlock_`.

Since: 0.2.5.0

throwErrnoIfMinus1RetryMayBlock :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m b -> m a #

Unlifted `throwErrnoIfMinus1RetryMayBlock`.

Since: 0.2.5.0

throwErrnoIfMinus1RetryMayBlock_ :: (MonadUnliftIO m, Eq a, Num a) => String -> m a -> m b -> m () #

Unlifted `throwErrnoIfMinus1RetryMayBlock_`

Since: 0.2.5.0

throwErrnoIfNullRetryMayBlock :: MonadUnliftIO m => String -> m (Ptr a) -> m b -> m (Ptr a) #

Unlifted `throwErrnoIfNullRetryMayBlock`.

Since: 0.2.5.0

throwErrnoPath :: MonadIO m => String -> FilePath -> m a #

Lifted `throwErrnoPath`.

Since: 0.2.5.0

throwErrnoPathIf :: MonadUnliftIO m => (a -> Bool) -> String -> FilePath -> m a -> m a #

Unlifted `throwErrnoPathIf`.

Since: 0.2.5.0

throwErrnoPathIf_ :: MonadUnliftIO m => (a -> Bool) -> String -> FilePath -> m a -> m () #

Unlifted `throwErrnoPathIf_`.

Since: 0.2.5.0

throwErrnoPathIfNull :: MonadUnliftIO m => String -> FilePath -> m (Ptr a) -> m (Ptr a) #

Unlifted `throwErrnoPathIfNull`.

Since: 0.2.5.0

throwErrnoPathIfMinus1 :: (MonadUnliftIO m, Eq a, Num a) => String -> FilePath -> m a -> m a #

Unlifted `throwErrnoPathIfMinus1`.

Since: 0.2.5.0

throwErrnoPathIfMinus1_ :: (MonadUnliftIO m, Eq a, Num a) => String -> FilePath -> m a -> m () #

Unlifted `throwErrnoPathIfMinus1_`.

Since: 0.2.5.0

# Unlifted Foreign.Ptr

data Ptr a #

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 -> () #
Generic1 (URec (Ptr ()) :: k -> Type) |
Instance details Defined in GHC.Generics Associated Types
type Rep1 (URec (Ptr ()) :: k -> Type) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep1 (URec (Ptr ()) :: k -> Type) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: k -> Type)))
Methods from1 :: forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ()) :: k -> Type) a # to1 :: forall (a :: k). Rep1 (URec (Ptr ()) :: k -> Type) a -> URec (Ptr ()) a #
Data a => Data (Ptr a) | Since: base-4.8.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Ptr a -> c (Ptr a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Ptr a) # toConstr :: Ptr a -> Constr # dataTypeOf :: Ptr a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Ptr a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Ptr a)) # gmapT :: (forall b. Data b => b -> b) -> Ptr a -> Ptr a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ptr a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ptr a -> r # gmapQ :: (forall d. Data d => d -> u) -> Ptr a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Ptr a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ptr a -> m (Ptr a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ptr a -> m (Ptr a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ptr a -> m (Ptr a) #
Foldable (UAddr :: Type -> Type) | Since: base-4.9.0.0
Instance details Defined in Data.Foldable Methods fold :: Monoid m => UAddr m -> m # foldMap :: Monoid m => (a -> m) -> UAddr a -> m # foldMap' :: Monoid m => (a -> m) -> UAddr a -> m # foldr :: (a -> b -> b) -> b -> UAddr a -> b # foldr' :: (a -> b -> b) -> b -> UAddr a -> b # foldl :: (b -> a -> b) -> b -> UAddr a -> b # foldl' :: (b -> a -> b) -> b -> UAddr a -> b # foldr1 :: (a -> a -> a) -> UAddr a -> a # foldl1 :: (a -> a -> a) -> UAddr a -> a # toList :: UAddr a -> [a] # null :: UAddr a -> Bool # length :: UAddr a -> Int # elem :: Eq a => a -> UAddr a -> Bool # maximum :: Ord a => UAddr a -> a # minimum :: Ord a => UAddr a -> a # sum :: Num a => UAddr a -> a # product :: Num a => UAddr a -> a #
Traversable (UAddr :: Type -> Type) | Since: base-4.9.0.0
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> UAddr a -> f (UAddr b) # sequenceA :: Applicative f => UAddr (f a) -> f (UAddr a) # mapM :: Monad m => (a -> m b) -> UAddr a -> m (UAddr b) # sequence :: Monad m => UAddr (m a) -> m (UAddr a) #
Storable (Ptr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Ptr a -> Int # alignment :: Ptr a -> Int # peekElemOff :: Ptr (Ptr a) -> Int -> IO (Ptr a) # pokeElemOff :: Ptr (Ptr a) -> Int -> Ptr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Ptr a) # pokeByteOff :: Ptr b -> Int -> Ptr a -> IO () # peek :: Ptr (Ptr a) -> IO (Ptr a) # poke :: Ptr (Ptr a) -> Ptr a -> IO () #
Show (Ptr a) | Since: base-2.1
Instance details Defined in GHC.Ptr Methods showsPrec :: Int -> Ptr a -> ShowS # show :: Ptr a -> String # showList :: [Ptr a] -> ShowS #
NFData (Ptr a) | Since: deepseq-1.4.2.0
Instance details Defined in Control.DeepSeq Methods rnf :: Ptr a -> () #
Eq (Ptr a) | Since: base-2.1
Instance details Defined in GHC.Ptr Methods (==) :: Ptr a -> Ptr a -> Bool # (/=) :: Ptr a -> Ptr a -> Bool #
Ord (Ptr a) | Since: base-2.1
Instance details Defined in GHC.Ptr Methods compare :: Ptr a -> Ptr a -> Ordering # (<) :: Ptr a -> Ptr a -> Bool # (<=) :: Ptr a -> Ptr a -> Bool # (>) :: Ptr a -> Ptr a -> Bool # (>=) :: Ptr a -> Ptr a -> Bool # max :: Ptr a -> Ptr a -> Ptr a # min :: Ptr a -> Ptr a -> Ptr a #
Hashable (Ptr a) |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> Ptr a -> Int # hash :: Ptr a -> Int #
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 # (<$) :: a -> URec (Ptr ()) b -> URec (Ptr ()) a #
Generic (URec (Ptr ()) p) |
Instance details Defined in GHC.Generics Associated Types
type Rep (URec (Ptr ()) p) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep (URec (Ptr ()) p) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: Type -> Type)))
Methods from :: URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x # to :: Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p #
Eq (URec (Ptr ()) p) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods (==) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (/=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool #
Ord (URec (Ptr ()) p) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods compare :: URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering # (<) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (<=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (>) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (>=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # max :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p # min :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p #
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 { uAddr# :: Addr# }
type Rep1 (URec (Ptr ()) :: k -> Type) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep1 (URec (Ptr ()) :: k -> Type) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: k -> Type)))
type Rep (URec (Ptr ()) p) | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep (URec (Ptr ()) p) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UAddr" 'PrefixI 'True) (S1 ('MetaSel ('Just "uAddr#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UAddr :: Type -> Type)))

nullPtr :: Ptr a #

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

castPtr :: Ptr a -> Ptr b #

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

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

Advances the given address by the given offset in bytes.

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

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 #

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

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

data FunPtr a #

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

- the argument types are marshallable foreign types, i.e. `Char`, `Int`, `Double`, `Float`, `Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `Word8`, `Word16`, `Word32`, `Word64`, ``Ptr` a`, ``FunPtr` a`, ``StablePtr` a` or a renaming of any of these using `newtype`.
- the return type is either a marshallable foreign type or has the form ``IO` t` where `t` is a marshallable foreign type or `()`.

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 -> () #
Storable (FunPtr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: FunPtr a -> Int # alignment :: FunPtr a -> Int # peekElemOff :: Ptr (FunPtr a) -> Int -> IO (FunPtr a) # pokeElemOff :: Ptr (FunPtr a) -> Int -> FunPtr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (FunPtr a) # pokeByteOff :: Ptr b -> Int -> FunPtr a -> IO () # peek :: Ptr (FunPtr a) -> IO (FunPtr a) # poke :: Ptr (FunPtr a) -> FunPtr a -> IO () #
Show (FunPtr a) | Since: base-2.1
Instance details Defined in GHC.Ptr Methods showsPrec :: Int -> FunPtr a -> ShowS # show :: FunPtr a -> String # showList :: [FunPtr a] -> ShowS #
NFData (FunPtr a) | Since: deepseq-1.4.2.0
Instance details Defined in Control.DeepSeq Methods rnf :: FunPtr a -> () #
Eq (FunPtr a) |
Instance details Defined in GHC.Ptr Methods (==) :: FunPtr a -> FunPtr a -> Bool # (/=) :: FunPtr a -> FunPtr a -> Bool #
Ord (FunPtr a) |
Instance details Defined in GHC.Ptr Methods compare :: FunPtr a -> FunPtr a -> Ordering # (<) :: FunPtr a -> FunPtr a -> Bool # (<=) :: FunPtr a -> FunPtr a -> Bool # (>) :: FunPtr a -> FunPtr a -> Bool # (>=) :: FunPtr a -> FunPtr a -> Bool # max :: FunPtr a -> FunPtr a -> FunPtr a # min :: FunPtr a -> FunPtr a -> FunPtr a #
Hashable (FunPtr a) |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> FunPtr a -> Int # hash :: FunPtr a -> Int #

nullFunPtr :: FunPtr a #

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

castFunPtr :: FunPtr a -> FunPtr b #

Casts a `FunPtr` to a `FunPtr` of a different type.

castFunPtrToPtr :: FunPtr a -> Ptr b #

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 #

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.

freeHaskellFunPtr :: MonadIO m => FunPtr a -> m () #

Lifted `freeHaskellFunPtr`.

Since: 0.2.5.0

newtype IntPtr #

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

Data IntPtr | Since: base-4.11.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IntPtr -> c IntPtr # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IntPtr # toConstr :: IntPtr -> Constr # dataTypeOf :: IntPtr -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IntPtr) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IntPtr) # gmapT :: (forall b. Data b => b -> b) -> IntPtr -> IntPtr # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IntPtr -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IntPtr -> r # gmapQ :: (forall d. Data d => d -> u) -> IntPtr -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> IntPtr -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> IntPtr -> m IntPtr # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IntPtr -> m IntPtr # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IntPtr -> m IntPtr #
Storable IntPtr |
Instance details Defined in Foreign.Ptr Methods sizeOf :: IntPtr -> Int # alignment :: IntPtr -> Int # peekElemOff :: Ptr IntPtr -> Int -> IO IntPtr # pokeElemOff :: Ptr IntPtr -> Int -> IntPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO IntPtr # pokeByteOff :: Ptr b -> Int -> IntPtr -> IO () # peek :: Ptr IntPtr -> IO IntPtr # poke :: Ptr IntPtr -> IntPtr -> IO () #
Bits IntPtr |
Instance details Defined in Foreign.Ptr Methods (.&.) :: IntPtr -> IntPtr -> IntPtr # (.|.) :: IntPtr -> IntPtr -> IntPtr # xor :: IntPtr -> IntPtr -> IntPtr # complement :: IntPtr -> IntPtr # shift :: IntPtr -> Int -> IntPtr # rotate :: IntPtr -> Int -> IntPtr # zeroBits :: IntPtr # bit :: Int -> IntPtr # setBit :: IntPtr -> Int -> IntPtr # clearBit :: IntPtr -> Int -> IntPtr # complementBit :: IntPtr -> Int -> IntPtr # testBit :: IntPtr -> Int -> Bool # bitSizeMaybe :: IntPtr -> Maybe Int # bitSize :: IntPtr -> Int # isSigned :: IntPtr -> Bool # shiftL :: IntPtr -> Int -> IntPtr # unsafeShiftL :: IntPtr -> Int -> IntPtr # shiftR :: IntPtr -> Int -> IntPtr # unsafeShiftR :: IntPtr -> Int -> IntPtr # rotateL :: IntPtr -> Int -> IntPtr # rotateR :: IntPtr -> Int -> IntPtr # popCount :: IntPtr -> Int #
FiniteBits IntPtr |
Instance details Defined in Foreign.Ptr Methods finiteBitSize :: IntPtr -> Int # countLeadingZeros :: IntPtr -> Int # countTrailingZeros :: IntPtr -> Int #
Bounded IntPtr |
Instance details Defined in Foreign.Ptr Methods minBound :: IntPtr # maxBound :: IntPtr #
Enum IntPtr |
Instance details Defined in Foreign.Ptr Methods succ :: IntPtr -> IntPtr # pred :: IntPtr -> IntPtr # toEnum :: Int -> IntPtr # fromEnum :: IntPtr -> Int # enumFrom :: IntPtr -> [IntPtr] # enumFromThen :: IntPtr -> IntPtr -> [IntPtr] # enumFromTo :: IntPtr -> IntPtr -> [IntPtr] # enumFromThenTo :: IntPtr -> IntPtr -> IntPtr -> [IntPtr] #
Ix IntPtr |
Instance details Defined in Foreign.Ptr Methods range :: (IntPtr, IntPtr) -> [IntPtr] # index :: (IntPtr, IntPtr) -> IntPtr -> Int # unsafeIndex :: (IntPtr, IntPtr) -> IntPtr -> Int # inRange :: (IntPtr, IntPtr) -> IntPtr -> Bool # rangeSize :: (IntPtr, IntPtr) -> Int # unsafeRangeSize :: (IntPtr, IntPtr) -> Int #
Num IntPtr |
Instance details Defined in Foreign.Ptr Methods (+) :: IntPtr -> IntPtr -> IntPtr # (-) :: IntPtr -> IntPtr -> IntPtr # (*) :: IntPtr -> IntPtr -> IntPtr # negate :: IntPtr -> IntPtr # abs :: IntPtr -> IntPtr # signum :: IntPtr -> IntPtr # fromInteger :: Integer -> IntPtr #
Read IntPtr |
Instance details Defined in Foreign.Ptr Methods readsPrec :: Int -> ReadS IntPtr # readList :: ReadS [IntPtr] # readPrec :: ReadPrec IntPtr # readListPrec :: ReadPrec [IntPtr] #
Integral IntPtr |
Instance details Defined in Foreign.Ptr Methods quot :: IntPtr -> IntPtr -> IntPtr # rem :: IntPtr -> IntPtr -> IntPtr # div :: IntPtr -> IntPtr -> IntPtr # mod :: IntPtr -> IntPtr -> IntPtr # quotRem :: IntPtr -> IntPtr -> (IntPtr, IntPtr) # divMod :: IntPtr -> IntPtr -> (IntPtr, IntPtr) # toInteger :: IntPtr -> Integer #
Real IntPtr |
Instance details Defined in Foreign.Ptr Methods toRational :: IntPtr -> Rational #
Show IntPtr |
Instance details Defined in Foreign.Ptr Methods showsPrec :: Int -> IntPtr -> ShowS # show :: IntPtr -> String # showList :: [IntPtr] -> ShowS #
Eq IntPtr |
Instance details Defined in Foreign.Ptr Methods (==) :: IntPtr -> IntPtr -> Bool # (/=) :: IntPtr -> IntPtr -> Bool #
Ord IntPtr |
Instance details Defined in Foreign.Ptr Methods compare :: IntPtr -> IntPtr -> Ordering # (<) :: IntPtr -> IntPtr -> Bool # (<=) :: IntPtr -> IntPtr -> Bool # (>) :: IntPtr -> IntPtr -> Bool # (>=) :: IntPtr -> IntPtr -> Bool # max :: IntPtr -> IntPtr -> IntPtr # min :: IntPtr -> IntPtr -> IntPtr #
Hashable IntPtr |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> IntPtr -> Int # hash :: IntPtr -> Int #

ptrToIntPtr :: Ptr a -> IntPtr #

casts a `Ptr` to an `IntPtr`

intPtrToPtr :: IntPtr -> Ptr a #

casts an `IntPtr` to a `Ptr`

newtype WordPtr #

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

Data WordPtr | Since: base-4.11.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WordPtr -> c WordPtr # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c WordPtr # toConstr :: WordPtr -> Constr # dataTypeOf :: WordPtr -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c WordPtr) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c WordPtr) # gmapT :: (forall b. Data b => b -> b) -> WordPtr -> WordPtr # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WordPtr -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WordPtr -> r # gmapQ :: (forall d. Data d => d -> u) -> WordPtr -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> WordPtr -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> WordPtr -> m WordPtr # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> WordPtr -> m WordPtr # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> WordPtr -> m WordPtr #
Storable WordPtr |
Instance details Defined in Foreign.Ptr Methods sizeOf :: WordPtr -> Int # alignment :: WordPtr -> Int # peekElemOff :: Ptr WordPtr -> Int -> IO WordPtr # pokeElemOff :: Ptr WordPtr -> Int -> WordPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO WordPtr # pokeByteOff :: Ptr b -> Int -> WordPtr -> IO () # peek :: Ptr WordPtr -> IO WordPtr # poke :: Ptr WordPtr -> WordPtr -> IO () #
Bits WordPtr |
Instance details Defined in Foreign.Ptr Methods (.&.) :: WordPtr -> WordPtr -> WordPtr # (.|.) :: WordPtr -> WordPtr -> WordPtr # xor :: WordPtr -> WordPtr -> WordPtr # complement :: WordPtr -> WordPtr # shift :: WordPtr -> Int -> WordPtr # rotate :: WordPtr -> Int -> WordPtr # zeroBits :: WordPtr # bit :: Int -> WordPtr # setBit :: WordPtr -> Int -> WordPtr # clearBit :: WordPtr -> Int -> WordPtr # complementBit :: WordPtr -> Int -> WordPtr # testBit :: WordPtr -> Int -> Bool # bitSizeMaybe :: WordPtr -> Maybe Int # bitSize :: WordPtr -> Int # isSigned :: WordPtr -> Bool # shiftL :: WordPtr -> Int -> WordPtr # unsafeShiftL :: WordPtr -> Int -> WordPtr # shiftR :: WordPtr -> Int -> WordPtr # unsafeShiftR :: WordPtr -> Int -> WordPtr # rotateL :: WordPtr -> Int -> WordPtr # rotateR :: WordPtr -> Int -> WordPtr # popCount :: WordPtr -> Int #
FiniteBits WordPtr |
Instance details Defined in Foreign.Ptr Methods finiteBitSize :: WordPtr -> Int # countLeadingZeros :: WordPtr -> Int # countTrailingZeros :: WordPtr -> Int #
Bounded WordPtr |
Instance details Defined in Foreign.Ptr Methods minBound :: WordPtr # maxBound :: WordPtr #
Enum WordPtr |
Instance details Defined in Foreign.Ptr Methods succ :: WordPtr -> WordPtr # pred :: WordPtr -> WordPtr # toEnum :: Int -> WordPtr # fromEnum :: WordPtr -> Int # enumFrom :: WordPtr -> [WordPtr] # enumFromThen :: WordPtr -> WordPtr -> [WordPtr] # enumFromTo :: WordPtr -> WordPtr -> [WordPtr] # enumFromThenTo :: WordPtr -> WordPtr -> WordPtr -> [WordPtr] #
Ix WordPtr |
Instance details Defined in Foreign.Ptr Methods range :: (WordPtr, WordPtr) -> [WordPtr] # index :: (WordPtr, WordPtr) -> WordPtr -> Int # unsafeIndex :: (WordPtr, WordPtr) -> WordPtr -> Int # inRange :: (WordPtr, WordPtr) -> WordPtr -> Bool # rangeSize :: (WordPtr, WordPtr) -> Int # unsafeRangeSize :: (WordPtr, WordPtr) -> Int #
Num WordPtr |
Instance details Defined in Foreign.Ptr Methods (+) :: WordPtr -> WordPtr -> WordPtr # (-) :: WordPtr -> WordPtr -> WordPtr # (*) :: WordPtr -> WordPtr -> WordPtr # negate :: WordPtr -> WordPtr # abs :: WordPtr -> WordPtr # signum :: WordPtr -> WordPtr # fromInteger :: Integer -> WordPtr #
Read WordPtr |
Instance details Defined in Foreign.Ptr Methods readsPrec :: Int -> ReadS WordPtr # readList :: ReadS [WordPtr] # readPrec :: ReadPrec WordPtr # readListPrec :: ReadPrec [WordPtr] #
Integral WordPtr |
Instance details Defined in Foreign.Ptr Methods quot :: WordPtr -> WordPtr -> WordPtr # rem :: WordPtr -> WordPtr -> WordPtr # div :: WordPtr -> WordPtr -> WordPtr # mod :: WordPtr -> WordPtr -> WordPtr # quotRem :: WordPtr -> WordPtr -> (WordPtr, WordPtr) # divMod :: WordPtr -> WordPtr -> (WordPtr, WordPtr) # toInteger :: WordPtr -> Integer #
Real WordPtr |
Instance details Defined in Foreign.Ptr Methods toRational :: WordPtr -> Rational #
Show WordPtr |
Instance details Defined in Foreign.Ptr Methods showsPrec :: Int -> WordPtr -> ShowS # show :: WordPtr -> String # showList :: [WordPtr] -> ShowS #
Eq WordPtr |
Instance details Defined in Foreign.Ptr Methods (==) :: WordPtr -> WordPtr -> Bool # (/=) :: WordPtr -> WordPtr -> Bool #
Ord WordPtr |
Instance details Defined in Foreign.Ptr Methods compare :: WordPtr -> WordPtr -> Ordering # (<) :: WordPtr -> WordPtr -> Bool # (<=) :: WordPtr -> WordPtr -> Bool # (>) :: WordPtr -> WordPtr -> Bool # (>=) :: WordPtr -> WordPtr -> Bool # max :: WordPtr -> WordPtr -> WordPtr # min :: WordPtr -> WordPtr -> WordPtr #
Hashable WordPtr |
Instance details Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> WordPtr -> Int # hash :: WordPtr -> Int #

ptrToWordPtr :: Ptr a -> WordPtr #

casts a `Ptr` to a `WordPtr`

wordPtrToPtr :: WordPtr -> Ptr a #

casts a `WordPtr` to a `Ptr`

# Unlifted Foreign.ForeignPtr

data ForeignPtr a #

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`.

#### Instances

Instances details

Data a => Data (ForeignPtr a) | Since: base-4.8.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForeignPtr a -> c (ForeignPtr a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ForeignPtr a) # toConstr :: ForeignPtr a -> Constr # dataTypeOf :: ForeignPtr a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ForeignPtr a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ForeignPtr a)) # gmapT :: (forall b. Data b => b -> b) -> ForeignPtr a -> ForeignPtr a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForeignPtr a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForeignPtr a -> r # gmapQ :: (forall d. Data d => d -> u) -> ForeignPtr a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ForeignPtr a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForeignPtr a -> m (ForeignPtr a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignPtr a -> m (ForeignPtr a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignPtr a -> m (ForeignPtr a) #
Show (ForeignPtr a) | Since: base-2.1
Instance details Defined in GHC.ForeignPtr Methods showsPrec :: Int -> ForeignPtr a -> ShowS # show :: ForeignPtr a -> String # showList :: [ForeignPtr a] -> ShowS #
Eq (ForeignPtr a) | Since: base-2.1
Instance details Defined in GHC.ForeignPtr Methods (==) :: ForeignPtr a -> ForeignPtr a -> Bool # (/=) :: ForeignPtr a -> ForeignPtr a -> Bool #
Ord (ForeignPtr a) | Since: base-2.1
Instance details Defined in GHC.ForeignPtr Methods compare :: ForeignPtr a -> ForeignPtr a -> Ordering # (<) :: ForeignPtr a -> ForeignPtr a -> Bool # (<=) :: ForeignPtr a -> ForeignPtr a -> Bool # (>) :: ForeignPtr a -> ForeignPtr a -> Bool # (>=) :: ForeignPtr a -> ForeignPtr a -> Bool # max :: ForeignPtr a -> ForeignPtr a -> ForeignPtr a # min :: ForeignPtr a -> ForeignPtr a -> ForeignPtr a #

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

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.

type FinalizerEnvPtr env a = FunPtr (Ptr env -> Ptr a -> IO ()) #

newForeignPtr :: MonadIO m => FinalizerPtr a -> Ptr a -> m (ForeignPtr a) #

Lifted `newForeignPtr`.

Since: 0.2.5.0

newForeignPtr_ :: MonadIO m => Ptr a -> m (ForeignPtr a) #

Lifted `newForeignPtr_`.

Since: 0.2.5.0

addForeignPtrFinalizer :: MonadIO m => FinalizerPtr a -> ForeignPtr a -> m () #

Lifted `addForeignPtrFinalizer`.

Since: 0.2.5.0

newForeignPtrEnv :: MonadIO m => FinalizerEnvPtr env a -> Ptr env -> Ptr a -> m (ForeignPtr a) #

Lifted `newForeignPtrEnv`.

Since: 0.2.5.0

addForeignPtrFinalizerEnv :: MonadIO m => FinalizerEnvPtr env a -> Ptr env -> ForeignPtr a -> m () #

Lifted `addForeignPtrFinalizerEnv`.

Since: 0.2.5.0

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

Unlifted `withForeignPtr`.

Since: 0.2.5.0

finalizeForeignPtr :: MonadIO m => ForeignPtr a -> m () #

Lifted `finalizeForeignPtr`.

Since: 0.2.5.0

touchForeignPtr :: MonadIO m => ForeignPtr a -> m () #

Lifted `touchForeignPtr`.

Since: 0.2.5.0

castForeignPtr :: ForeignPtr a -> ForeignPtr b #

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

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

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

mallocForeignPtr :: (MonadIO m, Storable a) => m (ForeignPtr a) #

Lifted `mallocForeignPtr`.

Since: 0.2.5.0

mallocForeignPtrBytes :: MonadIO m => Int -> m (ForeignPtr a) #

Lifted `mallocForeignPtrBytes`.

Since: 0.2.5.0

mallocForeignPtrArray :: (MonadIO m, Storable a) => Int -> m (ForeignPtr a) #

Lifted `mallocForeignPtrArray`.

Since: 0.2.5.0

mallocForeignPtrArray0 :: (MonadIO m, Storable a) => Int -> m (ForeignPtr a) #

Lifted `mallocForeignPtrArray0`.

Since: 0.2.5.0

newGHCForeignPtr :: MonadUnliftIO m => Ptr a -> m () -> m (ForeignPtr a) #

Unlifted `newForeignPtr`.

Since: 0.2.5.0

addGHCForeignPtrFinalizer :: MonadUnliftIO m => ForeignPtr a -> m () -> m () #

Unlifted `addForeignPtrFinalizer`.

Since: 0.2.5.0

unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a #

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 #

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.

The `StablePtr` 0 is reserved for representing NULL in foreign code.

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

#### Instances

Instances details

Storable (StablePtr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: StablePtr a -> Int # alignment :: StablePtr a -> Int # peekElemOff :: Ptr (StablePtr a) -> Int -> IO (StablePtr a) # pokeElemOff :: Ptr (StablePtr a) -> Int -> StablePtr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (StablePtr a) # pokeByteOff :: Ptr b -> Int -> StablePtr a -> IO () # peek :: Ptr (StablePtr a) -> IO (StablePtr a) # poke :: Ptr (StablePtr a) -> StablePtr a -> IO () #
Eq (StablePtr a) | Since: base-2.1
Instance details Defined in GHC.Stable Methods (==) :: StablePtr a -> StablePtr a -> Bool # (/=) :: StablePtr a -> StablePtr a -> Bool #

newStablePtr :: MonadIO m => a -> m (StablePtr a) #

Lifted `newStablePtr`.

Since: 0.2.5.0

deRefStablePtr :: MonadIO m => StablePtr a -> m a #

Lifted `deRefStablePtr`.

Since: 0.2.5.0

freeStablePtr :: MonadIO m => StablePtr a -> m () #

Lifted `freeStablePtr`.

Since: 0.2.5.0

castStablePtrToPtr :: StablePtr a -> Ptr () #

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 might 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 #

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 #

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`.

Minimal complete definition

sizeOf, alignment, (peek | peekElemOff | peekByteOff), (poke | pokeElemOff | pokeByteOff)

Methods

sizeOf :: a -> Int #

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

alignment :: a -> Int #

Computes the alignment constraint of the argument. An alignment constraint `x` is fulfilled by any address divisible by `x`. The alignment must be a power of two if this instance is to be used with `alloca` or `allocaArray`. The value of the argument is not used.

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

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

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 #

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

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 #

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

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

#### Instances

Instances details

Storable CBool |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CBool -> Int # alignment :: CBool -> Int # peekElemOff :: Ptr CBool -> Int -> IO CBool # pokeElemOff :: Ptr CBool -> Int -> CBool -> IO () # peekByteOff :: Ptr b -> Int -> IO CBool # pokeByteOff :: Ptr b -> Int -> CBool -> IO () # peek :: Ptr CBool -> IO CBool # poke :: Ptr CBool -> CBool -> IO () #
Storable CChar |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CChar -> Int # alignment :: CChar -> Int # peekElemOff :: Ptr CChar -> Int -> IO CChar # pokeElemOff :: Ptr CChar -> Int -> CChar -> IO () # peekByteOff :: Ptr b -> Int -> IO CChar # pokeByteOff :: Ptr b -> Int -> CChar -> IO () # peek :: Ptr CChar -> IO CChar # poke :: Ptr CChar -> CChar -> IO () #
Storable CClock |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CClock -> Int # alignment :: CClock -> Int # peekElemOff :: Ptr CClock -> Int -> IO CClock # pokeElemOff :: Ptr CClock -> Int -> CClock -> IO () # peekByteOff :: Ptr b -> Int -> IO CClock # pokeByteOff :: Ptr b -> Int -> CClock -> IO () # peek :: Ptr CClock -> IO CClock # poke :: Ptr CClock -> CClock -> IO () #
Storable CDouble |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CDouble -> Int # alignment :: CDouble -> Int # peekElemOff :: Ptr CDouble -> Int -> IO CDouble # pokeElemOff :: Ptr CDouble -> Int -> CDouble -> IO () # peekByteOff :: Ptr b -> Int -> IO CDouble # pokeByteOff :: Ptr b -> Int -> CDouble -> IO () # peek :: Ptr CDouble -> IO CDouble # poke :: Ptr CDouble -> CDouble -> IO () #
Storable CFloat |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CFloat -> Int # alignment :: CFloat -> Int # peekElemOff :: Ptr CFloat -> Int -> IO CFloat # pokeElemOff :: Ptr CFloat -> Int -> CFloat -> IO () # peekByteOff :: Ptr b -> Int -> IO CFloat # pokeByteOff :: Ptr b -> Int -> CFloat -> IO () # peek :: Ptr CFloat -> IO CFloat # poke :: Ptr CFloat -> CFloat -> IO () #
Storable CInt |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CInt -> Int # alignment :: CInt -> Int # peekElemOff :: Ptr CInt -> Int -> IO CInt # pokeElemOff :: Ptr CInt -> Int -> CInt -> IO () # peekByteOff :: Ptr b -> Int -> IO CInt # pokeByteOff :: Ptr b -> Int -> CInt -> IO () # peek :: Ptr CInt -> IO CInt # poke :: Ptr CInt -> CInt -> IO () #
Storable CIntMax |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CIntMax -> Int # alignment :: CIntMax -> Int # peekElemOff :: Ptr CIntMax -> Int -> IO CIntMax # pokeElemOff :: Ptr CIntMax -> Int -> CIntMax -> IO () # peekByteOff :: Ptr b -> Int -> IO CIntMax # pokeByteOff :: Ptr b -> Int -> CIntMax -> IO () # peek :: Ptr CIntMax -> IO CIntMax # poke :: Ptr CIntMax -> CIntMax -> IO () #
Storable CIntPtr |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CIntPtr -> Int # alignment :: CIntPtr -> Int # peekElemOff :: Ptr CIntPtr -> Int -> IO CIntPtr # pokeElemOff :: Ptr CIntPtr -> Int -> CIntPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO CIntPtr # pokeByteOff :: Ptr b -> Int -> CIntPtr -> IO () # peek :: Ptr CIntPtr -> IO CIntPtr # poke :: Ptr CIntPtr -> CIntPtr -> IO () #
Storable CLLong |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CLLong -> Int # alignment :: CLLong -> Int # peekElemOff :: Ptr CLLong -> Int -> IO CLLong # pokeElemOff :: Ptr CLLong -> Int -> CLLong -> IO () # peekByteOff :: Ptr b -> Int -> IO CLLong # pokeByteOff :: Ptr b -> Int -> CLLong -> IO () # peek :: Ptr CLLong -> IO CLLong # poke :: Ptr CLLong -> CLLong -> IO () #
Storable CLong |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CLong -> Int # alignment :: CLong -> Int # peekElemOff :: Ptr CLong -> Int -> IO CLong # pokeElemOff :: Ptr CLong -> Int -> CLong -> IO () # peekByteOff :: Ptr b -> Int -> IO CLong # pokeByteOff :: Ptr b -> Int -> CLong -> IO () # peek :: Ptr CLong -> IO CLong # poke :: Ptr CLong -> CLong -> IO () #
Storable CPtrdiff |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CPtrdiff -> Int # alignment :: CPtrdiff -> Int # peekElemOff :: Ptr CPtrdiff -> Int -> IO CPtrdiff # pokeElemOff :: Ptr CPtrdiff -> Int -> CPtrdiff -> IO () # peekByteOff :: Ptr b -> Int -> IO CPtrdiff # pokeByteOff :: Ptr b -> Int -> CPtrdiff -> IO () # peek :: Ptr CPtrdiff -> IO CPtrdiff # poke :: Ptr CPtrdiff -> CPtrdiff -> IO () #
Storable CSChar |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CSChar -> Int # alignment :: CSChar -> Int # peekElemOff :: Ptr CSChar -> Int -> IO CSChar # pokeElemOff :: Ptr CSChar -> Int -> CSChar -> IO () # peekByteOff :: Ptr b -> Int -> IO CSChar # pokeByteOff :: Ptr b -> Int -> CSChar -> IO () # peek :: Ptr CSChar -> IO CSChar # poke :: Ptr CSChar -> CSChar -> IO () #
Storable CSUSeconds |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CSUSeconds -> Int # alignment :: CSUSeconds -> Int # peekElemOff :: Ptr CSUSeconds -> Int -> IO CSUSeconds # pokeElemOff :: Ptr CSUSeconds -> Int -> CSUSeconds -> IO () # peekByteOff :: Ptr b -> Int -> IO CSUSeconds # pokeByteOff :: Ptr b -> Int -> CSUSeconds -> IO () # peek :: Ptr CSUSeconds -> IO CSUSeconds # poke :: Ptr CSUSeconds -> CSUSeconds -> IO () #
Storable CShort |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CShort -> Int # alignment :: CShort -> Int # peekElemOff :: Ptr CShort -> Int -> IO CShort # pokeElemOff :: Ptr CShort -> Int -> CShort -> IO () # peekByteOff :: Ptr b -> Int -> IO CShort # pokeByteOff :: Ptr b -> Int -> CShort -> IO () # peek :: Ptr CShort -> IO CShort # poke :: Ptr CShort -> CShort -> IO () #
Storable CSigAtomic |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CSigAtomic -> Int # alignment :: CSigAtomic -> Int # peekElemOff :: Ptr CSigAtomic -> Int -> IO CSigAtomic # pokeElemOff :: Ptr CSigAtomic -> Int -> CSigAtomic -> IO () # peekByteOff :: Ptr b -> Int -> IO CSigAtomic # pokeByteOff :: Ptr b -> Int -> CSigAtomic -> IO () # peek :: Ptr CSigAtomic -> IO CSigAtomic # poke :: Ptr CSigAtomic -> CSigAtomic -> IO () #
Storable CSize |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CSize -> Int # alignment :: CSize -> Int # peekElemOff :: Ptr CSize -> Int -> IO CSize # pokeElemOff :: Ptr CSize -> Int -> CSize -> IO () # peekByteOff :: Ptr b -> Int -> IO CSize # pokeByteOff :: Ptr b -> Int -> CSize -> IO () # peek :: Ptr CSize -> IO CSize # poke :: Ptr CSize -> CSize -> IO () #
Storable CTime |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CTime -> Int # alignment :: CTime -> Int # peekElemOff :: Ptr CTime -> Int -> IO CTime # pokeElemOff :: Ptr CTime -> Int -> CTime -> IO () # peekByteOff :: Ptr b -> Int -> IO CTime # pokeByteOff :: Ptr b -> Int -> CTime -> IO () # peek :: Ptr CTime -> IO CTime # poke :: Ptr CTime -> CTime -> IO () #
Storable CUChar |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUChar -> Int # alignment :: CUChar -> Int # peekElemOff :: Ptr CUChar -> Int -> IO CUChar # pokeElemOff :: Ptr CUChar -> Int -> CUChar -> IO () # peekByteOff :: Ptr b -> Int -> IO CUChar # pokeByteOff :: Ptr b -> Int -> CUChar -> IO () # peek :: Ptr CUChar -> IO CUChar # poke :: Ptr CUChar -> CUChar -> IO () #
Storable CUInt |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUInt -> Int # alignment :: CUInt -> Int # peekElemOff :: Ptr CUInt -> Int -> IO CUInt # pokeElemOff :: Ptr CUInt -> Int -> CUInt -> IO () # peekByteOff :: Ptr b -> Int -> IO CUInt # pokeByteOff :: Ptr b -> Int -> CUInt -> IO () # peek :: Ptr CUInt -> IO CUInt # poke :: Ptr CUInt -> CUInt -> IO () #
Storable CUIntMax |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUIntMax -> Int # alignment :: CUIntMax -> Int # peekElemOff :: Ptr CUIntMax -> Int -> IO CUIntMax # pokeElemOff :: Ptr CUIntMax -> Int -> CUIntMax -> IO () # peekByteOff :: Ptr b -> Int -> IO CUIntMax # pokeByteOff :: Ptr b -> Int -> CUIntMax -> IO () # peek :: Ptr CUIntMax -> IO CUIntMax # poke :: Ptr CUIntMax -> CUIntMax -> IO () #
Storable CUIntPtr |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUIntPtr -> Int # alignment :: CUIntPtr -> Int # peekElemOff :: Ptr CUIntPtr -> Int -> IO CUIntPtr # pokeElemOff :: Ptr CUIntPtr -> Int -> CUIntPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO CUIntPtr # pokeByteOff :: Ptr b -> Int -> CUIntPtr -> IO () # peek :: Ptr CUIntPtr -> IO CUIntPtr # poke :: Ptr CUIntPtr -> CUIntPtr -> IO () #
Storable CULLong |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CULLong -> Int # alignment :: CULLong -> Int # peekElemOff :: Ptr CULLong -> Int -> IO CULLong # pokeElemOff :: Ptr CULLong -> Int -> CULLong -> IO () # peekByteOff :: Ptr b -> Int -> IO CULLong # pokeByteOff :: Ptr b -> Int -> CULLong -> IO () # peek :: Ptr CULLong -> IO CULLong # poke :: Ptr CULLong -> CULLong -> IO () #
Storable CULong |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CULong -> Int # alignment :: CULong -> Int # peekElemOff :: Ptr CULong -> Int -> IO CULong # pokeElemOff :: Ptr CULong -> Int -> CULong -> IO () # peekByteOff :: Ptr b -> Int -> IO CULong # pokeByteOff :: Ptr b -> Int -> CULong -> IO () # peek :: Ptr CULong -> IO CULong # poke :: Ptr CULong -> CULong -> IO () #
Storable CUSeconds |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUSeconds -> Int # alignment :: CUSeconds -> Int # peekElemOff :: Ptr CUSeconds -> Int -> IO CUSeconds # pokeElemOff :: Ptr CUSeconds -> Int -> CUSeconds -> IO () # peekByteOff :: Ptr b -> Int -> IO CUSeconds # pokeByteOff :: Ptr b -> Int -> CUSeconds -> IO () # peek :: Ptr CUSeconds -> IO CUSeconds # poke :: Ptr CUSeconds -> CUSeconds -> IO () #
Storable CUShort |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CUShort -> Int # alignment :: CUShort -> Int # peekElemOff :: Ptr CUShort -> Int -> IO CUShort # pokeElemOff :: Ptr CUShort -> Int -> CUShort -> IO () # peekByteOff :: Ptr b -> Int -> IO CUShort # pokeByteOff :: Ptr b -> Int -> CUShort -> IO () # peek :: Ptr CUShort -> IO CUShort # poke :: Ptr CUShort -> CUShort -> IO () #
Storable CWchar |
Instance details Defined in Foreign.C.Types Methods sizeOf :: CWchar -> Int # alignment :: CWchar -> Int # peekElemOff :: Ptr CWchar -> Int -> IO CWchar # pokeElemOff :: Ptr CWchar -> Int -> CWchar -> IO () # peekByteOff :: Ptr b -> Int -> IO CWchar # pokeByteOff :: Ptr b -> Int -> CWchar -> IO () # peek :: Ptr CWchar -> IO CWchar # poke :: Ptr CWchar -> CWchar -> IO () #
Storable IntPtr |
Instance details Defined in Foreign.Ptr Methods sizeOf :: IntPtr -> Int # alignment :: IntPtr -> Int # peekElemOff :: Ptr IntPtr -> Int -> IO IntPtr # pokeElemOff :: Ptr IntPtr -> Int -> IntPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO IntPtr # pokeByteOff :: Ptr b -> Int -> IntPtr -> IO () # peek :: Ptr IntPtr -> IO IntPtr # poke :: Ptr IntPtr -> IntPtr -> IO () #
Storable WordPtr |
Instance details Defined in Foreign.Ptr Methods sizeOf :: WordPtr -> Int # alignment :: WordPtr -> Int # peekElemOff :: Ptr WordPtr -> Int -> IO WordPtr # pokeElemOff :: Ptr WordPtr -> Int -> WordPtr -> IO () # peekByteOff :: Ptr b -> Int -> IO WordPtr # pokeByteOff :: Ptr b -> Int -> WordPtr -> IO () # peek :: Ptr WordPtr -> IO WordPtr # poke :: Ptr WordPtr -> WordPtr -> IO () #
Storable Fingerprint | Since: base-4.4.0.0
Instance details Defined in Foreign.Storable Methods sizeOf :: Fingerprint -> Int # alignment :: Fingerprint -> Int # peekElemOff :: Ptr Fingerprint -> Int -> IO Fingerprint # pokeElemOff :: Ptr Fingerprint -> Int -> Fingerprint -> IO () # peekByteOff :: Ptr b -> Int -> IO Fingerprint # pokeByteOff :: Ptr b -> Int -> Fingerprint -> IO () # peek :: Ptr Fingerprint -> IO Fingerprint # poke :: Ptr Fingerprint -> Fingerprint -> IO () #
Storable Int16 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Int16 -> Int # alignment :: Int16 -> Int # peekElemOff :: Ptr Int16 -> Int -> IO Int16 # pokeElemOff :: Ptr Int16 -> Int -> Int16 -> IO () # peekByteOff :: Ptr b -> Int -> IO Int16 # pokeByteOff :: Ptr b -> Int -> Int16 -> IO () # peek :: Ptr Int16 -> IO Int16 # poke :: Ptr Int16 -> Int16 -> IO () #
Storable Int32 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Int32 -> Int # alignment :: Int32 -> Int # peekElemOff :: Ptr Int32 -> Int -> IO Int32 # pokeElemOff :: Ptr Int32 -> Int -> Int32 -> IO () # peekByteOff :: Ptr b -> Int -> IO Int32 # pokeByteOff :: Ptr b -> Int -> Int32 -> IO () # peek :: Ptr Int32 -> IO Int32 # poke :: Ptr Int32 -> Int32 -> IO () #
Storable Int64 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Int64 -> Int # alignment :: Int64 -> Int # peekElemOff :: Ptr Int64 -> Int -> IO Int64 # pokeElemOff :: Ptr Int64 -> Int -> Int64 -> IO () # peekByteOff :: Ptr b -> Int -> IO Int64 # pokeByteOff :: Ptr b -> Int -> Int64 -> IO () # peek :: Ptr Int64 -> IO Int64 # poke :: Ptr Int64 -> Int64 -> IO () #
Storable Int8 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Int8 -> Int # alignment :: Int8 -> Int # peekElemOff :: Ptr Int8 -> Int -> IO Int8 # pokeElemOff :: Ptr Int8 -> Int -> Int8 -> IO () # peekByteOff :: Ptr b -> Int -> IO Int8 # pokeByteOff :: Ptr b -> Int -> Int8 -> IO () # peek :: Ptr Int8 -> IO Int8 # poke :: Ptr Int8 -> Int8 -> IO () #
Storable IoSubSystem | Since: base-4.9.0.0
Instance details Defined in GHC.RTS.Flags Methods sizeOf :: IoSubSystem -> Int # alignment :: IoSubSystem -> Int # peekElemOff :: Ptr IoSubSystem -> Int -> IO IoSubSystem # pokeElemOff :: Ptr IoSubSystem -> Int -> IoSubSystem -> IO () # peekByteOff :: Ptr b -> Int -> IO IoSubSystem # pokeByteOff :: Ptr b -> Int -> IoSubSystem -> IO () # peek :: Ptr IoSubSystem -> IO IoSubSystem # poke :: Ptr IoSubSystem -> IoSubSystem -> IO () #
Storable Word16 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Word16 -> Int # alignment :: Word16 -> Int # peekElemOff :: Ptr Word16 -> Int -> IO Word16 # pokeElemOff :: Ptr Word16 -> Int -> Word16 -> IO () # peekByteOff :: Ptr b -> Int -> IO Word16 # pokeByteOff :: Ptr b -> Int -> Word16 -> IO () # peek :: Ptr Word16 -> IO Word16 # poke :: Ptr Word16 -> Word16 -> IO () #
Storable Word32 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Word32 -> Int # alignment :: Word32 -> Int # peekElemOff :: Ptr Word32 -> Int -> IO Word32 # pokeElemOff :: Ptr Word32 -> Int -> Word32 -> IO () # peekByteOff :: Ptr b -> Int -> IO Word32 # pokeByteOff :: Ptr b -> Int -> Word32 -> IO () # peek :: Ptr Word32 -> IO Word32 # poke :: Ptr Word32 -> Word32 -> IO () #
Storable Word64 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Word64 -> Int # alignment :: Word64 -> Int # peekElemOff :: Ptr Word64 -> Int -> IO Word64 # pokeElemOff :: Ptr Word64 -> Int -> Word64 -> IO () # peekByteOff :: Ptr b -> Int -> IO Word64 # pokeByteOff :: Ptr b -> Int -> Word64 -> IO () # peek :: Ptr Word64 -> IO Word64 # poke :: Ptr Word64 -> Word64 -> IO () #
Storable Word8 | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Word8 -> Int # alignment :: Word8 -> Int # peekElemOff :: Ptr Word8 -> Int -> IO Word8 # pokeElemOff :: Ptr Word8 -> Int -> Word8 -> IO () # peekByteOff :: Ptr b -> Int -> IO Word8 # pokeByteOff :: Ptr b -> Int -> Word8 -> IO () # peek :: Ptr Word8 -> IO Word8 # poke :: Ptr Word8 -> Word8 -> IO () #
Storable CBlkCnt |
Instance details Defined in System.Posix.Types Methods sizeOf :: CBlkCnt -> Int # alignment :: CBlkCnt -> Int # peekElemOff :: Ptr CBlkCnt -> Int -> IO CBlkCnt # pokeElemOff :: Ptr CBlkCnt -> Int -> CBlkCnt -> IO () # peekByteOff :: Ptr b -> Int -> IO CBlkCnt # pokeByteOff :: Ptr b -> Int -> CBlkCnt -> IO () # peek :: Ptr CBlkCnt -> IO CBlkCnt # poke :: Ptr CBlkCnt -> CBlkCnt -> IO () #
Storable CBlkSize |
Instance details Defined in System.Posix.Types Methods sizeOf :: CBlkSize -> Int # alignment :: CBlkSize -> Int # peekElemOff :: Ptr CBlkSize -> Int -> IO CBlkSize # pokeElemOff :: Ptr CBlkSize -> Int -> CBlkSize -> IO () # peekByteOff :: Ptr b -> Int -> IO CBlkSize # pokeByteOff :: Ptr b -> Int -> CBlkSize -> IO () # peek :: Ptr CBlkSize -> IO CBlkSize # poke :: Ptr CBlkSize -> CBlkSize -> IO () #
Storable CCc |
Instance details Defined in System.Posix.Types Methods sizeOf :: CCc -> Int # alignment :: CCc -> Int # peekElemOff :: Ptr CCc -> Int -> IO CCc # pokeElemOff :: Ptr CCc -> Int -> CCc -> IO () # peekByteOff :: Ptr b -> Int -> IO CCc # pokeByteOff :: Ptr b -> Int -> CCc -> IO () # peek :: Ptr CCc -> IO CCc # poke :: Ptr CCc -> CCc -> IO () #
Storable CClockId |
Instance details Defined in System.Posix.Types Methods sizeOf :: CClockId -> Int # alignment :: CClockId -> Int # peekElemOff :: Ptr CClockId -> Int -> IO CClockId # pokeElemOff :: Ptr CClockId -> Int -> CClockId -> IO () # peekByteOff :: Ptr b -> Int -> IO CClockId # pokeByteOff :: Ptr b -> Int -> CClockId -> IO () # peek :: Ptr CClockId -> IO CClockId # poke :: Ptr CClockId -> CClockId -> IO () #
Storable CDev |
Instance details Defined in System.Posix.Types Methods sizeOf :: CDev -> Int # alignment :: CDev -> Int # peekElemOff :: Ptr CDev -> Int -> IO CDev # pokeElemOff :: Ptr CDev -> Int -> CDev -> IO () # peekByteOff :: Ptr b -> Int -> IO CDev # pokeByteOff :: Ptr b -> Int -> CDev -> IO () # peek :: Ptr CDev -> IO CDev # poke :: Ptr CDev -> CDev -> IO () #
Storable CFsBlkCnt |
Instance details Defined in System.Posix.Types Methods sizeOf :: CFsBlkCnt -> Int # alignment :: CFsBlkCnt -> Int # peekElemOff :: Ptr CFsBlkCnt -> Int -> IO CFsBlkCnt # pokeElemOff :: Ptr CFsBlkCnt -> Int -> CFsBlkCnt -> IO () # peekByteOff :: Ptr b -> Int -> IO CFsBlkCnt # pokeByteOff :: Ptr b -> Int -> CFsBlkCnt -> IO () # peek :: Ptr CFsBlkCnt -> IO CFsBlkCnt # poke :: Ptr CFsBlkCnt -> CFsBlkCnt -> IO () #
Storable CFsFilCnt |
Instance details Defined in System.Posix.Types Methods sizeOf :: CFsFilCnt -> Int # alignment :: CFsFilCnt -> Int # peekElemOff :: Ptr CFsFilCnt -> Int -> IO CFsFilCnt # pokeElemOff :: Ptr CFsFilCnt -> Int -> CFsFilCnt -> IO () # peekByteOff :: Ptr b -> Int -> IO CFsFilCnt # pokeByteOff :: Ptr b -> Int -> CFsFilCnt -> IO () # peek :: Ptr CFsFilCnt -> IO CFsFilCnt # poke :: Ptr CFsFilCnt -> CFsFilCnt -> IO () #
Storable CGid |
Instance details Defined in System.Posix.Types Methods sizeOf :: CGid -> Int # alignment :: CGid -> Int # peekElemOff :: Ptr CGid -> Int -> IO CGid # pokeElemOff :: Ptr CGid -> Int -> CGid -> IO () # peekByteOff :: Ptr b -> Int -> IO CGid # pokeByteOff :: Ptr b -> Int -> CGid -> IO () # peek :: Ptr CGid -> IO CGid # poke :: Ptr CGid -> CGid -> IO () #
Storable CId |
Instance details Defined in System.Posix.Types Methods sizeOf :: CId -> Int # alignment :: CId -> Int # peekElemOff :: Ptr CId -> Int -> IO CId # pokeElemOff :: Ptr CId -> Int -> CId -> IO () # peekByteOff :: Ptr b -> Int -> IO CId # pokeByteOff :: Ptr b -> Int -> CId -> IO () # peek :: Ptr CId -> IO CId # poke :: Ptr CId -> CId -> IO () #
Storable CIno |
Instance details Defined in System.Posix.Types Methods sizeOf :: CIno -> Int # alignment :: CIno -> Int # peekElemOff :: Ptr CIno -> Int -> IO CIno # pokeElemOff :: Ptr CIno -> Int -> CIno -> IO () # peekByteOff :: Ptr b -> Int -> IO CIno # pokeByteOff :: Ptr b -> Int -> CIno -> IO () # peek :: Ptr CIno -> IO CIno # poke :: Ptr CIno -> CIno -> IO () #
Storable CKey |
Instance details Defined in System.Posix.Types Methods sizeOf :: CKey -> Int # alignment :: CKey -> Int # peekElemOff :: Ptr CKey -> Int -> IO CKey # pokeElemOff :: Ptr CKey -> Int -> CKey -> IO () # peekByteOff :: Ptr b -> Int -> IO CKey # pokeByteOff :: Ptr b -> Int -> CKey -> IO () # peek :: Ptr CKey -> IO CKey # poke :: Ptr CKey -> CKey -> IO () #
Storable CMode |
Instance details Defined in System.Posix.Types Methods sizeOf :: CMode -> Int # alignment :: CMode -> Int # peekElemOff :: Ptr CMode -> Int -> IO CMode # pokeElemOff :: Ptr CMode -> Int -> CMode -> IO () # peekByteOff :: Ptr b -> Int -> IO CMode # pokeByteOff :: Ptr b -> Int -> CMode -> IO () # peek :: Ptr CMode -> IO CMode # poke :: Ptr CMode -> CMode -> IO () #
Storable CNfds |
Instance details Defined in System.Posix.Types Methods sizeOf :: CNfds -> Int # alignment :: CNfds -> Int # peekElemOff :: Ptr CNfds -> Int -> IO CNfds # pokeElemOff :: Ptr CNfds -> Int -> CNfds -> IO () # peekByteOff :: Ptr b -> Int -> IO CNfds # pokeByteOff :: Ptr b -> Int -> CNfds -> IO () # peek :: Ptr CNfds -> IO CNfds # poke :: Ptr CNfds -> CNfds -> IO () #
Storable CNlink |
Instance details Defined in System.Posix.Types Methods sizeOf :: CNlink -> Int # alignment :: CNlink -> Int # peekElemOff :: Ptr CNlink -> Int -> IO CNlink # pokeElemOff :: Ptr CNlink -> Int -> CNlink -> IO () # peekByteOff :: Ptr b -> Int -> IO CNlink # pokeByteOff :: Ptr b -> Int -> CNlink -> IO () # peek :: Ptr CNlink -> IO CNlink # poke :: Ptr CNlink -> CNlink -> IO () #
Storable COff |
Instance details Defined in System.Posix.Types Methods sizeOf :: COff -> Int # alignment :: COff -> Int # peekElemOff :: Ptr COff -> Int -> IO COff # pokeElemOff :: Ptr COff -> Int -> COff -> IO () # peekByteOff :: Ptr b -> Int -> IO COff # pokeByteOff :: Ptr b -> Int -> COff -> IO () # peek :: Ptr COff -> IO COff # poke :: Ptr COff -> COff -> IO () #
Storable CPid |
Instance details Defined in System.Posix.Types Methods sizeOf :: CPid -> Int # alignment :: CPid -> Int # peekElemOff :: Ptr CPid -> Int -> IO CPid # pokeElemOff :: Ptr CPid -> Int -> CPid -> IO () # peekByteOff :: Ptr b -> Int -> IO CPid # pokeByteOff :: Ptr b -> Int -> CPid -> IO () # peek :: Ptr CPid -> IO CPid # poke :: Ptr CPid -> CPid -> IO () #
Storable CRLim |
Instance details Defined in System.Posix.Types Methods sizeOf :: CRLim -> Int # alignment :: CRLim -> Int # peekElemOff :: Ptr CRLim -> Int -> IO CRLim # pokeElemOff :: Ptr CRLim -> Int -> CRLim -> IO () # peekByteOff :: Ptr b -> Int -> IO CRLim # pokeByteOff :: Ptr b -> Int -> CRLim -> IO () # peek :: Ptr CRLim -> IO CRLim # poke :: Ptr CRLim -> CRLim -> IO () #
Storable CSocklen |
Instance details Defined in System.Posix.Types Methods sizeOf :: CSocklen -> Int # alignment :: CSocklen -> Int # peekElemOff :: Ptr CSocklen -> Int -> IO CSocklen # pokeElemOff :: Ptr CSocklen -> Int -> CSocklen -> IO () # peekByteOff :: Ptr b -> Int -> IO CSocklen # pokeByteOff :: Ptr b -> Int -> CSocklen -> IO () # peek :: Ptr CSocklen -> IO CSocklen # poke :: Ptr CSocklen -> CSocklen -> IO () #
Storable CSpeed |
Instance details Defined in System.Posix.Types Methods sizeOf :: CSpeed -> Int # alignment :: CSpeed -> Int # peekElemOff :: Ptr CSpeed -> Int -> IO CSpeed # pokeElemOff :: Ptr CSpeed -> Int -> CSpeed -> IO () # peekByteOff :: Ptr b -> Int -> IO CSpeed # pokeByteOff :: Ptr b -> Int -> CSpeed -> IO () # peek :: Ptr CSpeed -> IO CSpeed # poke :: Ptr CSpeed -> CSpeed -> IO () #
Storable CSsize |
Instance details Defined in System.Posix.Types Methods sizeOf :: CSsize -> Int # alignment :: CSsize -> Int # peekElemOff :: Ptr CSsize -> Int -> IO CSsize # pokeElemOff :: Ptr CSsize -> Int -> CSsize -> IO () # peekByteOff :: Ptr b -> Int -> IO CSsize # pokeByteOff :: Ptr b -> Int -> CSsize -> IO () # peek :: Ptr CSsize -> IO CSsize # poke :: Ptr CSsize -> CSsize -> IO () #
Storable CTcflag |
Instance details Defined in System.Posix.Types Methods sizeOf :: CTcflag -> Int # alignment :: CTcflag -> Int # peekElemOff :: Ptr CTcflag -> Int -> IO CTcflag # pokeElemOff :: Ptr CTcflag -> Int -> CTcflag -> IO () # peekByteOff :: Ptr b -> Int -> IO CTcflag # pokeByteOff :: Ptr b -> Int -> CTcflag -> IO () # peek :: Ptr CTcflag -> IO CTcflag # poke :: Ptr CTcflag -> CTcflag -> IO () #
Storable CTimer |
Instance details Defined in System.Posix.Types Methods sizeOf :: CTimer -> Int # alignment :: CTimer -> Int # peekElemOff :: Ptr CTimer -> Int -> IO CTimer # pokeElemOff :: Ptr CTimer -> Int -> CTimer -> IO () # peekByteOff :: Ptr b -> Int -> IO CTimer # pokeByteOff :: Ptr b -> Int -> CTimer -> IO () # peek :: Ptr CTimer -> IO CTimer # poke :: Ptr CTimer -> CTimer -> IO () #
Storable CUid |
Instance details Defined in System.Posix.Types Methods sizeOf :: CUid -> Int # alignment :: CUid -> Int # peekElemOff :: Ptr CUid -> Int -> IO CUid # pokeElemOff :: Ptr CUid -> Int -> CUid -> IO () # peekByteOff :: Ptr b -> Int -> IO CUid # pokeByteOff :: Ptr b -> Int -> CUid -> IO () # peek :: Ptr CUid -> IO CUid # poke :: Ptr CUid -> CUid -> IO () #
Storable Fd |
Instance details Defined in System.Posix.Types Methods sizeOf :: Fd -> Int # alignment :: Fd -> Int # peekElemOff :: Ptr Fd -> Int -> IO Fd # pokeElemOff :: Ptr Fd -> Int -> Fd -> IO () # peekByteOff :: Ptr b -> Int -> IO Fd # pokeByteOff :: Ptr b -> Int -> Fd -> IO () # peek :: Ptr Fd -> IO Fd # poke :: Ptr Fd -> Fd -> IO () #
Storable CAttributes |
Instance details Defined in System.Posix.Files.Common Methods sizeOf :: CAttributes -> Int # alignment :: CAttributes -> Int # peekElemOff :: Ptr CAttributes -> Int -> IO CAttributes # pokeElemOff :: Ptr CAttributes -> Int -> CAttributes -> IO () # peekByteOff :: Ptr b -> Int -> IO CAttributes # pokeByteOff :: Ptr b -> Int -> CAttributes -> IO () # peek :: Ptr CAttributes -> IO CAttributes # poke :: Ptr CAttributes -> CAttributes -> IO () #
Storable CTimeSpec |
Instance details Defined in System.Posix.Files.Common Methods sizeOf :: CTimeSpec -> Int # alignment :: CTimeSpec -> Int # peekElemOff :: Ptr CTimeSpec -> Int -> IO CTimeSpec # pokeElemOff :: Ptr CTimeSpec -> Int -> CTimeSpec -> IO () # peekByteOff :: Ptr b -> Int -> IO CTimeSpec # pokeByteOff :: Ptr b -> Int -> CTimeSpec -> IO () # peek :: Ptr CTimeSpec -> IO CTimeSpec # poke :: Ptr CTimeSpec -> CTimeSpec -> IO () #
Storable CTimeVal |
Instance details Defined in System.Posix.Files.Common Methods sizeOf :: CTimeVal -> Int # alignment :: CTimeVal -> Int # peekElemOff :: Ptr CTimeVal -> Int -> IO CTimeVal # pokeElemOff :: Ptr CTimeVal -> Int -> CTimeVal -> IO () # peekByteOff :: Ptr b -> Int -> IO CTimeVal # pokeByteOff :: Ptr b -> Int -> CTimeVal -> IO () # peek :: Ptr CTimeVal -> IO CTimeVal # poke :: Ptr CTimeVal -> CTimeVal -> IO () #
Storable () | Since: base-4.9.0.0
Instance details Defined in Foreign.Storable Methods sizeOf :: () -> Int # alignment :: () -> Int # peekElemOff :: Ptr () -> Int -> IO () # pokeElemOff :: Ptr () -> Int -> () -> IO () # peekByteOff :: Ptr b -> Int -> IO () # pokeByteOff :: Ptr b -> Int -> () -> IO () # peek :: Ptr () -> IO () # poke :: Ptr () -> () -> IO () #
Storable Bool | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Bool -> Int # alignment :: Bool -> Int # peekElemOff :: Ptr Bool -> Int -> IO Bool # pokeElemOff :: Ptr Bool -> Int -> Bool -> IO () # peekByteOff :: Ptr b -> Int -> IO Bool # pokeByteOff :: Ptr b -> Int -> Bool -> IO () # peek :: Ptr Bool -> IO Bool # poke :: Ptr Bool -> Bool -> IO () #
Storable Char | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Char -> Int # alignment :: Char -> Int # peekElemOff :: Ptr Char -> Int -> IO Char # pokeElemOff :: Ptr Char -> Int -> Char -> IO () # peekByteOff :: Ptr b -> Int -> IO Char # pokeByteOff :: Ptr b -> Int -> Char -> IO () # peek :: Ptr Char -> IO Char # poke :: Ptr Char -> Char -> IO () #
Storable Double | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Double -> Int # alignment :: Double -> Int # peekElemOff :: Ptr Double -> Int -> IO Double # pokeElemOff :: Ptr Double -> Int -> Double -> IO () # peekByteOff :: Ptr b -> Int -> IO Double # pokeByteOff :: Ptr b -> Int -> Double -> IO () # peek :: Ptr Double -> IO Double # poke :: Ptr Double -> Double -> IO () #
Storable Float | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Float -> Int # alignment :: Float -> Int # peekElemOff :: Ptr Float -> Int -> IO Float # pokeElemOff :: Ptr Float -> Int -> Float -> IO () # peekByteOff :: Ptr b -> Int -> IO Float # pokeByteOff :: Ptr b -> Int -> Float -> IO () # peek :: Ptr Float -> IO Float # poke :: Ptr Float -> Float -> IO () #
Storable Int | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Int -> Int # alignment :: Int -> Int # peekElemOff :: Ptr Int -> Int -> IO Int # pokeElemOff :: Ptr Int -> Int -> Int -> IO () # peekByteOff :: Ptr b -> Int -> IO Int # pokeByteOff :: Ptr b -> Int -> Int -> IO () # peek :: Ptr Int -> IO Int # poke :: Ptr Int -> Int -> IO () #
Storable Word | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Word -> Int # alignment :: Word -> Int # peekElemOff :: Ptr Word -> Int -> IO Word # pokeElemOff :: Ptr Word -> Int -> Word -> IO () # peekByteOff :: Ptr b -> Int -> IO Word # pokeByteOff :: Ptr b -> Int -> Word -> IO () # peek :: Ptr Word -> IO Word # poke :: Ptr Word -> Word -> IO () #
Storable a => Storable (Complex a) | Since: base-4.8.0.0
Instance details Defined in Data.Complex Methods sizeOf :: Complex a -> Int # alignment :: Complex a -> Int # peekElemOff :: Ptr (Complex a) -> Int -> IO (Complex a) # pokeElemOff :: Ptr (Complex a) -> Int -> Complex a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Complex a) # pokeByteOff :: Ptr b -> Int -> Complex a -> IO () # peek :: Ptr (Complex a) -> IO (Complex a) # poke :: Ptr (Complex a) -> Complex a -> IO () #
Storable a => Storable (Identity a) | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Identity Methods sizeOf :: Identity a -> Int # alignment :: Identity a -> Int # peekElemOff :: Ptr (Identity a) -> Int -> IO (Identity a) # pokeElemOff :: Ptr (Identity a) -> Int -> Identity a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Identity a) # pokeByteOff :: Ptr b -> Int -> Identity a -> IO () # peek :: Ptr (Identity a) -> IO (Identity a) # poke :: Ptr (Identity a) -> Identity a -> IO () #
Storable a => Storable (Down a) | Since: base-4.14.0.0
Instance details Defined in Data.Ord Methods sizeOf :: Down a -> Int # alignment :: Down a -> Int # peekElemOff :: Ptr (Down a) -> Int -> IO (Down a) # pokeElemOff :: Ptr (Down a) -> Int -> Down a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Down a) # pokeByteOff :: Ptr b -> Int -> Down a -> IO () # peek :: Ptr (Down a) -> IO (Down a) # poke :: Ptr (Down a) -> Down a -> IO () #
Storable (ConstPtr a) |
Instance details Defined in Foreign.Storable Methods sizeOf :: ConstPtr a -> Int # alignment :: ConstPtr a -> Int # peekElemOff :: Ptr (ConstPtr a) -> Int -> IO (ConstPtr a) # pokeElemOff :: Ptr (ConstPtr a) -> Int -> ConstPtr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (ConstPtr a) # pokeByteOff :: Ptr b -> Int -> ConstPtr a -> IO () # peek :: Ptr (ConstPtr a) -> IO (ConstPtr a) # poke :: Ptr (ConstPtr a) -> ConstPtr a -> IO () #
Storable (FunPtr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: FunPtr a -> Int # alignment :: FunPtr a -> Int # peekElemOff :: Ptr (FunPtr a) -> Int -> IO (FunPtr a) # pokeElemOff :: Ptr (FunPtr a) -> Int -> FunPtr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (FunPtr a) # pokeByteOff :: Ptr b -> Int -> FunPtr a -> IO () # peek :: Ptr (FunPtr a) -> IO (FunPtr a) # poke :: Ptr (FunPtr a) -> FunPtr a -> IO () #
Storable (Ptr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Ptr a -> Int # alignment :: Ptr a -> Int # peekElemOff :: Ptr (Ptr a) -> Int -> IO (Ptr a) # pokeElemOff :: Ptr (Ptr a) -> Int -> Ptr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Ptr a) # pokeByteOff :: Ptr b -> Int -> Ptr a -> IO () # peek :: Ptr (Ptr a) -> IO (Ptr a) # poke :: Ptr (Ptr a) -> Ptr a -> IO () #
(Storable a, Integral a) => Storable (Ratio a) | Since: base-4.8.0.0
Instance details Defined in Foreign.Storable Methods sizeOf :: Ratio a -> Int # alignment :: Ratio a -> Int # peekElemOff :: Ptr (Ratio a) -> Int -> IO (Ratio a) # pokeElemOff :: Ptr (Ratio a) -> Int -> Ratio a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Ratio a) # pokeByteOff :: Ptr b -> Int -> Ratio a -> IO () # peek :: Ptr (Ratio a) -> IO (Ratio a) # poke :: Ptr (Ratio a) -> Ratio a -> IO () #
Storable (StablePtr a) | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: StablePtr a -> Int # alignment :: StablePtr a -> Int # peekElemOff :: Ptr (StablePtr a) -> Int -> IO (StablePtr a) # pokeElemOff :: Ptr (StablePtr a) -> Int -> StablePtr a -> IO () # peekByteOff :: Ptr b -> Int -> IO (StablePtr a) # pokeByteOff :: Ptr b -> Int -> StablePtr a -> IO () # peek :: Ptr (StablePtr a) -> IO (StablePtr a) # poke :: Ptr (StablePtr a) -> StablePtr a -> IO () #
Storable a => Storable (Const a b) | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Const Methods sizeOf :: Const a b -> Int # alignment :: Const a b -> Int # peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b) # pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO () # peekByteOff :: Ptr b0 -> Int -> IO (Const a b) # pokeByteOff :: Ptr b0 -> Int -> Const a b -> IO () # peek :: Ptr (Const a b) -> IO (Const a b) # poke :: Ptr (Const a b) -> Const a b -> IO () #

# Unlifted Foreign.Marshal.Alloc

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

Unlifted `alloca`.

Since: 0.2.5.0

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

Unlifted `allocaBytes`.

Since: 0.2.5.0

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

Unlifted `allocaBytesAligned`.

Since: 0.2.5.0

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

Lifted `malloc`.

Since: 0.2.5.0

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

Lifted `mallocBytes`.

Since: 0.2.5.0

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

Lifted `calloc`.

Since: 0.2.5.0

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

Lifted `callocBytes`.

Since: 0.2.5.0

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

Lifted `realloc`.

Since: 0.2.5.0

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

Lifted `reallocBytes`.

Since: 0.2.5.0

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

Lifted `free`.

Since: 0.2.5.0

finalizerFree :: FinalizerPtr a #

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

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

Lifted `mallocArray`.

Since: 0.2.5.0

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

Lifted `mallocArray0`.

Since: 0.2.5.0

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

Unlifted `allocaArray`.

Since: 0.2.5.0

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

Unlifted `allocaArray0`.

Since: 0.2.5.0

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

Lifted `reallocArray`.

Since: 0.2.5.0

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

Lifted `reallocArray0`.

Since: 0.2.5.0

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

Lifted `callocArray`.

Since: 0.2.5.0

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

Lifted `callocArray0`.

Since: 0.2.5.0

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

Lifted `peekArray`.

Since: 0.2.5.0

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

Lifted `peekArray0`.

Since: 0.2.5.0

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

Lifted `pokeArray`.

Since: 0.2.5.0

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

Lifted `pokeArray0`.

Since: 0.2.5.0

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

Lifted `newArray`.

Since: 0.2.5.0

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

Lifted `newArray0`

Since: 0.2.5.0

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

Unlifted `withArray`.

Since: 0.2.5.0

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

Unlifted `withArray0`.

Since: 0.2.5.0

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

Unlifted `withArrayLen`.

Since: 0.2.5.0

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

Unlifted `withArrayLen0`.

Since: 0.2.5.0

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

Lifted `copyArray`.

Since: 0.2.5.0

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

Lifted `moveArray`.

Since: 0.2.5.0

lengthArray0 :: (MonadIO m, Storable a, Eq a) => a -> Ptr a -> m Int #

Lifted `lengthArray0`.

Since: 0.2.5.0

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

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 #

Unlifted `throwIf`.

Since: 0.2.5.0

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

Unlifted `throwIf_`.

Since: 0.2.5.0

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

Unlifted `throwIfNeg`.

Since: 0.2.5.0

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

Unlifted `throwIfNeg_`.

Since: 0.2.5.0

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

Unlifted `throwIfNull`.

Since: 0.2.5.0

# Unlifted Foreign.Marshal.Pool

data Pool #

A memory pool.

newPool :: MonadIO m => m Pool #

Lifted `newPool`.

Since: 0.2.5.0

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

Lifted `freePool`.

Since: 0.2.5.0

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

Unlifted `withPool`.

Since: 0.2.5.0

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

Lifted `pooledMalloc`.

Since: 0.2.5.0

pooledMallocBytes :: MonadIO m => Pool -> Int -> m (Ptr a) #

Lifted `pooledMallocBytes`.

Since: 0.2.5.0

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

Lifted `pooledRealloc`.

Since: 0.2.5.0

pooledReallocBytes :: MonadIO m => Pool -> Ptr a -> Int -> m (Ptr a) #

Lifted `pooledReallocBytes`.

Since: 0.2.5.0

pooledMallocArray :: (MonadIO m, Storable a) => Pool -> Int -> m (Ptr a) #

Lifted `pooledMallocArray`.

Since: 0.2.5.0

pooledMallocArray0 :: (MonadIO m, Storable a) => Pool -> Int -> m (Ptr a) #

Lifted `pooledMallocArray0`.

Since: 0.2.5.0

pooledReallocArray :: (MonadIO m, Storable a) => Pool -> Ptr a -> Int -> m (Ptr a) #

Lifted `pooledReallocArray`.

Since: 0.2.5.0

pooledReallocArray0 :: (MonadIO m, Storable a) => Pool -> Ptr a -> Int -> m (Ptr a) #

Lifted `pooledReallocArray0`.

Since: 0.2.5.0

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

Lifted `pooledNew`.

Since: 0.2.5.0

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

Lifted `pooledNewArray`.

Since: 0.2.5.0

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

Lifted `pooledNewArray0`.

Since: 0.2.5.0

# Unlifted Foreign.Marshal.Utils

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

Unlifted `with`.

Since: 0.2.5.0

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

Lifted `new`.

Since: 0.2.5.0

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

Convert a Haskell `Bool` to its numeric representation

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

Convert a Boolean in numeric representation to a Haskell value

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

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 #

Lifted `maybeWith`.

Since: 0.2.5.0

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

Unlifted `maybePeek`.

Since: 0.2.5.0

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

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

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

Lifted `copyBytes`.

Since: 0.2.5.0

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

Lifted `moveBytes`.

Since: 0.2.5.0

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

Lifted `fillBytes`.

Since: 0.2.5.0