License | BSD3 |
---|---|
Stability | experimental |
Portability | type-families, generalized newtype deriving |
Safe Haskell | None |
Language | Haskell98 |
This module provides a VarInt
wrapper with a Serial
instance
that generates base-128 variable-width ints. Values are encoded 7
bits at a time, with the most significant being a continuation bit.
Thus, the numbers from 0 to 127 require only a single byte to
encode, those from 128 to 16383 require two bytes, etc.
This format is taken from Google's Protocol Buffers, which provides a bit more verbiage on the encoding: https://developers.google.com/protocol-buffers/docs/encoding#varints.
Documentation
Bounded n => Bounded (VarInt n) | |
Enum n => Enum (VarInt n) | |
Eq n => Eq (VarInt n) | |
Integral n => Integral (VarInt n) | |
Num n => Num (VarInt n) | |
Ord n => Ord (VarInt n) | |
Real n => Real (VarInt n) | |
Show n => Show (VarInt n) | |
Bits n => Bits (VarInt n) | |
(Bits n, Integral n, Bits (Unsigned n), Integral (Unsigned n)) => Serial (VarInt n) | $setup >>> import Data.Word >>> import Data.Fixed >>> import Data.Bytes.Serial Integer/Word types serialized to base-128 variable-width ints.
|
type Signed (VarInt n) = VarInt (Signed n) | |
type Unsigned (VarInt n) = VarInt (Unsigned n) |