ptr-poker-0.1.3: src/library/PtrPoker/IO/Prim.hs
{-# LANGUAGE CPP #-}
module PtrPoker.IO.Prim where
import PtrPoker.Prelude
{-# INLINE pokeStorable #-}
pokeStorable :: (Storable a) => Ptr Word8 -> a -> IO ()
pokeStorable ptr value =
{-# SCC "pokeStorable" #-}
poke (castPtr ptr) value
{-# INLINE pokeWord8 #-}
pokeWord8 :: Ptr Word8 -> Word8 -> IO ()
pokeWord8 ptr value =
{-# SCC "pokeWord8" #-}
poke ptr value
{-# INLINE pokeWord8Off #-}
pokeWord8Off :: Ptr Word8 -> Int -> Word8 -> IO ()
pokeWord8Off ptr off value =
{-# SCC "pokeWord8Off" #-}
pokeByteOff ptr off value
{-# INLINE pokeBEWord16 #-}
pokeBEWord16 :: Ptr Word8 -> Word16 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeBEWord16 =
{-# SCC "pokeBEWord16" #-}
pokeStorable
#else
pokeBEWord16 ptr =
{-# SCC "pokeBEWord16" #-}
pokeStorable ptr . byteSwap16
#endif
{-# INLINE pokeBEWord32 #-}
pokeBEWord32 :: Ptr Word8 -> Word32 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeBEWord32 =
{-# SCC "pokeBEWord32" #-}
pokeStorable
#else
pokeBEWord32 ptr =
{-# SCC "pokeBEWord32" #-}
pokeStorable ptr . byteSwap32
#endif
{-# INLINE pokeBEWord64 #-}
pokeBEWord64 :: Ptr Word8 -> Word64 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeBEWord64 =
{-# SCC "pokeBEWord64" #-}
pokeStorable
#else
pokeBEWord64 ptr =
{-# SCC "pokeBEWord64" #-}
pokeStorable ptr . byteSwap64
#endif
{-# INLINE pokeLEWord16 #-}
pokeLEWord16 :: Ptr Word8 -> Word16 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeLEWord16 ptr =
{-# SCC "pokeLEWord16" #-}
pokeStorable ptr . byteSwap16
#else
pokeLEWord16 =
{-# SCC "pokeLEWord16" #-}
pokeStorable
#endif
{-# INLINE pokeLEWord32 #-}
pokeLEWord32 :: Ptr Word8 -> Word32 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeLEWord32 ptr =
{-# SCC "pokeLEWord32" #-}
pokeStorable ptr . byteSwap32
#else
pokeLEWord32 =
{-# SCC "pokeLEWord32" #-}
pokeStorable
#endif
{-# INLINE pokeLEWord64 #-}
pokeLEWord64 :: Ptr Word8 -> Word64 -> IO ()
#ifdef WORDS_BIGENDIAN
pokeLEWord64 ptr =
{-# SCC "pokeLEWord64" #-}
pokeStorable ptr . byteSwap64
#else
pokeLEWord64 =
{-# SCC "pokeLEWord64" #-}
pokeStorable
#endif