packstream-bolt-0.1.0.0: PackStream binary serialization format
Safe HaskellNone
LanguageGHC2021

Data.PackStream.Integer

Description

PackStream integer type covering the full [-2^63, 2^64-1] range.

Synopsis

Documentation

data PSInteger Source #

Integer type that represents the value range of integral numbers in PackStream; i.e. \( \left[ -2^{63}, 2^{64}-1 \right] \). In other words, PSInteger provides the union of the value ranges of Word64 and Int64.

This type can be unboxed (i.e. via {-# UNPACK #-}).

Instances

Instances details
Bounded PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Enum PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Generic PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Associated Types

type Rep PSInteger 
Instance details

Defined in Data.PackStream.Integer

type Rep PSInteger = D1 ('MetaData "PSInteger" "Data.PackStream.Integer" "packstream-bolt-0.1.0.0-8Vg7PYLfGT8Gdt79ulKaPg" 'False) (C1 ('MetaCons "PSInteger" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Int64)))
Num PSInteger Source #

This instance will throw the respective arithmetic Underflow and Overflow exception if the range of PSInteger is exceeded.

Instance details

Defined in Data.PackStream.Integer

Read PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Integral PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Real PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Show PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

NFData PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Methods

rnf :: PSInteger -> () #

Eq PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

Ord PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

PackStream PSInteger Source # 
Instance details

Defined in Data.PackStream.Ps

Persist PSInteger Source #

This Persist instance encodes/decodes to/from PackStream format

When serializing PSIntegers via get the shortest encoding is used. Moreoever, for non-negative integers the unsigned encoding is always used.

Deserialization via get will only fail if a non-integer PackStream tag is encountered.

Instance details

Defined in Data.PackStream.Integer

TextShow PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

type Rep PSInteger Source # 
Instance details

Defined in Data.PackStream.Integer

type Rep PSInteger = D1 ('MetaData "PSInteger" "Data.PackStream.Integer" "packstream-bolt-0.1.0.0-8Vg7PYLfGT8Gdt79ulKaPg" 'False) (C1 ('MetaCons "PSInteger" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Int64)))

class ToPSInteger a where Source #

Types that can be losslessly converted to PSInteger.

Methods

toPSInteger :: a -> PSInteger Source #

Instances

Instances details
ToPSInteger Int16 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Int32 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Int64 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Int8 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Word16 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Word32 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Word8 Source # 
Instance details

Defined in Data.PackStream.Integer

ToPSInteger Int Source # 
Instance details

Defined in Data.PackStream.Integer

class FromPSInteger a where Source #

Convert a PSInteger value to something else if possible

The instances for FromPSInteger are supposed to be consistent with the respective instances for ToPSInteger, e.g.

fromPSInteger . toPSInteger == Just

fromIntegerTry :: Integer -> Either ArithException PSInteger Source #

Try to convert Integer into PSInteger

Will return Left Underflow or Left Overflow respectively if out of range

Internal helper

tryPSInteger :: Word8 -> (PSInteger -> a) -> Get a -> Get a Source #

Try to decode a PSInteger given a tag byte, applying f on success or falling through to the continuation.