| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Cardano.Ledger.Binary.Encoding
Synopsis
- serialize ∷ EncCBOR a ⇒ Version → a → ByteString
- serialize' ∷ EncCBOR a ⇒ Version → a → ByteString
- serializeBuilder ∷ EncCBOR a ⇒ Version → a → Builder
- hashWithEncoder ∷ ∀ h a. HashAlgorithm h ⇒ Version → (a → Encoding) → a → Hash h a
- hashEncCBOR ∷ ∀ h a. (HashAlgorithm h, EncCBOR a) ⇒ Version → a → Hash h a
- module Cardano.Ledger.Binary.Version
- data Encoding
- toBuilder ∷ Version → Encoding → Builder
- data Tokens
- = TkWord !Word Tokens
- | TkWord64 !Word64 Tokens
- | TkInt !Int Tokens
- | TkInt64 !Int64 Tokens
- | TkBytes !ByteString Tokens
- | TkBytesBegin Tokens
- | TkByteArray !SlicedByteArray Tokens
- | TkString !Text Tokens
- | TkUtf8ByteArray !SlicedByteArray Tokens
- | TkStringBegin Tokens
- | TkListLen !Word Tokens
- | TkListBegin Tokens
- | TkMapLen !Word Tokens
- | TkMapBegin Tokens
- | TkTag !Word Tokens
- | TkTag64 !Word64 Tokens
- | TkInteger !Integer Tokens
- | TkNull Tokens
- | TkUndef Tokens
- | TkBool !Bool Tokens
- | TkSimple !Word8 Tokens
- | TkFloat16 !Float Tokens
- | TkFloat32 !Float Tokens
- | TkFloat64 !Double Tokens
- | TkBreak Tokens
- | TkEncoded !ByteString Tokens
- | TkEnd
- toPlainEncoding ∷ Version → Encoding → Encoding
- fromPlainEncoding ∷ Encoding → Encoding
- fromPlainEncodingWithVersion ∷ (Version → Encoding) → Encoding
- withCurrentEncodingVersion ∷ (Version → Encoding) → Encoding
- enforceEncodingVersion ∷ Version → Encoding → Encoding
- ifEncodingVersionAtLeast ∷ Version → Encoding → Encoding → Encoding
- encodeVersion ∷ Version → Encoding
- encodeMaybe ∷ (a → Encoding) → Maybe a → Encoding
- encodeNullMaybe ∷ (a → Encoding) → Maybe a → Encoding
- encodeStrictMaybe ∷ (a → Encoding) → StrictMaybe a → Encoding
- encodeNullStrictMaybe ∷ (a → Encoding) → StrictMaybe a → Encoding
- encodeTuple ∷ (a → Encoding) → (b → Encoding) → (a, b) → Encoding
- encodeRatio ∷ (t → Encoding) → Ratio t → Encoding
- encodeRatioNoTag ∷ (t → Encoding) → Ratio t → Encoding
- encodeRatioWithTag ∷ (t → Encoding) → Ratio t → Encoding
- encodeEnum ∷ Enum a ⇒ a → Encoding
- encodeWithOrigin ∷ (a → Encoding) → WithOrigin a → Encoding
- encodeList ∷ (a → Encoding) → [a] → Encoding
- encodeSeq ∷ (a → Encoding) → Seq a → Encoding
- encodeStrictSeq ∷ (a → Encoding) → StrictSeq a → Encoding
- encodeSet ∷ (a → Encoding) → Set a → Encoding
- encodeMap ∷ (k → Encoding) → (v → Encoding) → Map k v → Encoding
- encodeVMap ∷ (Vector kv k, Vector vv v) ⇒ (k → Encoding) → (v → Encoding) → VMap kv vv k v → Encoding
- encodeVector ∷ Vector v a ⇒ (a → Encoding) → v a → Encoding
- variableListLenEncoding ∷ Int → Encoding → Encoding
- encodeFoldableEncoder ∷ Foldable f ⇒ (a → Encoding) → f a → Encoding
- encodeFoldableAsDefLenList ∷ Foldable f ⇒ (a → Encoding) → f a → Encoding
- encodeFoldableAsIndefLenList ∷ Foldable f ⇒ (a → Encoding) → f a → Encoding
- encodeFoldableMapEncoder ∷ Foldable f ⇒ (Word → a → Maybe Encoding) → f a → Encoding
- lengthThreshold ∷ Int
- encodeUTCTime ∷ UTCTime → Encoding
- encodeIPv4 ∷ IPv4 → Encoding
- ipv4ToBytes ∷ IPv4 → ByteString
- encodeIPv6 ∷ IPv6 → Encoding
- ipv6ToBytes ∷ IPv6 → ByteString
- encodeWord ∷ Word → Encoding
- encodeWord8 ∷ Word8 → Encoding
- encodeWord16 ∷ Word16 → Encoding
- encodeWord32 ∷ Word32 → Encoding
- encodeWord64 ∷ Word64 → Encoding
- encodeInt ∷ Int → Encoding
- encodeInt8 ∷ Int8 → Encoding
- encodeInt16 ∷ Int16 → Encoding
- encodeInt32 ∷ Int32 → Encoding
- encodeInt64 ∷ Int64 → Encoding
- encodeInteger ∷ Integer → Encoding
- encodeBytes ∷ ByteString → Encoding
- encodeBytesIndef ∷ Encoding
- encodeByteArray ∷ SlicedByteArray → Encoding
- encodeString ∷ Text → Encoding
- encodeStringIndef ∷ Encoding
- encodeUtf8ByteArray ∷ SlicedByteArray → Encoding
- encodeListLen ∷ Word → Encoding
- encodeListLenIndef ∷ Encoding
- encodeMapLen ∷ Word → Encoding
- encodeMapLenIndef ∷ Encoding
- encodeBreak ∷ Encoding
- encodeTag ∷ Word → Encoding
- encodeTag64 ∷ Word64 → Encoding
- encodeBool ∷ Bool → Encoding
- encodeUndef ∷ Encoding
- encodeNull ∷ Encoding
- encodeSimple ∷ Word8 → Encoding
- encodeFloat16 ∷ Float → Encoding
- encodeFloat ∷ Float → Encoding
- encodeDouble ∷ Double → Encoding
- encodePreEncoded ∷ ByteString → Encoding
- encodeTerm ∷ Term → Encoding
- class EncCBOR a where
- newtype PreEncoded = PreEncoded {}
- toByronCBOR ∷ EncCBOR a ⇒ a → Encoding
- encodeNestedCbor ∷ EncCBOR a ⇒ a → Encoding
- encodeNestedCborBytes ∷ ByteString → Encoding
- runByteBuilder ∷ Int → Builder → ByteString
- encodeMemPack ∷ MemPack a ⇒ a → Encoding
Running decoders
serialize ∷ EncCBOR a ⇒ Version → a → ByteString Source #
Serialize a Haskell value with a EncCBOR instance to an external binary
representation.
The output is represented as a lazy ByteString and is constructed
incrementally.
serialize' ∷ EncCBOR a ⇒ Version → a → ByteString Source #
Serialize a Haskell value to an external binary representation.
The output is represented as a strict ByteString.
serializeBuilder ∷ EncCBOR a ⇒ Version → a → Builder Source #
Serialize into a Builder. Useful if you want to throw other ByteStrings around it.
Hash
hashWithEncoder ∷ ∀ h a. HashAlgorithm h ⇒ Version → (a → Encoding) → a → Hash h a Source #
hashEncCBOR ∷ ∀ h a. (HashAlgorithm h, EncCBOR a) ⇒ Version → a → Hash h a Source #
Decoders
A flattened representation of a term, which is independent of any underlying binary representation, but which we later serialise into CBOR format.
Since: cborg-0.2.0.0
Constructors
withCurrentEncodingVersion ∷ (Version → Encoding) → Encoding Source #
Get access to the current version being used in the encoder
enforceEncodingVersion ∷ Version → Encoding → Encoding Source #
Ignore the current version of the encoder and enforce the supplied one instead.
ifEncodingVersionAtLeast Source #
Arguments
| ∷ Version | |
| → Encoding | Use this encoder if current encoder version is larger or equal to the supplied
|
| → Encoding | Use this encoder if current encoder version is lower than the supplied |
| → Encoding |
Conditionoly choose the encoder newer or older deceder, depending on the current version. Supplied version acts as a pivot.
Example
Custom
encodeNullMaybe ∷ (a → Encoding) → Maybe a → Encoding Source #
Alternative way to encode a Maybe type.
Note - this is not the default method for encoding Maybe, use encodeMaybe instead
encodeStrictMaybe ∷ (a → Encoding) → StrictMaybe a → Encoding Source #
encodeNullStrictMaybe ∷ (a → Encoding) → StrictMaybe a → Encoding Source #
Alternative way to encode a Maybe type.
Note - this is not the default method for encoding StrictMaybe, use
encodeStrictMaybe instead
encodeRatioWithTag ∷ (t → Encoding) → Ratio t → Encoding Source #
Encode a rational number with tag 30, as per tag assignment: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml
encodeEnum ∷ Enum a ⇒ a → Encoding Source #
encodeWithOrigin ∷ (a → Encoding) → WithOrigin a → Encoding Source #
Containers
encodeList ∷ (a → Encoding) → [a] → Encoding Source #
Encode a list. Versions variance:
- [>= 2] - Variable length encoding for lists longer than 23 elements, otherwise exact length encoding
- [< 2] - Variable length encoding
encodeSeq ∷ (a → Encoding) → Seq a → Encoding Source #
Encode a Seq. Variable length encoding for Sequences larger than 23 elements, otherwise exact length encoding
encodeSet ∷ (a → Encoding) → Set a → Encoding Source #
Encode a Set. Versions variance:
- [>= 9] - Variable length encoding for Sets larger than 23 elements, otherwise exact
length encoding. Prefixes with a special 258
setTag. - [>= 2] - Variable length encoding for Sets larger than 23 elements, otherwise exact length encoding
- [< 2] - Variable length encoding. Prefixes with a special 258
setTag.
encodeMap ∷ (k → Encoding) → (v → Encoding) → Map k v → Encoding Source #
Encode a Map. Versions variance:
- [>= 2] - Variable length encoding for Maps larger than 23 key value pairs, otherwise exact length encoding
- [< 2] - Variable length encoding.
encodeVMap ∷ (Vector kv k, Vector vv v) ⇒ (k → Encoding) → (v → Encoding) → VMap kv vv k v → Encoding Source #
Mimics Map encoder encodeMap identically.
encodeVector ∷ Vector v a ⇒ (a → Encoding) → v a → Encoding Source #
Generic encoder for vectors. Its intended use is to allow easy
definition of EncCBOR instances for custom vector
variableListLenEncoding Source #
Arguments
| ∷ Int | Number of elements in the encoded data structure. |
| → Encoding | Encoding for the actual data structure |
| → Encoding |
Conditionally use variable length encoding for list like structures with length larger than 23, otherwise use exact list length encoding.
Helpers
encodeFoldableEncoder ∷ Foldable f ⇒ (a → Encoding) → f a → Encoding Source #
Encode any Foldable with the variable list length encoding, which will use indefinite encoding over 23 elements and definite otherwise.
encodeFoldableAsIndefLenList ∷ Foldable f ⇒ (a → Encoding) → f a → Encoding Source #
Encode any Foldable with indefinite list length encoding
encodeFoldableMapEncoder Source #
Arguments
| ∷ Foldable f | |
| ⇒ (Word → a → Maybe Encoding) | A function that accepts an index of the value in the foldable data strucure, the actual value and optionally produces the encoding of the value and an index if that value should be encoded. |
| → f a | |
| → Encoding |
Encode a data structure as a Map with the 0-based index for a Key to a value. Uses variable map length encoding, which means an indefinite encoding for maps with over 23 elements and definite otherwise.
lengthThreshold ∷ Int Source #
This is the optimal maximum number for encoding exact length. Above that threashold using variable length encoding will result in less bytes on the wire.
Time
Network
encodeIPv4 ∷ IPv4 → Encoding Source #
ipv4ToBytes ∷ IPv4 → ByteString Source #
encodeIPv6 ∷ IPv6 → Encoding Source #
ipv6ToBytes ∷ IPv6 → ByteString Source #
Original
encodeWord ∷ Word → Encoding Source #
encodeWord8 ∷ Word8 → Encoding Source #
encodeInt8 ∷ Int8 → Encoding Source #
encodeInt16 ∷ Int16 → Encoding Source #
encodeInt32 ∷ Int32 → Encoding Source #
encodeInt64 ∷ Int64 → Encoding Source #
encodeString ∷ Text → Encoding Source #
encodeListLen ∷ Word → Encoding Source #
encodeMapLen ∷ Word → Encoding Source #
encodeTag64 ∷ Word64 → Encoding Source #
encodeBool ∷ Bool → Encoding Source #
encodeSimple ∷ Word8 → Encoding Source #
encodeFloat ∷ Float → Encoding Source #
encodeTerm ∷ Term → Encoding Source #
class EncCBOR a where Source #
Minimal complete definition
Nothing
Instances
newtype PreEncoded Source #
Constructors
| PreEncoded | |
Fields | |
Instances
| EncCBOR PreEncoded Source # | |
Defined in Cardano.Ledger.Binary.Encoding.EncCBOR Methods encCBOR ∷ PreEncoded → Encoding Source # | |
toByronCBOR ∷ EncCBOR a ⇒ a → Encoding Source #
Nested CBOR-in-CBOR
encodeNestedCbor ∷ EncCBOR a ⇒ a → Encoding Source #
Encode and serialise the given a and surround it with the semantic tag 24
In CBOR diagnostic notation:
> 24(hDEADBEEF)
encodeNestedCborBytes ∷ ByteString → Encoding Source #
Like encodeNestedCbor, but assumes nothing about the shape of
input object, so that it must be passed as a binary ByteString blob. It's
the caller responsibility to ensure the input ByteString correspond
indeed to valid, previously-serialised CBOR data.
Tools
runByteBuilder ∷ Int → Builder → ByteString Source #
Run a ByteString Builder using a strategy aimed at making smaller
things efficiently.
It takes a size hint and produces a strict ByteString. This will be fast
when the size hint is the same or slightly bigger than the true size.