Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type ForeignContext a = ReaderT (Ptr a) IO
- type ForeignCodec a = ForeignCodec' a a
- type ForeignCodec' p a = Codec (ForeignContext p) (ForeignContext p) a
- peekWith :: ForeignCodec' p a -> Ptr p -> IO a
- pokeWith :: ForeignCodec' p a -> Ptr p -> a -> IO ()
- storable :: Storable a => ForeignCodec a
- field :: Int -> ForeignCodec' f a -> ForeignCodec' p a
- cast :: (Integral c, Storable c, Integral a) => ForeignCodec' c a
- cBool :: Integral c => ForeignCodec' c Bool
- codecFor :: c -> ForeignCodec' c a -> ForeignCodec' c a
Foreign codecs
type ForeignContext a = ReaderT (Ptr a) IO Source
type ForeignCodec a = ForeignCodec' a a Source
A foreign codec for a
given a pointer to itself.
Use def
from Default
to get a codec that uses a Storable
instance,
type ForeignCodec' p a = Codec (ForeignContext p) (ForeignContext p) a Source
A foreign codec for a
given a pointer to p
.
peekWith :: ForeignCodec' p a -> Ptr p -> IO a Source
Peek a value using a ForeignCodec'
.
pokeWith :: ForeignCodec' p a -> Ptr p -> a -> IO () Source
Poke a value using a ForeignCodec'
.
storable :: Storable a => ForeignCodec a Source
A ForeignCodec
for any Storable
type.
field :: Int -> ForeignCodec' f a -> ForeignCodec' p a Source
A codec for a field of a foreign structure, given its byte offset and a sub-codec.
You can get an offset easily using {#offset struct_type, field}
with hsc2hs
.
codecFor :: c -> ForeignCodec' c a -> ForeignCodec' c a Source
Restrict the pointer type of a given codec. Utility function for the numField
macro.