Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Foreign.Ptr.Conventions
Description
various common data-passing conventions
Synopsis
- class WrappedPtr p where
- wrapPtr :: Ptr a -> p a
- unwrapPtr :: p a -> Ptr a
- nullWrappedPtr :: p a
- castWrappedPtr :: p a -> p b
- newtype In a = In (Ptr a)
- newtype InArray a = InArray (Ptr a)
- withIn :: (Storable a, MonadBaseControl IO m) => a -> (In a -> m b) -> m b
- withInList :: (Storable a, MonadBaseControl IO m) => [a] -> (InArray a -> m b) -> m b
- withInVector :: (Storable a, MonadBaseControl IO m) => Vector a -> (InArray a -> m b) -> m b
- withInMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (InArray a -> m b) -> m b
- newtype Out a = Out (Ptr a)
- newtype OutArray a = OutArray (Ptr a)
- withOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m b) -> m (a, b)
- withMaybeOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m Bool) -> m (Maybe a)
- withOut_ :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m b) -> m a
- withOutMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (Int -> OutArray a -> m b) -> m b
- withOutVector :: (Storable a, MonadBaseControl IO m, MonadIO m) => Int -> (OutArray a -> m b) -> m (Vector a, b)
- withOutVector_ :: Storable a => Int -> (OutArray a -> IO b) -> IO (Vector a)
- withOutVector' :: (Storable a, Integral b) => Int -> (OutArray a -> IO b) -> IO (Vector a)
- withOutList :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m ([a], b)
- withOutList_ :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m [a]
- withOutList' :: (Storable a, MonadIO m) => Int -> (OutArray a -> m Int) -> m ([a], Int)
- withOutList0 :: (Storable a, Eq a, MonadIO m) => a -> Int -> (OutArray a -> m b) -> m ([a], b)
- withOutByteString :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString
- withOutByteString' :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString
- newtype InOut a = InOut (Ptr a)
- newtype InOutArray a = InOutArray (Ptr a)
- withInOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m (a, b)
- withInOut_ :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m a
- withInOutList :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m (Int, b)) -> m ([a], b)
- withInOutList_ :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m Int) -> m [a]
Documentation
class WrappedPtr p where Source #
Methods
wrapPtr :: Ptr a -> p a Source #
unwrapPtr :: p a -> Ptr a Source #
nullWrappedPtr :: p a Source #
castWrappedPtr :: p a -> p b Source #
Instances
WrappedPtr Ptr Source # | |
Defined in Foreign.Ptr.Conventions | |
WrappedPtr In Source # | |
WrappedPtr InArray Source # | |
WrappedPtr InOut Source # | |
WrappedPtr InOutArray Source # | |
Defined in Foreign.Ptr.Conventions Methods wrapPtr :: Ptr a -> InOutArray a Source # unwrapPtr :: InOutArray a -> Ptr a Source # nullWrappedPtr :: InOutArray a Source # castWrappedPtr :: InOutArray a -> InOutArray b Source # | |
WrappedPtr Out Source # | |
WrappedPtr OutArray Source # | |
Input pointers
In by-ref parameter; memory is allocated and freed by caller
Constructors
In (Ptr a) |
Instances
WrappedPtr In Source # | |
Storable (In a) Source # | |
Defined in Foreign.Ptr.Conventions Methods peekElemOff :: Ptr (In a) -> Int -> IO (In a) pokeElemOff :: Ptr (In a) -> Int -> In a -> IO () peekByteOff :: Ptr b -> Int -> IO (In a) pokeByteOff :: Ptr b -> Int -> In a -> IO () | |
Show (In a) Source # | |
Eq (In a) Source # | |
Ord (In a) Source # | |
In by-ref array; memory is allocated and freed by caller
Constructors
InArray (Ptr a) |
Instances
WrappedPtr InArray Source # | |
Storable (InArray a) Source # | |
Defined in Foreign.Ptr.Conventions Methods peekElemOff :: Ptr (InArray a) -> Int -> IO (InArray a) pokeElemOff :: Ptr (InArray a) -> Int -> InArray a -> IO () peekByteOff :: Ptr b -> Int -> IO (InArray a) pokeByteOff :: Ptr b -> Int -> InArray a -> IO () | |
Show (InArray a) Source # | |
Eq (InArray a) Source # | |
Ord (InArray a) Source # | |
Defined in Foreign.Ptr.Conventions |
withInList :: (Storable a, MonadBaseControl IO m) => [a] -> (InArray a -> m b) -> m b Source #
withInVector :: (Storable a, MonadBaseControl IO m) => Vector a -> (InArray a -> m b) -> m b Source #
withInMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (InArray a -> m b) -> m b Source #
Output pointers
Out by-ref parameter; memory is allocated and freed by caller
Constructors
Out (Ptr a) |
Instances
WrappedPtr Out Source # | |
Storable (Out a) Source # | |
Defined in Foreign.Ptr.Conventions Methods peekElemOff :: Ptr (Out a) -> Int -> IO (Out a) pokeElemOff :: Ptr (Out a) -> Int -> Out a -> IO () peekByteOff :: Ptr b -> Int -> IO (Out a) pokeByteOff :: Ptr b -> Int -> Out a -> IO () | |
Show (Out a) Source # | |
Eq (Out a) Source # | |
Ord (Out a) Source # | |
Out by-ref array; length is specified by caller, memory is allocated and freed by caller
Constructors
OutArray (Ptr a) |
Instances
WrappedPtr OutArray Source # | |
Storable (OutArray a) Source # | |
Defined in Foreign.Ptr.Conventions Methods alignment :: OutArray a -> Int peekElemOff :: Ptr (OutArray a) -> Int -> IO (OutArray a) pokeElemOff :: Ptr (OutArray a) -> Int -> OutArray a -> IO () peekByteOff :: Ptr b -> Int -> IO (OutArray a) pokeByteOff :: Ptr b -> Int -> OutArray a -> IO () | |
Show (OutArray a) Source # | |
Eq (OutArray a) Source # | |
Ord (OutArray a) Source # | |
withMaybeOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m Bool) -> m (Maybe a) Source #
withOutMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (Int -> OutArray a -> m b) -> m b Source #
withOutVector :: (Storable a, MonadBaseControl IO m, MonadIO m) => Int -> (OutArray a -> m b) -> m (Vector a, b) Source #
withOutVector_ :: Storable a => Int -> (OutArray a -> IO b) -> IO (Vector a) Source #
withOutVector' :: (Storable a, Integral b) => Int -> (OutArray a -> IO b) -> IO (Vector a) Source #
withOutList :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m ([a], b) Source #
withOutList_ :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m [a] Source #
withOutList' :: (Storable a, MonadIO m) => Int -> (OutArray a -> m Int) -> m ([a], Int) Source #
withOutList0 :: (Storable a, Eq a, MonadIO m) => a -> Int -> (OutArray a -> m b) -> m ([a], b) Source #
withOutList0 zero n f
: allocate an array large enough to hold n
elements,
plus one extra spot for a terminator. Calls f
with that buffer, which is
expected to fill it with up to n
elements, followed by zero
. The
elements are then read out into a list.
withOutByteString :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString Source #
Get a ByteString
from a function using the common "buffer and size in,
bytes written out" convention.
Calls the function twice; once with a null pointer to discover the length needed and once more to actually read out the string.
withOutByteString' :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString Source #
Variant of withOutByteString which expects the discovered length to be one byte less than the required buffer size. As required for H5Fget_name
Bidirectional pointers
In-out parameter. Memory is allocated and freed by caller.
Constructors
InOut (Ptr a) |
Instances
WrappedPtr InOut Source # | |
Storable (InOut a) Source # | |
Defined in Foreign.Ptr.Conventions Methods peekElemOff :: Ptr (InOut a) -> Int -> IO (InOut a) pokeElemOff :: Ptr (InOut a) -> Int -> InOut a -> IO () peekByteOff :: Ptr b -> Int -> IO (InOut a) pokeByteOff :: Ptr b -> Int -> InOut a -> IO () | |
Show (InOut a) Source # | |
Eq (InOut a) Source # | |
Ord (InOut a) Source # | |
newtype InOutArray a Source #
Constructors
InOutArray (Ptr a) |
Instances
withInOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m (a, b) Source #
withInOut_ :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m a Source #
withInOutList :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m (Int, b)) -> m ([a], b) Source #
withInOutList_ :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m Int) -> m [a] Source #