withreflection

package
v0.0.0-...-0775550 Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ToKeyedVec

func ToKeyedVec(value interface{}, prependKey []byte) []byte

ToKeyedVec replicates the behaviour of Rust's to_keyed_vec helper.

Types

type Decodeable

type Decodeable interface {
	// ParityDecode populates this structure from a stream (overwriting the current contents), return false on failure
	ParityDecode(decoder Decoder)
}

Decodeable is an interface that defines a custom encoding rules for a data type. Should be defined for pointers to structs. See OptionBool for an example implementation.

type Decoder

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

Decoder - a wraper around a Reader that allows decoding data items from a stream. Unlike Rust implementations, decoder methods do not return success state, but just panic on error. Since decoding failue is an "unexpected" error, this approach should be justified.

func (Decoder) Decode

func (pd Decoder) Decode(target interface{})

Decode takes a pointer to a decodable value and populates it from the stream.

func (Decoder) DecodeIntoReflectValue

func (pd Decoder) DecodeIntoReflectValue(target reflect.Value)

DecodeIntoReflectValue populates a writable reflect.Value from the stream

func (Decoder) DecodeOption

func (pd Decoder) DecodeOption(hasValue *bool, valuePointer interface{})

DecodeOption decodes a optionally available value into a boolean presence field and a value.

func (Decoder) DecodeUintCompact

func (pd Decoder) DecodeUintCompact() uint64

DecodeUintCompact decodes a compact-encoded integer. See EncodeUintCompact method.

func (Decoder) Read

func (pd Decoder) Read(bytes []byte)

Read reads bytes from a stream into a buffer and panics if cannot read the required number of bytes.

func (Decoder) ReadOneByte

func (pd Decoder) ReadOneByte() byte

ReadOneByte reads a next byte from the stream. Named so to avoid a linter warning about a clash with io.ByteReader.ReadByte

type Encodeable

type Encodeable interface {
	// ParityEncode encodes and write this structure into a stream
	ParityEncode(encoder Encoder)
}

Encodeable is an interface that defines a custom encoding rules for a data type. Should be defined for structs (not pointers to them). See OptionBool for an example implementation.

type Encoder

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

Encoder is a wrapper around a Writer that allows encoding data items to a stream.

func (Encoder) Encode

func (pe Encoder) Encode(value interface{})

Encode a value to the stream.

func (Encoder) EncodeOption

func (pe Encoder) EncodeOption(hasValue bool, value interface{})

EncodeOption stores optionally present value to the stream.

func (Encoder) EncodeUintCompact

func (pe Encoder) EncodeUintCompact(v uint64)

EncodeUintCompact writes an unsigned integer to the stream using the compact encoding. A typical usage is storing the length of a collection. Definition of compact encoding: 0b00 00 00 00 / 00 00 00 00 / 00 00 00 00 / 00 00 00 00

xx xx xx 00															(0 ... 2**6 - 1)		(u8)
yL yL yL 01 / yH yH yH yL												(2**6 ... 2**14 - 1)	(u8, u16)  low LH high
zL zL zL 10 / zM zM zM zL / zM zM zM zM / zH zH zH zM					(2**14 ... 2**30 - 1)	(u16, u32)  low LMMH high
nn nn nn 11 [ / zz zz zz zz ]{4 + n}									(2**30 ... 2**536 - 1)	(u32, u64, u128, U256, U512, U520) straight LE-encoded

Rust implementation: see impl<'a> Encode for CompactRef<'a, u64>

func (Encoder) PushByte

func (pe Encoder) PushByte(b byte)

PushByte writes a single byte to an encoder.

func (Encoder) Write

func (pe Encoder) Write(bytes []byte)

Write several bytes to the encoder.

type OptionBool

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

OptionBool is a structure that can store a boolean or a missing value. Note that encoding rules are slightly different from other "Option" fields.

func NewOptionBool

func NewOptionBool(value bool) OptionBool

NewOptionBool creates an OptionBool with a value.

func NewOptionBoolEmpty

func NewOptionBoolEmpty() OptionBool

NewOptionBoolEmpty creates an OptionBool without a value.

func (*OptionBool) ParityDecode

func (o *OptionBool) ParityDecode(decoder Decoder)

ParityDecode implements decoding for OptionBool as per Rust implementation.

func (OptionBool) ParityEncode

func (o OptionBool) ParityEncode(encoder Encoder)

ParityEncode implements encoding for OptionBool as per Rust implementation.

Jump to

Keyboard shortcuts

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