added put/get and write/read bool
This commit is contained in:
@@ -710,6 +710,18 @@ func PutString16(a []byte, str string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func PutBool(a []byte, flag bool) error {
|
||||
if len(a) == 0 {
|
||||
return ErrNoSpace
|
||||
}
|
||||
if flag {
|
||||
a[0] = 1
|
||||
} else {
|
||||
a[0] = 0
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GET
|
||||
|
||||
// GetInt16 - читает из массива 2 байта и декодирует их в int16.
|
||||
@@ -893,6 +905,17 @@ func GetString16(a []byte) (string, error) {
|
||||
return string(a[pSize:end]), nil
|
||||
}
|
||||
|
||||
func GetBool(a []byte) (bool, error) {
|
||||
if len(a) == 0 {
|
||||
return false, io.ErrUnexpectedEOF
|
||||
}
|
||||
if a[0] == 1 {
|
||||
return true, nil
|
||||
} else {
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
||||
// VAR
|
||||
|
||||
// WriteVarUint32 - записывает в Writer от 1 до 5 байт, возвращает количество
|
||||
@@ -990,6 +1013,15 @@ func WriteVarSize(w io.Writer, n int) (int, error) {
|
||||
return w.Write(a)
|
||||
}
|
||||
|
||||
func WriteBool(w io.Writer, flag bool) (err error) {
|
||||
var b byte
|
||||
if flag {
|
||||
b = 1
|
||||
}
|
||||
_, err = w.Write([]byte{b})
|
||||
return
|
||||
}
|
||||
|
||||
func ReadVarSize(src io.Reader) (_ int, err error) {
|
||||
var (
|
||||
b byte
|
||||
@@ -1014,3 +1046,11 @@ func ReadVarSize(src io.Reader) (_ int, err error) {
|
||||
num |= uint64(b) << 56
|
||||
return int(num), nil
|
||||
}
|
||||
|
||||
func ReadBool(src io.Reader) (bool, error) {
|
||||
b, err := ReadByte(src)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return b == 1, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user