{-# LANGUAGE Safe #-}
{-# LANGUAGE DataKinds #-}
module Data.Connection.Word (
i08w08,
w08w16,
i08w16,
i16w16,
w08w32,
w16w32,
i08w32,
i16w32,
i32w32,
w08w64,
w16w64,
w32w64,
i08w64,
i16w64,
i32w64,
i64w64,
ixxw64,
w08wxx,
w16wxx,
w32wxx,
w64wxx,
i08wxx,
i16wxx,
i32wxx,
i64wxx,
ixxwxx,
w08nat,
w16nat,
w32nat,
w64nat,
wxxnat,
i08nat,
i16nat,
i32nat,
i64nat,
ixxnat,
intnat,
) where
import safe Data.Connection.Conn
import safe Data.Int
import safe Data.Word
import safe Numeric.Natural
i08w08 :: Conn 'L Int8 Word8
i08w08 = unsigned
w08w16 :: Conn 'L Word8 Word16
w08w16 = unsigned
i08w16 :: Conn 'L Int8 Word16
i08w16 = unsigned
i16w16 :: Conn 'L Int16 Word16
i16w16 = unsigned
w08w32 :: Conn 'L Word8 Word32
w08w32 = unsigned
w16w32 :: Conn 'L Word16 Word32
w16w32 = unsigned
i08w32 :: Conn 'L Int8 Word32
i08w32 = unsigned
i16w32 :: Conn 'L Int16 Word32
i16w32 = unsigned
i32w32 :: Conn 'L Int32 Word32
i32w32 = unsigned
w08w64 :: Conn 'L Word8 Word64
w08w64 = unsigned
w16w64 :: Conn 'L Word16 Word64
w16w64 = unsigned
w32w64 :: Conn 'L Word32 Word64
w32w64 = unsigned
i08w64 :: Conn 'L Int8 Word64
i08w64 = unsigned
i16w64 :: Conn 'L Int16 Word64
i16w64 = unsigned
i32w64 :: Conn 'L Int32 Word64
i32w64 = unsigned
i64w64 :: Conn 'L Int64 Word64
i64w64 = unsigned
ixxw64 :: Conn 'L Int Word64
ixxw64 = unsigned
w08wxx :: Conn 'L Word8 Word
w08wxx = unsigned
w16wxx :: Conn 'L Word16 Word
w16wxx = unsigned
w32wxx :: Conn 'L Word32 Word
w32wxx = unsigned
w64wxx :: Conn k Word64 Word
w64wxx = Conn fromIntegral fromIntegral fromIntegral
i08wxx :: Conn 'L Int8 Word
i08wxx = unsigned
i16wxx :: Conn 'L Int16 Word
i16wxx = unsigned
i32wxx :: Conn 'L Int32 Word
i32wxx = unsigned
i64wxx :: Conn 'L Int64 Word
i64wxx = unsigned
ixxwxx :: Conn 'L Int Word
ixxwxx = unsigned
w08nat :: Conn 'L Word8 Natural
w08nat = unsigned
w16nat :: Conn 'L Word16 Natural
w16nat = unsigned
w32nat :: Conn 'L Word32 Natural
w32nat = unsigned
w64nat :: Conn 'L Word64 Natural
w64nat = unsigned
wxxnat :: Conn 'L Word Natural
wxxnat = unsigned
i08nat :: Conn 'L Int8 Natural
i08nat = unsigned
i16nat :: Conn 'L Int16 Natural
i16nat = unsigned
i32nat :: Conn 'L Int32 Natural
i32nat = unsigned
i64nat :: Conn 'L Int64 Natural
i64nat = unsigned
ixxnat :: Conn 'L Int Natural
ixxnat = unsigned
intnat :: Conn 'L Integer Natural
intnat = ConnL (fromIntegral . max 0) fromIntegral
unsigned :: (Bounded a, Integral a, Integral b) => Conn 'L a b
unsigned = ConnL f g
where
f = fromIntegral . max 0
g = fromIntegral . min (f maxBound)