binrep-0.1.0: Encode binary representations via types.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Binrep.Types.Ints

Synopsis

Documentation

newtype I (sign :: ISign) (size :: ISize) (e :: Endianness) Source #

Wrapper type grouping machine integers (sign, size) along with an explicit endianness.

Constructors

I 

Fields

Instances

Instances details
FromJSON (IRep sign size) => FromJSON (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

parseJSON :: Value -> Parser (I sign size e) #

parseJSONList :: Value -> Parser [I sign size e] #

ToJSON (IRep sign size) => ToJSON (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toJSON :: I sign size e -> Value #

toEncoding :: I sign size e -> Encoding #

toJSONList :: [I sign size e] -> Value #

toEncodingList :: [I sign size e] -> Encoding #

Bounded (IRep sign size) => Bounded (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

minBound :: I sign size e #

maxBound :: I sign size e #

Enum (IRep sign size) => Enum (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

succ :: I sign size e -> I sign size e #

pred :: I sign size e -> I sign size e #

toEnum :: Int -> I sign size e #

fromEnum :: I sign size e -> Int #

enumFrom :: I sign size e -> [I sign size e] #

enumFromThen :: I sign size e -> I sign size e -> [I sign size e] #

enumFromTo :: I sign size e -> I sign size e -> [I sign size e] #

enumFromThenTo :: I sign size e -> I sign size e -> I sign size e -> [I sign size e] #

Generic (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Associated Types

type Rep (I sign size e) :: Type -> Type #

Methods

from :: I sign size e -> Rep (I sign size e) x #

to :: Rep (I sign size e) x -> I sign size e #

Num (IRep sign size) => Num (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

(+) :: I sign size e -> I sign size e -> I sign size e #

(-) :: I sign size e -> I sign size e -> I sign size e #

(*) :: I sign size e -> I sign size e -> I sign size e #

negate :: I sign size e -> I sign size e #

abs :: I sign size e -> I sign size e #

signum :: I sign size e -> I sign size e #

fromInteger :: Integer -> I sign size e #

Integral (IRep sign size) => Integral (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

quot :: I sign size e -> I sign size e -> I sign size e #

rem :: I sign size e -> I sign size e -> I sign size e #

div :: I sign size e -> I sign size e -> I sign size e #

mod :: I sign size e -> I sign size e -> I sign size e #

quotRem :: I sign size e -> I sign size e -> (I sign size e, I sign size e) #

divMod :: I sign size e -> I sign size e -> (I sign size e, I sign size e) #

toInteger :: I sign size e -> Integer #

Real (IRep sign size) => Real (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toRational :: I sign size e -> Rational #

Show (IRep sign size) => Show (I sign size e) Source #

Lots of deriving boilerplate due to the type family usage.

Instance details

Defined in Binrep.Types.Ints

Methods

showsPrec :: Int -> I sign size e -> ShowS #

show :: I sign size e -> String #

showList :: [I sign size e] -> ShowS #

ByteLen (I s 'I1 e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

blen :: I s 'I1 e -> Natural Source #

ByteLen (I s 'I2 e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

blen :: I s 'I2 e -> Natural Source #

ByteLen (I s 'I4 e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

blen :: I s 'I4 e -> Natural Source #

ByteLen (I s 'I8 e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

blen :: I s 'I8 e -> Natural Source #

BinaryCodec (I 'S 'I1 e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I1 e) Source #

fromBin :: Get (I 'S 'I1 e) Source #

BinaryCodec (I 'S 'I2 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I2 'BE) Source #

fromBin :: Get (I 'S 'I2 'BE) Source #

BinaryCodec (I 'S 'I2 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I2 'LE) Source #

fromBin :: Get (I 'S 'I2 'LE) Source #

BinaryCodec (I 'S 'I4 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I4 'BE) Source #

fromBin :: Get (I 'S 'I4 'BE) Source #

BinaryCodec (I 'S 'I4 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I4 'LE) Source #

fromBin :: Get (I 'S 'I4 'LE) Source #

BinaryCodec (I 'S 'I8 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I8 'BE) Source #

fromBin :: Get (I 'S 'I8 'BE) Source #

BinaryCodec (I 'S 'I8 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'S 'I8 'LE) Source #

fromBin :: Get (I 'S 'I8 'LE) Source #

BinaryCodec (I 'U 'I1 e) Source #

Endianness doesn't apply for single-byte machine integers.

Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I1 e) Source #

fromBin :: Get (I 'U 'I1 e) Source #

BinaryCodec (I 'U 'I2 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I2 'BE) Source #

fromBin :: Get (I 'U 'I2 'BE) Source #

BinaryCodec (I 'U 'I2 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I2 'LE) Source #

fromBin :: Get (I 'U 'I2 'LE) Source #

BinaryCodec (I 'U 'I4 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I4 'BE) Source #

fromBin :: Get (I 'U 'I4 'BE) Source #

BinaryCodec (I 'U 'I4 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I4 'LE) Source #

fromBin :: Get (I 'U 'I4 'LE) Source #

BinaryCodec (I 'U 'I8 'BE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I8 'BE) Source #

fromBin :: Get (I 'U 'I8 'BE) Source #

BinaryCodec (I 'U 'I8 'LE) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

toBin :: Putter (I 'U 'I8 'LE) Source #

fromBin :: Get (I 'U 'I8 'LE) Source #

Eq (IRep sign size) => Eq (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

(==) :: I sign size e -> I sign size e -> Bool #

(/=) :: I sign size e -> I sign size e -> Bool #

Ord (IRep sign size) => Ord (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

Methods

compare :: I sign size e -> I sign size e -> Ordering #

(<) :: I sign size e -> I sign size e -> Bool #

(<=) :: I sign size e -> I sign size e -> Bool #

(>) :: I sign size e -> I sign size e -> Bool #

(>=) :: I sign size e -> I sign size e -> Bool #

max :: I sign size e -> I sign size e -> I sign size e #

min :: I sign size e -> I sign size e -> I sign size e #

type Rep (I sign size e) Source # 
Instance details

Defined in Binrep.Types.Ints

type Rep (I sign size e) = D1 ('MetaData "I" "Binrep.Types.Ints" "binrep-0.1.0-inplace" 'True) (C1 ('MetaCons "I" 'PrefixI 'True) (S1 ('MetaSel ('Just "getI") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IRep sign size))))

data Endianness Source #

Byte order.

Constructors

BE

big endian, MSB first. e.g. most network protocols

LE

little endian, MSB last. e.g. most processor architectures

data ISign Source #

Machine integer sign

Constructors

S

signed

U

unsigned

data ISize Source #

Machine integer size in number of bytes.

Constructors

I1 
I2 
I4 
I8 

type family IRep (sign :: ISign) (size :: ISize) where ... Source #

Equations

IRep 'U 'I1 = Word8 
IRep 'S 'I1 = Int8 
IRep 'U 'I2 = Word16 
IRep 'S 'I2 = Int16 
IRep 'U 'I4 = Word32 
IRep 'S 'I4 = Int32 
IRep 'U 'I8 = Word64 
IRep 'S 'I8 = Int64