module Foreign.Storable.Newtype where
import Foreign.Ptr (Ptr, castPtr, )
import Foreign.Storable (Storable, )
import qualified Foreign.Storable as Store
sizeOf :: Storable core => (wrapper -> core) -> wrapper -> Int
sizeOf :: forall core wrapper.
Storable core =>
(wrapper -> core) -> wrapper -> Int
sizeOf wrapper -> core
unwrap = forall a. Storable a => a -> Int
Store.sizeOf forall b c a. (b -> c) -> (a -> b) -> a -> c
. wrapper -> core
unwrap
alignment :: Storable core => (wrapper -> core) -> wrapper -> Int
alignment :: forall core wrapper.
Storable core =>
(wrapper -> core) -> wrapper -> Int
alignment wrapper -> core
unwrap = forall a. Storable a => a -> Int
Store.alignment forall b c a. (b -> c) -> (a -> b) -> a -> c
. wrapper -> core
unwrap
peek :: Storable core =>
(core -> wrapper) -> Ptr wrapper -> IO wrapper
peek :: forall core wrapper.
Storable core =>
(core -> wrapper) -> Ptr wrapper -> IO wrapper
peek core -> wrapper
wrap =
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap core -> wrapper
wrap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Storable a => Ptr a -> IO a
Store.peek forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Ptr a -> Ptr b
castPtr
poke :: Storable core =>
(wrapper -> core) -> Ptr wrapper -> wrapper -> IO ()
poke :: forall core wrapper.
Storable core =>
(wrapper -> core) -> Ptr wrapper -> wrapper -> IO ()
poke wrapper -> core
unwrap Ptr wrapper
ptr =
forall a. Storable a => Ptr a -> a -> IO ()
Store.poke (forall a b. Ptr a -> Ptr b
castPtr Ptr wrapper
ptr) forall b c a. (b -> c) -> (a -> b) -> a -> c
. wrapper -> core
unwrap