Documentation ¶
Index ¶
- Constants
- Variables
- func BasicCodecComparator(o1 interface{}, o2 interface{}) int
- func BasicCodecDecoder(r io.Reader, n *int64, err *error) (o interface{})
- func BasicCodecEncoder(o interface{}, w io.Writer, n *int64, err *error)
- func BinaryBytes(o interface{}) []byte
- func BinaryCompare(a, b interface{}) int
- func BinaryEqual(a, b interface{}) bool
- func BinaryRipemd160(o interface{}) []byte
- func BinarySha256(o interface{}) []byte
- func GetTypeFromStructDeclaration(o interface{}) reflect.Type
- func JSONBytes(o interface{}) []byte
- func ReadBinary(o interface{}, r io.Reader, n *int64, err *error) interface{}
- func ReadBinaryPtr(o interface{}, r io.Reader, n *int64, err *error) interface{}
- func ReadByte(r io.Reader, n *int64, err *error) byte
- func ReadByteSlice(r io.Reader, n *int64, err *error) []byte
- func ReadByteSlices(r io.Reader, n *int64, err *error) [][]byte
- func ReadFull(buf []byte, r io.Reader, n *int64, err *error)
- func ReadInt16(r io.Reader, n *int64, err *error) int16
- func ReadInt32(r io.Reader, n *int64, err *error) int32
- func ReadInt64(r io.Reader, n *int64, err *error) int64
- func ReadInt8(r io.Reader, n *int64, err *error) int8
- func ReadJSON(o interface{}, bytes []byte, err *error) interface{}
- func ReadJSONObject(o interface{}, object interface{}, err *error) interface{}
- func ReadJSONObjectPtr(o interface{}, object interface{}, err *error) interface{}
- func ReadJSONPtr(o interface{}, bytes []byte, err *error) interface{}
- func ReadString(r io.Reader, n *int64, err *error) string
- func ReadTime(r io.Reader, n *int64, err *error) time.Time
- func ReadUint16(r io.Reader, n *int64, err *error) uint16
- func ReadUint16s(r io.Reader, n *int64, err *error) []uint16
- func ReadUint32(r io.Reader, n *int64, err *error) uint32
- func ReadUint64(r io.Reader, n *int64, err *error) uint64
- func ReadUint8(r io.Reader, n *int64, err *error) uint8
- func ReadUvarint(r io.Reader, n *int64, err *error) uint
- func ReadVarint(r io.Reader, n *int64, err *error) int
- func SetByteForType(typeByte byte, rt reflect.Type)
- func WriteBinary(o interface{}, w io.Writer, n *int64, err *error)
- func WriteByte(b byte, w io.Writer, n *int64, err *error)
- func WriteByteSlice(bz []byte, w io.Writer, n *int64, err *error)
- func WriteByteSlices(bzz [][]byte, w io.Writer, n *int64, err *error)
- func WriteInt16(i int16, w io.Writer, n *int64, err *error)
- func WriteInt32(i int32, w io.Writer, n *int64, err *error)
- func WriteInt64(i int64, w io.Writer, n *int64, err *error)
- func WriteInt8(i int8, w io.Writer, n *int64, err *error)
- func WriteJSON(o interface{}, w io.Writer, n *int64, err *error)
- func WriteString(s string, w io.Writer, n *int64, err *error)
- func WriteTime(t time.Time, w io.Writer, n *int64, err *error)
- func WriteTo(bz []byte, w io.Writer, n *int64, err *error)
- func WriteUint16(i uint16, w io.Writer, n *int64, err *error)
- func WriteUint16s(iz []uint16, w io.Writer, n *int64, err *error)
- func WriteUint32(i uint32, w io.Writer, n *int64, err *error)
- func WriteUint64(i uint64, w io.Writer, n *int64, err *error)
- func WriteUint8(i uint8, w io.Writer, n *int64, err *error)
- func WriteUvarint(i uint, w io.Writer, n *int64, err *error)
- func WriteVarint(i int, w io.Writer, n *int64, err *error)
- type Codec
- type Comparator
- type ConcreteType
- type Decoder
- type Encoder
- type Options
- type StructFieldInfo
- type TypeInfo
Constants ¶
View Source
const MaxBinaryReadSize = 21 * 1024 * 1024
TODO document and maybe make it configurable.
View Source
const (
ReflectSliceChunk = 1024
)
View Source
const Version = "0.5.0"
Variables ¶
View Source
var BasicCodec = Codec{ Encode: BasicCodecEncoder, Decode: BasicCodecDecoder, Compare: BasicCodecComparator, }
View Source
var ErrBinaryReadSizeOverflow = errors.New("Error: binary read size overflow")
View Source
var ErrBinaryReadSizeUnderflow = errors.New("Error: binary read size underflow")
Functions ¶
func BasicCodecComparator ¶
func BasicCodecComparator(o1 interface{}, o2 interface{}) int
Contract: Caller must ensure that types match.
func BinaryBytes ¶
func BinaryBytes(o interface{}) []byte
func BinaryCompare ¶
func BinaryCompare(a, b interface{}) int
NOTE: does not care about the type, only the binary representation.
func BinaryEqual ¶
func BinaryEqual(a, b interface{}) bool
NOTE: does not care about the type, only the binary representation.
func BinaryRipemd160 ¶
func BinaryRipemd160(o interface{}) []byte
NOTE: The default hash function is Ripemd160.
func BinarySha256 ¶
func BinarySha256(o interface{}) []byte
NOTE: only use this if you need 32 bytes.
func GetTypeFromStructDeclaration ¶
e.g. If o is struct{Foo}{}, return is the Foo reflection type.
func ReadBinaryPtr ¶
func ReadJSONObject ¶
func ReadJSONObject(o interface{}, object interface{}, err *error) interface{}
o is the ultimate destination, object is the result of json unmarshal
func ReadJSONObjectPtr ¶
func ReadJSONObjectPtr(o interface{}, object interface{}, err *error) interface{}
func ReadJSONPtr ¶
func SetByteForType ¶
Types ¶
type Codec ¶
type Codec struct { Encode Encoder Decode Decoder Compare Comparator }
type Comparator ¶
type Comparator func(o1 interface{}, o2 interface{}) int
type ConcreteType ¶
type ConcreteType struct { O interface{} Byte byte }
For use with the RegisterInterface declaration
type StructFieldInfo ¶
type TypeInfo ¶
type TypeInfo struct { Type reflect.Type // The type // If Type is kind reflect.Interface, is registered IsRegisteredInterface bool ByteToType map[byte]reflect.Type TypeToByte map[reflect.Type]byte // If Type is concrete Byte byte // If Type is kind reflect.Struct Fields []StructFieldInfo }
func GetTypeInfo ¶
func MakeTypeInfo ¶
func RegisterInterface ¶
func RegisterInterface(o interface{}, ctypes ...ConcreteType) *TypeInfo
Must use this to register an interface to properly decode the underlying concrete type.
Click to show internal directories.
Click to hide internal directories.