bin

package module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2024 License: Apache-2.0 Imports: 18 Imported by: 504

README

binary

Borsh
Decoding borsh
 dec := bin.NewBorshDecoder(data)
 var meta token_metadata.Metadata
 err = dec.Decode(&meta)
 if err != nil {
   panic(err)
 }
Encoding borsh
buf := new(bytes.Buffer)
enc := bin.NewBorshEncoder(buf)
err := enc.Encode(meta)
if err != nil {
  panic(err)
}
// fmt.Print(buf.Bytes())
Optional Types
type Person struct {
	Name string
	Age  uint8 `bin:"optional"`
}

Rust equivalent:

struct Person {
    name: String,
    age: Option<u8>
}
Enum Types
type MyEnum struct {
	Enum  bin.BorshEnum `borsh_enum:"true"`
	One   bin.EmptyVariant
	Two   uint32
	Three int16
}

Rust equivalent:

enum MyEnum {
    One,
    Two(u32),
    Three(i16),
}
Exported vs Unexported Fields

In this example, the two field will be skipped by the encoder/decoder because the field is not exported.

type MyStruct struct {
	One   string
	two   uint32
	Three int16
}
Skip Decoding/Encoding Attributes

Encoding/Decoding of exported fields can be skipped using the borsh_skip tag.

type MyStruct struct {
	One   string
	Two   uint32 `borsh_skip:"true"`
	Three int16
}

Documentation

Index

Constants

View Source
const ACCOUNT_DISCRIMINATOR_SIZE = 8
View Source
const SIGHASH_ACCOUNT_NAMESPACE string = "account"
View Source
const SIGHASH_GLOBAL_NAMESPACE string = "global"

Namespace for calculating instruction sighash signatures for any instruction not affecting program state.

View Source
const SIGHASH_STATE_NAMESPACE string = "state"

Namespace for calculating state instruction sighash signatures.

Variables

View Source
var ErrVarIntBufferSize = errors.New("varint: invalid buffer size")
View Source
var NoTypeIDDefaultID = TypeIDFromUint8(0)
View Source
var TypeSize = struct {
	Bool int
	Byte int

	Int8  int
	Int16 int

	Uint8   int
	Uint16  int
	Uint32  int
	Uint64  int
	Uint128 int

	Float32 int
	Float64 int

	PublicKey int
	Signature int
}{
	Byte: 1,
	Bool: 1,

	Int8:  1,
	Int16: 2,

	Uint8:   1,
	Uint16:  2,
	Uint32:  4,
	Uint64:  8,
	Uint128: 16,

	Float32: 4,
	Float64: 8,

	PublicKey: 32,
	Signature: 64,
}

Functions

func BinByteCount

func BinByteCount(v interface{}) (uint64, error)

BinByteCount computes the byte count size for the received populated structure. The reported size is the one for the populated structure received in arguments. Depending on how serialization of your fields is performed, size could vary for different structure.

func BorshByteCount

func BorshByteCount(v interface{}) (uint64, error)

BorshByteCount computes the byte count size for the received populated structure. The reported size is the one for the populated structure received in arguments. Depending on how serialization of your fields is performed, size could vary for different structure.

func CompactU16ByteCount

func CompactU16ByteCount(v interface{}) (uint64, error)

CompactU16ByteCount computes the byte count size for the received populated structure. The reported size is the one for the populated structure received in arguments. Depending on how serialization of your fields is performed, size could vary for different structure.

func DecodeCompactU16 added in v0.7.7

func DecodeCompactU16(bytes []byte) (int, int, error)

func DecodeCompactU16LengthFromByteReader

func DecodeCompactU16LengthFromByteReader(reader io.ByteReader) (int, error)

DecodeCompactU16LengthFromByteReader decodes a "Compact-u16" length from the provided io.ByteReader.

func FormatByteSlice

func FormatByteSlice(buf []byte) string

FormatByteSlice formats the given byte slice into a readable format.

func FormatDiscriminator added in v0.7.4

func FormatDiscriminator(disc [8]byte) string

func IsByteSlice

func IsByteSlice(v interface{}) bool

IsByteSlice returns true if the provided element is a []byte.

func MarshalBin

func MarshalBin(v interface{}) ([]byte, error)

func MarshalBorsh

func MarshalBorsh(v interface{}) ([]byte, error)

func MarshalCompactU16

func MarshalCompactU16(v interface{}) ([]byte, error)

func MustBinByteCount

func MustBinByteCount(v interface{}) uint64

MustBinByteCount acts just like BinByteCount but panics if it encounters any encoding errors.

func MustBorshByteCount

func MustBorshByteCount(v interface{}) uint64

MustBorshByteCount acts just like BorshByteCount but panics if it encounters any encoding errors.

func MustCompactU16ByteCount

func MustCompactU16ByteCount(v interface{}) uint64

MustCompactU16ByteCount acts just like CompactU16ByteCount but panics if it encounters any encoding errors.

func ReverseBytes added in v0.6.0

func ReverseBytes(s []byte)

func Sighash

func Sighash(namespace string, name string) []byte

Sighash creates an anchor sighash for the provided namespace and element. An anchor sighash is the first 8 bytes of the sha256 of {namespace}:{name} NOTE: you must first convert the name to snake case using `ToSnakeForSighash`.

func SighashAccount added in v0.7.2

func SighashAccount(name string) []byte

func SighashInstruction added in v0.7.2

func SighashInstruction(name string) []byte

func ToPascalCase added in v0.7.6

func ToPascalCase(s string) string

ToPascalCase converts a string to upper camel case.

func ToRustSnakeCase added in v0.7.2

func ToRustSnakeCase(s string) string

ToRustSnakeCase converts the given string to a snake_case string. Ported from https://github.com/withoutboats/heck/blob/c501fc95db91ce20eaef248a511caec7142208b4/src/lib.rs#L75 as used by Anchor.

func ToSnakeForSighash added in v0.7.2

func ToSnakeForSighash(s string) string

func Uint32FromTypeID

func Uint32FromTypeID(vid TypeID, order binary.ByteOrder) (out uint32)

Uint32FromTypeID parses a TypeID bytes to a uint32.

func Uint8FromTypeID

func Uint8FromTypeID(vid TypeID) (out uint8)

Uint32FromTypeID parses a TypeID bytes to a uint8.

func UnmarshalBin

func UnmarshalBin(v interface{}, b []byte) error

func UnmarshalBorsh

func UnmarshalBorsh(v interface{}, b []byte) error

func UnmarshalCompactU16

func UnmarshalCompactU16(v interface{}, b []byte) error

func Uvarint32FromTypeID

func Uvarint32FromTypeID(vid TypeID) (out uint32)

Uvarint32FromTypeID parses a TypeID bytes to a uvarint 32.

Types

type BaseVariant

type BaseVariant struct {
	TypeID TypeID
	Impl   interface{}
}

func (*BaseVariant) Assign

func (a *BaseVariant) Assign(typeID TypeID, impl interface{})

func (*BaseVariant) Obtain

func (a *BaseVariant) Obtain(def *VariantDefinition) (typeID TypeID, typeName string, impl interface{})

func (*BaseVariant) UnmarshalBinaryVariant

func (a *BaseVariant) UnmarshalBinaryVariant(decoder *Decoder, def *VariantDefinition) (err error)

type BinaryMarshaler

type BinaryMarshaler interface {
	MarshalWithEncoder(encoder *Encoder) error
}

type BinaryUnmarshaler

type BinaryUnmarshaler interface {
	UnmarshalWithDecoder(decoder *Decoder) error
}

type Bool

type Bool bool

func (Bool) MarshalWithEncoder

func (b Bool) MarshalWithEncoder(encoder *Encoder) error

func (*Bool) UnmarshalJSON

func (b *Bool) UnmarshalJSON(data []byte) error

func (*Bool) UnmarshalWithDecoder

func (b *Bool) UnmarshalWithDecoder(decoder *Decoder) error

type BorshEnum

type BorshEnum uint8

type Decoder

type Decoder struct {
	// contains filtered or unexported fields
}

func NewBinDecoder

func NewBinDecoder(data []byte) *Decoder

func NewBorshDecoder

func NewBorshDecoder(data []byte) *Decoder

func NewCompactU16Decoder

func NewCompactU16Decoder(data []byte) *Decoder

func NewDecoderWithEncoding

func NewDecoderWithEncoding(data []byte, enc Encoding) *Decoder

func (*Decoder) Decode

func (dec *Decoder) Decode(v interface{}) (err error)

func (*Decoder) Discard added in v0.7.0

func (dec *Decoder) Discard(n int) (err error)

func (*Decoder) HasRemaining

func (dec *Decoder) HasRemaining() bool

func (*Decoder) IsBin

func (dec *Decoder) IsBin() bool

func (*Decoder) IsBorsh

func (dec *Decoder) IsBorsh() bool

func (*Decoder) IsCompactU16

func (dec *Decoder) IsCompactU16() bool

func (*Decoder) Len added in v0.7.7

func (dec *Decoder) Len() int

func (*Decoder) Peek

func (dec *Decoder) Peek(n int) (out []byte, err error)

func (*Decoder) PeekDiscriminator added in v0.7.5

func (dec *Decoder) PeekDiscriminator() (out TypeID, err error)

func (*Decoder) Position

func (dec *Decoder) Position() uint

func (*Decoder) Read added in v0.7.2

func (d *Decoder) Read(buf []byte) (int, error)

func (*Decoder) ReadBool

func (dec *Decoder) ReadBool() (out bool, err error)

func (*Decoder) ReadByte

func (dec *Decoder) ReadByte() (out byte, err error)

func (*Decoder) ReadByteSlice

func (dec *Decoder) ReadByteSlice() (out []byte, err error)

func (*Decoder) ReadBytes added in v0.7.2

func (dec *Decoder) ReadBytes(n int) (out []byte, err error)

ReadBytes reads a byte slice of length n.

func (*Decoder) ReadCOption added in v0.7.3

func (dec *Decoder) ReadCOption() (out bool, err error)

func (*Decoder) ReadCompactU16 added in v0.7.2

func (dec *Decoder) ReadCompactU16() (out int, err error)

ReadCompactU16 reads a compact u16 from the decoder.

func (*Decoder) ReadCompactU16Length

func (dec *Decoder) ReadCompactU16Length() (int, error)

func (*Decoder) ReadDiscriminator added in v0.7.3

func (dec *Decoder) ReadDiscriminator() (out TypeID, err error)

func (*Decoder) ReadFloat128

func (dec *Decoder) ReadFloat128(order binary.ByteOrder) (out Float128, err error)

func (*Decoder) ReadFloat32

func (dec *Decoder) ReadFloat32(order binary.ByteOrder) (out float32, err error)

func (*Decoder) ReadFloat64

func (dec *Decoder) ReadFloat64(order binary.ByteOrder) (out float64, err error)

func (*Decoder) ReadInt128

func (dec *Decoder) ReadInt128(order binary.ByteOrder) (out Int128, err error)

func (*Decoder) ReadInt16

func (dec *Decoder) ReadInt16(order binary.ByteOrder) (out int16, err error)

func (*Decoder) ReadInt32

func (dec *Decoder) ReadInt32(order binary.ByteOrder) (out int32, err error)

func (*Decoder) ReadInt64

func (dec *Decoder) ReadInt64(order binary.ByteOrder) (out int64, err error)

func (*Decoder) ReadInt8

func (dec *Decoder) ReadInt8() (out int8, err error)

func (*Decoder) ReadLength added in v0.5.0

func (dec *Decoder) ReadLength() (length int, err error)

func (*Decoder) ReadNBytes

func (dec *Decoder) ReadNBytes(n int) (out []byte, err error)

func (*Decoder) ReadOption added in v0.7.3

func (dec *Decoder) ReadOption() (out bool, err error)

func (*Decoder) ReadRustString added in v0.5.1

func (dec *Decoder) ReadRustString() (out string, err error)

func (*Decoder) ReadString

func (dec *Decoder) ReadString() (out string, err error)

func (*Decoder) ReadTypeID

func (dec *Decoder) ReadTypeID() (out TypeID, err error)

func (*Decoder) ReadUint128

func (dec *Decoder) ReadUint128(order binary.ByteOrder) (out Uint128, err error)

func (*Decoder) ReadUint16

func (dec *Decoder) ReadUint16(order binary.ByteOrder) (out uint16, err error)

func (*Decoder) ReadUint32

func (dec *Decoder) ReadUint32(order binary.ByteOrder) (out uint32, err error)

func (*Decoder) ReadUint64

func (dec *Decoder) ReadUint64(order binary.ByteOrder) (out uint64, err error)

func (*Decoder) ReadUint8

func (dec *Decoder) ReadUint8() (out uint8, err error)

func (*Decoder) ReadUvarint16

func (dec *Decoder) ReadUvarint16() (out uint16, err error)

func (*Decoder) ReadUvarint32

func (dec *Decoder) ReadUvarint32() (out uint32, err error)

func (*Decoder) ReadUvarint64

func (dec *Decoder) ReadUvarint64() (uint64, error)

func (*Decoder) ReadVarint16

func (dec *Decoder) ReadVarint16() (out int16, err error)

func (*Decoder) ReadVarint32

func (dec *Decoder) ReadVarint32() (out int32, err error)

func (*Decoder) ReadVarint64

func (d *Decoder) ReadVarint64() (out int64, err error)

func (*Decoder) Remaining

func (dec *Decoder) Remaining() int

func (*Decoder) Reset added in v0.7.2

func (dec *Decoder) Reset(data []byte)

Reset resets the decoder to decode a new message.

func (*Decoder) SafeReadUTF8String

func (dec *Decoder) SafeReadUTF8String() (out string, err error)

func (*Decoder) SetEncoding added in v0.7.2

func (dec *Decoder) SetEncoding(enc Encoding)

SetEncoding sets the encoding scheme to use for decoding.

func (*Decoder) SetPosition

func (dec *Decoder) SetPosition(idx uint) error

func (*Decoder) SkipBytes

func (dec *Decoder) SkipBytes(count uint) error

type EmptyVariant added in v0.7.0

type EmptyVariant struct{}

EmptyVariant is an empty borsh enum variant.

func (*EmptyVariant) MarshalWithEncoder added in v0.7.0

func (*EmptyVariant) MarshalWithEncoder(_ *Encoder) error

func (*EmptyVariant) UnmarshalWithDecoder added in v0.7.0

func (*EmptyVariant) UnmarshalWithDecoder(_ *Decoder) error

type Encoder

type Encoder struct {
	// contains filtered or unexported fields
}

func NewBinEncoder

func NewBinEncoder(writer io.Writer) *Encoder

func NewBorshEncoder

func NewBorshEncoder(writer io.Writer) *Encoder

func NewCompactU16Encoder

func NewCompactU16Encoder(writer io.Writer) *Encoder

func NewEncoderWithEncoding

func NewEncoderWithEncoding(writer io.Writer, enc Encoding) *Encoder

func (*Encoder) Encode

func (e *Encoder) Encode(v interface{}) (err error)

func (*Encoder) IsBin

func (enc *Encoder) IsBin() bool

func (*Encoder) IsBorsh

func (enc *Encoder) IsBorsh() bool

func (*Encoder) IsCompactU16

func (enc *Encoder) IsCompactU16() bool

func (*Encoder) Write added in v0.7.7

func (e *Encoder) Write(b []byte) (n int, err error)

func (*Encoder) WriteBool

func (e *Encoder) WriteBool(b bool) (err error)

func (*Encoder) WriteByte

func (e *Encoder) WriteByte(b byte) (err error)

func (*Encoder) WriteBytes

func (e *Encoder) WriteBytes(b []byte, writeLength bool) error

func (*Encoder) WriteCOption added in v0.7.3

func (e *Encoder) WriteCOption(b bool) (err error)

func (*Encoder) WriteCompactU16 added in v0.7.9

func (e *Encoder) WriteCompactU16(ln int) (err error)

func (*Encoder) WriteCompactU16Length

func (e *Encoder) WriteCompactU16Length(ln int) (err error)

func (*Encoder) WriteFloat32

func (e *Encoder) WriteFloat32(f float32, order binary.ByteOrder) (err error)

func (*Encoder) WriteFloat64

func (e *Encoder) WriteFloat64(f float64, order binary.ByteOrder) (err error)

func (*Encoder) WriteInt128

func (e *Encoder) WriteInt128(i Int128, order binary.ByteOrder) (err error)

func (*Encoder) WriteInt16

func (e *Encoder) WriteInt16(i int16, order binary.ByteOrder) (err error)

func (*Encoder) WriteInt32

func (e *Encoder) WriteInt32(i int32, order binary.ByteOrder) (err error)

func (*Encoder) WriteInt64

func (e *Encoder) WriteInt64(i int64, order binary.ByteOrder) (err error)

func (*Encoder) WriteInt8 added in v0.7.8

func (e *Encoder) WriteInt8(i int8) (err error)

func (*Encoder) WriteLength added in v0.5.0

func (e *Encoder) WriteLength(length int) error

func (*Encoder) WriteOption added in v0.7.3

func (e *Encoder) WriteOption(b bool) (err error)

func (*Encoder) WriteRustString added in v0.5.1

func (e *Encoder) WriteRustString(s string) (err error)

func (*Encoder) WriteString

func (e *Encoder) WriteString(s string) (err error)

func (*Encoder) WriteUVarInt

func (e *Encoder) WriteUVarInt(v int) (err error)

func (*Encoder) WriteUint128

func (e *Encoder) WriteUint128(i Uint128, order binary.ByteOrder) (err error)

func (*Encoder) WriteUint16

func (e *Encoder) WriteUint16(i uint16, order binary.ByteOrder) (err error)

func (*Encoder) WriteUint32

func (e *Encoder) WriteUint32(i uint32, order binary.ByteOrder) (err error)

func (*Encoder) WriteUint64

func (e *Encoder) WriteUint64(i uint64, order binary.ByteOrder) (err error)

func (*Encoder) WriteUint8

func (e *Encoder) WriteUint8(i uint8) (err error)

func (*Encoder) WriteVarInt

func (e *Encoder) WriteVarInt(v int) (err error)

func (*Encoder) Written added in v0.5.0

func (e *Encoder) Written() int

Written returns the count of bytes written.

type EncoderDecoder

type EncoderDecoder interface {
	BinaryMarshaler
	BinaryUnmarshaler
}

type Encoding

type Encoding int
const (
	EncodingBin Encoding = iota
	EncodingCompactU16
	EncodingBorsh
)

func (Encoding) IsBin

func (en Encoding) IsBin() bool

func (Encoding) IsBorsh

func (en Encoding) IsBorsh() bool

func (Encoding) IsCompactU16

func (en Encoding) IsCompactU16() bool

func (Encoding) String

func (enc Encoding) String() string

type Float128

type Float128 Uint128

func (Float128) MarshalJSON

func (i Float128) MarshalJSON() (data []byte, err error)

func (Float128) MarshalWithEncoder

func (i Float128) MarshalWithEncoder(enc *Encoder) error

func (*Float128) UnmarshalJSON

func (i *Float128) UnmarshalJSON(data []byte) error

func (*Float128) UnmarshalWithDecoder

func (i *Float128) UnmarshalWithDecoder(dec *Decoder) error

type HexBytes

type HexBytes []byte

func (HexBytes) MarshalJSON

func (t HexBytes) MarshalJSON() ([]byte, error)

func (HexBytes) MarshalWithEncoder

func (o HexBytes) MarshalWithEncoder(encoder *Encoder) error

func (HexBytes) String

func (t HexBytes) String() string

func (*HexBytes) UnmarshalJSON

func (t *HexBytes) UnmarshalJSON(data []byte) (err error)

func (*HexBytes) UnmarshalWithDecoder

func (o *HexBytes) UnmarshalWithDecoder(decoder *Decoder) error

type Int128

type Int128 Uint128

Int128

func (Int128) BigInt

func (i Int128) BigInt() *big.Int

func (Int128) DecimalString

func (i Int128) DecimalString() string

func (Int128) MarshalJSON

func (i Int128) MarshalJSON() (data []byte, err error)

func (Int128) MarshalWithEncoder

func (i Int128) MarshalWithEncoder(enc *Encoder) error

func (Int128) String

func (i Int128) String() string

func (*Int128) UnmarshalJSON

func (i *Int128) UnmarshalJSON(data []byte) error

func (*Int128) UnmarshalWithDecoder

func (i *Int128) UnmarshalWithDecoder(dec *Decoder) error

type Int64

type Int64 int64

func (Int64) MarshalJSON

func (i Int64) MarshalJSON() (data []byte, err error)

func (Int64) MarshalWithEncoder

func (i Int64) MarshalWithEncoder(enc *Encoder) error

func (*Int64) UnmarshalJSON

func (i *Int64) UnmarshalJSON(data []byte) error

func (*Int64) UnmarshalWithDecoder

func (i *Int64) UnmarshalWithDecoder(dec *Decoder) error

type InvalidDecoderError

type InvalidDecoderError struct {
	Type reflect.Type
}

An InvalidDecoderError describes an invalid argument passed to Decoder. (The argument to Decoder must be a non-nil pointer.)

func (*InvalidDecoderError) Error

func (e *InvalidDecoderError) Error() string

type JSONFloat64

type JSONFloat64 float64

func (JSONFloat64) MarshalWithEncoder

func (f JSONFloat64) MarshalWithEncoder(enc *Encoder) error

func (*JSONFloat64) UnmarshalJSON

func (f *JSONFloat64) UnmarshalJSON(data []byte) error

func (*JSONFloat64) UnmarshalWithDecoder

func (f *JSONFloat64) UnmarshalWithDecoder(dec *Decoder) error

type OnVariant

type OnVariant = func(impl interface{}) error

type SafeString

type SafeString string

func (SafeString) MarshalWithEncoder

func (ss SafeString) MarshalWithEncoder(encoder *Encoder) error

func (*SafeString) UnmarshalWithDecoder

func (ss *SafeString) UnmarshalWithDecoder(d *Decoder) error

type TypeID

type TypeID [8]byte

TypeID defines the internal representation of an instruction type ID (or account type, etc. in anchor programs) and it's used to associate instructions to decoders in the variant tracker.

func SighashTypeID

func SighashTypeID(namespace string, name string) TypeID

NOTE: no casing conversion is done here, it's up to the caller to provide the correct casing.

func TypeIDFromBytes

func TypeIDFromBytes(slice []byte) (id TypeID)

TypeIDFromBytes converts a []byte to a TypeID. The provided slice must be 8 bytes long or less.

func TypeIDFromSighash

func TypeIDFromSighash(sh []byte) TypeID

TypeIDFromSighash converts a sighash bytes to a TypeID.

func TypeIDFromUint32

func TypeIDFromUint32(v uint32, bo binary.ByteOrder) TypeID

TypeIDFromUint32 converts a uint32 to a TypeID.

func TypeIDFromUint8

func TypeIDFromUint8(v uint8) TypeID

TypeIDFromUint32 converts a uint8 to a TypeID.

func TypeIDFromUvarint32

func TypeIDFromUvarint32(v uint32) TypeID

TypeIDFromUvarint32 converts a Uvarint to a TypeID.

func (TypeID) Bytes

func (vid TypeID) Bytes() []byte

func (TypeID) Equal

func (vid TypeID) Equal(b []byte) bool

Equal returns true if the provided bytes are equal to the bytes of the TypeID.

func (TypeID) Uint32

func (vid TypeID) Uint32() uint32

Uint32 parses the TypeID to a uint32.

func (TypeID) Uint8

func (vid TypeID) Uint8() uint8

Uint8 parses the TypeID to a Uint8.

func (TypeID) Uvarint32

func (vid TypeID) Uvarint32() uint32

Uvarint32 parses the TypeID to a uint32.

type TypeIDEncoding

type TypeIDEncoding uint32
const (
	Uvarint32TypeIDEncoding TypeIDEncoding = iota
	Uint32TypeIDEncoding
	Uint8TypeIDEncoding
	// AnchorTypeIDEncoding is the instruction ID encoding used by programs
	// written using the anchor SDK.
	// The typeID is the sighash of the instruction.
	AnchorTypeIDEncoding
	// No type ID; ONLY ONE VARIANT PER PROGRAM.
	NoTypeIDEncoding
)

type Uint128

type Uint128 struct {
	Lo         uint64
	Hi         uint64
	Endianness binary.ByteOrder
}

Uint128

func NewUint128BigEndian added in v0.6.0

func NewUint128BigEndian() *Uint128

func NewUint128LittleEndian added in v0.6.0

func NewUint128LittleEndian() *Uint128

func (Uint128) BigInt

func (i Uint128) BigInt() *big.Int

func (Uint128) Bytes added in v0.6.0

func (i Uint128) Bytes() []byte

func (Uint128) DecimalString

func (i Uint128) DecimalString() string

func (Uint128) HexString added in v0.6.0

func (i Uint128) HexString() string

func (Uint128) MarshalJSON

func (i Uint128) MarshalJSON() (data []byte, err error)

func (Uint128) MarshalWithEncoder

func (i Uint128) MarshalWithEncoder(enc *Encoder) error

func (Uint128) String

func (i Uint128) String() string

func (*Uint128) UnmarshalJSON

func (i *Uint128) UnmarshalJSON(data []byte) error

func (*Uint128) UnmarshalWithDecoder

func (i *Uint128) UnmarshalWithDecoder(dec *Decoder) error

type Uint64

type Uint64 uint64

func (Uint64) MarshalJSON

func (i Uint64) MarshalJSON() (data []byte, err error)

func (Uint64) MarshalWithEncoder

func (i Uint64) MarshalWithEncoder(enc *Encoder) error

func (*Uint64) UnmarshalJSON

func (i *Uint64) UnmarshalJSON(data []byte) error

func (*Uint64) UnmarshalWithDecoder

func (i *Uint64) UnmarshalWithDecoder(dec *Decoder) error

type Variant

type Variant interface {
	Assign(typeID TypeID, impl interface{})
	Obtain(*VariantDefinition) (typeID TypeID, typeName string, impl interface{})
}

type VariantDefinition

type VariantDefinition struct {
	// contains filtered or unexported fields
}

func NewVariantDefinition

func NewVariantDefinition(typeIDEncoding TypeIDEncoding, types []VariantType) (out *VariantDefinition)

NewVariantDefinition creates a variant definition based on the *ordered* provided types.

  • For anchor instructions, it's the name that defines the binary variant value.
  • For all other types, it's the ordering that defines the binary variant value just like in native `nodeos` C++ and in Smart Contract via the `std::variant` type. It's important to pass the entries in the right order!

This variant definition can now be passed to functions of `BaseVariant` to implement marshal/unmarshaling functionalities for binary & JSON.

func (*VariantDefinition) TypeID

func (d *VariantDefinition) TypeID(name string) TypeID

type VariantImplFactory

type VariantImplFactory = func() interface{}

type VariantType

type VariantType struct {
	Name string
	Type interface{}
}

type Varint16

type Varint16 int16

func (Varint16) MarshalWithEncoder

func (o Varint16) MarshalWithEncoder(encoder *Encoder) error

func (*Varint16) UnmarshalWithDecoder

func (o *Varint16) UnmarshalWithDecoder(decoder *Decoder) error

type Varint32

type Varint32 int32

func (Varint32) MarshalWithEncoder

func (o Varint32) MarshalWithEncoder(encoder *Encoder) error

func (*Varint32) UnmarshalWithDecoder

func (o *Varint32) UnmarshalWithDecoder(decoder *Decoder) error

type Varuint16

type Varuint16 uint16

func (Varuint16) MarshalWithEncoder

func (o Varuint16) MarshalWithEncoder(encoder *Encoder) error

func (*Varuint16) UnmarshalWithDecoder

func (o *Varuint16) UnmarshalWithDecoder(decoder *Decoder) error

type Varuint32

type Varuint32 uint32

func (Varuint32) MarshalWithEncoder

func (o Varuint32) MarshalWithEncoder(encoder *Encoder) error

func (*Varuint32) UnmarshalWithDecoder

func (o *Varuint32) UnmarshalWithDecoder(decoder *Decoder) error

type WriteByWrite

type WriteByWrite struct {
	// contains filtered or unexported fields
}

func NewWriteByWrite

func NewWriteByWrite(name string) *WriteByWrite

func (*WriteByWrite) Bytes

func (rec *WriteByWrite) Bytes() []byte

func (WriteByWrite) String

func (rec WriteByWrite) String() string

func (*WriteByWrite) Write

func (rec *WriteByWrite) Write(b []byte) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL