noreflect

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: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(value Decodeable, encoded []byte)

func Encode

func Encode(value Encodeable) []byte

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 {
	Reader io.Reader
}

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) DecodeBool

func (pd Decoder) DecodeBool() bool

func (Decoder) DecodeByteSlice

func (pd Decoder) DecodeByteSlice() []byte

func (Decoder) DecodeCollection

func (pd Decoder) DecodeCollection(setSize func(int), decodeElem func(int))

See []int16 in tests as an example

func (Decoder) DecodeInt

func (pd Decoder) DecodeInt(bytes uint) int64

func (Decoder) DecodeOption

func (pd Decoder) DecodeOption(hasValue *bool, valuePointer Decodeable)

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

func (Decoder) DecodeString

func (pd Decoder) DecodeString() string

func (Decoder) DecodeUint

func (pd Decoder) DecodeUint(bytes uint) uint64

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 {
	Writer io.Writer
}

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

func (Encoder) EncodeBool

func (pe Encoder) EncodeBool(b bool)

func (Encoder) EncodeByteSlice

func (pe Encoder) EncodeByteSlice(value []byte)

func (Encoder) EncodeCollection

func (pe Encoder) EncodeCollection(length int, encodeElem func(int))

See []int16 in tests as an example

func (Encoder) EncodeInt

func (pe Encoder) EncodeInt(value int64, bytes int)

func (Encoder) EncodeOption

func (pe Encoder) EncodeOption(hasValue bool, value Encodeable)

EncodeOption stores optionally present value to the stream.

func (Encoder) EncodeString

func (pe Encoder) EncodeString(value string)

func (Encoder) EncodeUint

func (pe Encoder) EncodeUint(value uint64, bytes int)

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