web3-0.9.1.0: Web3 API for Haskell.

CopyrightAlexander Krupenkin 2016
LicenseBSD3
Maintainermail@akru.me
Stabilityexperimental
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

Codec.Scale

Description

The SCALE (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary serialization and deserialization codec.

It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained execution contexts, like the Substrate runtime. It is not self-describing in any way and assumes the decoding context has all type knowledge about the encoded data.

Synopsis

Documentation

encode :: (Encode a, ByteArray ba) => a -> ba Source #

Encode datatype to SCALE format.

decode :: (ByteArrayAccess ba, Decode a) => ba -> Either String a Source #

Decode datatype from SCALE format.

encode' :: (Generic a, Rep a ~ rep, GEncode rep, ByteArray ba) => a -> ba Source #

Generic driven version of encode

decode' :: (Generic a, Rep a ~ rep, GDecode rep, ByteArrayAccess ba) => ba -> Either String a Source #

Generic driven version of decode

class Encode a Source #

A class for encoding datatypes to SCALE format.

If your compiler has support for the DeriveGeneric and DefaultSignatures language extensions (ghc >= 7.2.1), the put method will have default generic implementations.

To use this option, simply add a deriving Generic clause to your datatype and declare a Encode instance for it without giving a definition for put.

Instances
Encode Bool Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Bool Source #

Encode Int8 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Int8 Source #

Encode Int16 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Int16 Source #

Encode Int32 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Int32 Source #

Encode Int64 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Int64 Source #

Encode Word8 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter Word8 Source #

Encode Word16 Source # 
Instance details

Defined in Codec.Scale.Core

Encode Word32 Source # 
Instance details

Defined in Codec.Scale.Core

Encode Word64 Source # 
Instance details

Defined in Codec.Scale.Core

Encode a => Encode [a] Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter [a] Source #

Encode (Maybe Bool) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (Maybe Bool) Source #

Encode a => Encode (Maybe a) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (Maybe a) Source #

(Encode a, Unbox a) => Encode (Vector a) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (Vector a) Source #

Encode (Vector Bit) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (Vector Bit) Source #

Integral a => Encode (Compact a) Source # 
Instance details

Defined in Codec.Scale.Compact

Methods

put :: Putter (Compact a) Source #

Encode a => Encode (SingletonEnum a) Source # 
Instance details

Defined in Codec.Scale.SingletonEnum

Encode (Skip a) Source # 
Instance details

Defined in Codec.Scale.Skip

Methods

put :: Putter (Skip a) Source #

(Encode a, Encode b) => Encode (Either a b) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (Either a b) Source #

(Encode a1, Encode a2) => Encode (a1, a2) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2) Source #

(Encode a1, Encode a2, Encode a3) => Encode (a1, a2, a3) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3) Source #

(Encode a1, Encode a2, Encode a3, Encode a4) => Encode (a1, a2, a3, a4) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5) => Encode (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6) => Encode (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7) => Encode (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8) => Encode (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15, Encode a16) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15, Encode a16, Encode a17) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15, Encode a16, Encode a17, Encode a18) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15, Encode a16, Encode a17, Encode a18, Encode a19) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) Source #

(Encode a1, Encode a2, Encode a3, Encode a4, Encode a5, Encode a6, Encode a7, Encode a8, Encode a9, Encode a10, Encode a11, Encode a12, Encode a13, Encode a14, Encode a15, Encode a16, Encode a17, Encode a18, Encode a19, Encode a20) => Encode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

put :: Putter (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) Source #

class Decode a Source #

A class for decoding datatypes from SCALE format.

If your compiler has support for the DeriveGeneric and DefaultSignatures language extensions (ghc >= 7.2.1), the get method will have default generic implementations.

To use this option, simply add a deriving Generic clause to your datatype and declare a Decode instance for it without giving a definition for get.

Instances
Decode Bool Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Bool Source #

Decode Int8 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Int8 Source #

Decode Int16 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Int16 Source #

Decode Int32 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Int32 Source #

Decode Int64 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Int64 Source #

Decode Word8 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Word8 Source #

Decode Word16 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Word16 Source #

Decode Word32 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Word32 Source #

Decode Word64 Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get Word64 Source #

Decode a => Decode [a] Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get [a] Source #

Decode (Maybe Bool) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (Maybe Bool) Source #

Decode a => Decode (Maybe a) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (Maybe a) Source #

(Decode a, Unbox a) => Decode (Vector a) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (Vector a) Source #

Decode (Vector Bit) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (Vector Bit) Source #

Integral a => Decode (Compact a) Source # 
Instance details

Defined in Codec.Scale.Compact

Methods

get :: Get (Compact a) Source #

Decode a => Decode (SingletonEnum a) Source # 
Instance details

Defined in Codec.Scale.SingletonEnum

Methods

get :: Get (SingletonEnum a) Source #

Default a => Decode (Skip a) Source # 
Instance details

Defined in Codec.Scale.Skip

Methods

get :: Get (Skip a) Source #

(Decode a, Decode b) => Decode (Either a b) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (Either a b) Source #

(Decode a1, Decode a2) => Decode (a1, a2) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2) Source #

(Decode a1, Decode a2, Decode a3) => Decode (a1, a2, a3) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3) Source #

(Decode a1, Decode a2, Decode a3, Decode a4) => Decode (a1, a2, a3, a4) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5) => Decode (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6) => Decode (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7) => Decode (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8) => Decode (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15, Decode a16) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15, Decode a16, Decode a17) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15, Decode a16, Decode a17, Decode a18) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15, Decode a16, Decode a17, Decode a18, Decode a19) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) Source #

(Decode a1, Decode a2, Decode a3, Decode a4, Decode a5, Decode a6, Decode a7, Decode a8, Decode a9, Decode a10, Decode a11, Decode a12, Decode a13, Decode a14, Decode a15, Decode a16, Decode a17, Decode a18, Decode a19, Decode a20) => Decode (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) Source # 
Instance details

Defined in Codec.Scale.Core

Methods

get :: Get (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) Source #