07252dc77e
Signed-off-by: Ciro S. Costa <utxobr@protonmail.com>
75 lines
1.3 KiB
Go
75 lines
1.3 KiB
Go
package levin
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
BoostSerializeTypeInt64 byte = 0x1
|
|
BoostSerializeTypeInt32 byte = 0x2
|
|
BoostSerializeTypeInt16 byte = 0x3
|
|
BoostSerializeTypeInt8 byte = 0x4
|
|
|
|
BoostSerializeTypeUint64 byte = 0x5
|
|
BoostSerializeTypeUint32 byte = 0x6
|
|
BoostSerializeTypeUint16 byte = 0x7
|
|
BoostSerializeTypeUint8 byte = 0x8
|
|
|
|
BoostSerializeTypeDouble byte = 0x9
|
|
|
|
BoostSerializeTypeString byte = 0x0a
|
|
BoostSerializeTypeBool byte = 0x0b
|
|
BoostSerializeTypeObject byte = 0x0c
|
|
BoostSerializeTypeArray byte = 0xd
|
|
|
|
BoostSerializeFlagArray byte = 0x80
|
|
)
|
|
|
|
type BoostByte byte
|
|
|
|
func (v BoostByte) Bytes() []byte {
|
|
return []byte{
|
|
BoostSerializeTypeUint8,
|
|
byte(v),
|
|
}
|
|
}
|
|
|
|
type BoostUint32 uint32
|
|
|
|
func (v BoostUint32) Bytes() []byte {
|
|
b := []byte{
|
|
BoostSerializeTypeUint32,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
}
|
|
binary.LittleEndian.PutUint32(b[1:], uint32(v))
|
|
return b
|
|
}
|
|
|
|
type BoostUint64 uint64
|
|
|
|
func (v BoostUint64) Bytes() []byte {
|
|
b := []byte{
|
|
BoostSerializeTypeUint64,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
}
|
|
|
|
binary.LittleEndian.PutUint64(b[1:], uint64(v))
|
|
|
|
return b
|
|
}
|
|
|
|
type BoostString string
|
|
|
|
func (v BoostString) Bytes() []byte {
|
|
b := []byte{BoostSerializeTypeString}
|
|
|
|
varInB, err := VarIn(len(v))
|
|
if err != nil {
|
|
panic(fmt.Errorf("varin '%d': %w", len(v), err))
|
|
}
|
|
|
|
return append(b, append(varInB, []byte(v)...)...)
|
|
}
|