wkt-geom-0.0.1: src/Data/Internal/Wkb/Endian.hs
module Data.Internal.Wkb.Endian
( EndianType (..)
, endianType
, fourBytes
, doubleBytes
) where
import qualified Control.Monad as Monad
import qualified Data.Binary.Get as BinaryGet
import qualified Data.Word as Word
data EndianType = LittleEndian | BigEndian deriving (Show, Eq)
endianType :: BinaryGet.Get EndianType
endianType = do
byte <- BinaryGet.getWord8
case byte of
0 ->
pure BigEndian
1 ->
pure LittleEndian
_ ->
Monad.fail "Invalid EndianType"
fourBytes :: EndianType -> BinaryGet.Get Word.Word32
fourBytes et =
case et of
LittleEndian ->
BinaryGet.getWord32le
BigEndian ->
BinaryGet.getWord32be
doubleBytes :: EndianType -> BinaryGet.Get Double
doubleBytes et =
case et of
LittleEndian ->
BinaryGet.getDoublele
BigEndian ->
BinaryGet.getDoublebe