module Data.Endian (
EndianSensitive(),
BigEndian(),
LittleEndian(),
toBigEndian,
fromBigEndian,
toLittleEndian,
fromLittleEndian
) where
import Data.Endian.Internal
import Data.Endian.Wrap
#include <HsBaseConfig.h>
toBigEndian ∷ EndianSensitive α ⇒ α → BigEndian α
fromBigEndian ∷ EndianSensitive α ⇒ BigEndian α → α
toLittleEndian ∷ EndianSensitive α ⇒ α → LittleEndian α
fromLittleEndian ∷ EndianSensitive α ⇒ LittleEndian α → α
beHelp ∷ EndianSensitive α ⇒ α → α
leHelp ∷ EndianSensitive α ⇒ α → α
#ifdef WORDS_BIGENDIAN
beHelp = id
leHelp = swapEndian
#else
beHelp = swapEndian
leHelp = id
#endif
toBigEndian = BE . beHelp
toLittleEndian = LE . leHelp
fromBigEndian (BE a) = beHelp a
fromLittleEndian (LE a) = leHelp a