{-# LANGUAGE BangPatterns
, UnboxedTuples #-}
module Parser.Lathe.Numeric.FixedWidth
( int8HexFixed
, int16HexFixed
, int32HexFixed
, int64HexFixed
, word8HexFixed
, word16HexFixed
, word32HexFixed
, word64HexFixed
, floatHexFixed
, doubleHexFixed
) where
import Parser.Lathe.Internal
import Parser.Lathe.Numeric.FixedWidth.Internal
import Data.Int
import Data.Word
{-# INLINE int8HexFixed #-}
int8HexFixed
:: e
-> e
-> Parser e Int8
int8HexFixed :: forall e. e -> e -> Parser e Int8
int8HexFixed e
e = Int -> (ByteString -> (# Res e Int8 #)) -> e -> Parser e Int8
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
2 (e -> ByteString -> (# Res e Int8 #)
forall e. e -> ByteString -> (# Res e Int8 #)
i8HexFixed e
e)
{-# INLINE word8HexFixed #-}
word8HexFixed
:: e
-> e
-> Parser e Word8
word8HexFixed :: forall e. e -> e -> Parser e Word8
word8HexFixed e
e = Int -> (ByteString -> (# Res e Word8 #)) -> e -> Parser e Word8
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
2 (e -> ByteString -> (# Res e Word8 #)
forall e. e -> ByteString -> (# Res e Word8 #)
w8HexFixed e
e)
{-# INLINE int16HexFixed #-}
int16HexFixed
:: e
-> e
-> Parser e Int16
int16HexFixed :: forall e. e -> e -> Parser e Int16
int16HexFixed e
e = Int -> (ByteString -> (# Res e Int16 #)) -> e -> Parser e Int16
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
4 (e -> ByteString -> (# Res e Int16 #)
forall e. e -> ByteString -> (# Res e Int16 #)
i16HexFixed e
e)
{-# INLINE word16HexFixed #-}
word16HexFixed
:: e
-> e
-> Parser e Word16
word16HexFixed :: forall e. e -> e -> Parser e Word16
word16HexFixed e
e = Int -> (ByteString -> (# Res e Word16 #)) -> e -> Parser e Word16
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
4 (e -> ByteString -> (# Res e Word16 #)
forall e. e -> ByteString -> (# Res e Word16 #)
w16HexFixed e
e)
{-# INLINE int32HexFixed #-}
int32HexFixed
:: e
-> e
-> Parser e Int32
int32HexFixed :: forall e. e -> e -> Parser e Int32
int32HexFixed e
e = Int -> (ByteString -> (# Res e Int32 #)) -> e -> Parser e Int32
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
8 (e -> ByteString -> (# Res e Int32 #)
forall e. e -> ByteString -> (# Res e Int32 #)
i32HexFixed e
e)
{-# INLINE word32HexFixed #-}
word32HexFixed
:: e
-> e
-> Parser e Word32
word32HexFixed :: forall e. e -> e -> Parser e Word32
word32HexFixed e
e = Int -> (ByteString -> (# Res e Word32 #)) -> e -> Parser e Word32
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
8 (e -> ByteString -> (# Res e Word32 #)
forall e. e -> ByteString -> (# Res e Word32 #)
w32HexFixed e
e)
{-# INLINE floatHexFixed #-}
floatHexFixed
:: e
-> e
-> Parser e Float
floatHexFixed :: forall e. e -> e -> Parser e Float
floatHexFixed e
e = Int -> (ByteString -> (# Res e Float #)) -> e -> Parser e Float
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
8 (e -> ByteString -> (# Res e Float #)
forall e. e -> ByteString -> (# Res e Float #)
f32HexFixed e
e)
{-# INLINE int64HexFixed #-}
int64HexFixed
:: e
-> e
-> Parser e Int64
int64HexFixed :: forall e. e -> e -> Parser e Int64
int64HexFixed e
e = Int -> (ByteString -> (# Res e Int64 #)) -> e -> Parser e Int64
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
16 (e -> ByteString -> (# Res e Int64 #)
forall e. e -> ByteString -> (# Res e Int64 #)
i64HexFixed e
e)
{-# INLINE word64HexFixed #-}
word64HexFixed
:: e
-> e
-> Parser e Word64
word64HexFixed :: forall e. e -> e -> Parser e Word64
word64HexFixed e
e = Int -> (ByteString -> (# Res e Word64 #)) -> e -> Parser e Word64
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
16 (e -> ByteString -> (# Res e Word64 #)
forall e. e -> ByteString -> (# Res e Word64 #)
w64HexFixed e
e)
{-# INLINE doubleHexFixed #-}
doubleHexFixed
:: e
-> e
-> Parser e Double
doubleHexFixed :: forall e. e -> e -> Parser e Double
doubleHexFixed e
e = Int -> (ByteString -> (# Res e Double #)) -> e -> Parser e Double
forall e a. Int -> (ByteString -> (# Res e a #)) -> e -> Parser e a
unsafeRead Int
16 (e -> ByteString -> (# Res e Double #)
forall e. e -> ByteString -> (# Res e Double #)
f64HexFixed e
e)