bytezap-1.0.0: src/Bytezap/Poke/Derived/Endian.hs
module Bytezap.Poke.Derived.Endian where
import Bytezap.Poke
import Data.Word
import Data.Int
import Raehik.Compat.Data.Int.ByteSwap
import GHC.ByteOrder ( ByteOrder(BigEndian, LittleEndian), targetByteOrder )
w16le, w16be :: Word16 -> Poke s
w16le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwap16
w16be = case targetByteOrder of LittleEndian -> prim . byteSwap16
BigEndian -> prim
w32le, w32be :: Word32 -> Poke s
w32le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwap32
w32be = case targetByteOrder of LittleEndian -> prim . byteSwap32
BigEndian -> prim
w64le, w64be :: Word64 -> Poke s
w64le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwap64
w64be = case targetByteOrder of LittleEndian -> prim . byteSwap64
BigEndian -> prim
i16le, i16be :: Int16 -> Poke s
i16le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwapI16
i16be = case targetByteOrder of LittleEndian -> prim . byteSwapI16
BigEndian -> prim
i32le, i32be :: Int32 -> Poke s
i32le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwapI32
i32be = case targetByteOrder of LittleEndian -> prim . byteSwapI32
BigEndian -> prim
i64le, i64be :: Int64 -> Poke s
i64le = case targetByteOrder of LittleEndian -> prim
BigEndian -> prim . byteSwapI64
i64be = case targetByteOrder of LittleEndian -> prim . byteSwapI64
BigEndian -> prim