mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 04:52:59 +01:00
fix error for go1 compatiblity
This commit is contained in:
parent
3399148d75
commit
36fef91a67
62
go/pack.go
62
go/pack.go
@ -3,12 +3,12 @@ package msgpack
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"unsafe"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint8(writer io.Writer, value uint8) (n int, err os.Error) {
|
func PackUint8(writer io.Writer, value uint8) (n int, err error) {
|
||||||
if value < 128 {
|
if value < 128 {
|
||||||
return writer.Write([]byte{byte(value)})
|
return writer.Write([]byte{byte(value)})
|
||||||
}
|
}
|
||||||
@ -16,7 +16,7 @@ func PackUint8(writer io.Writer, value uint8) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint16(writer io.Writer, value uint16) (n int, err os.Error) {
|
func PackUint16(writer io.Writer, value uint16) (n int, err error) {
|
||||||
if value < 128 {
|
if value < 128 {
|
||||||
return writer.Write([]byte{byte(value)})
|
return writer.Write([]byte{byte(value)})
|
||||||
} else if value < 256 {
|
} else if value < 256 {
|
||||||
@ -26,7 +26,7 @@ func PackUint16(writer io.Writer, value uint16) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint32(writer io.Writer, value uint32) (n int, err os.Error) {
|
func PackUint32(writer io.Writer, value uint32) (n int, err error) {
|
||||||
if value < 128 {
|
if value < 128 {
|
||||||
return writer.Write([]byte{byte(value)})
|
return writer.Write([]byte{byte(value)})
|
||||||
} else if value < 256 {
|
} else if value < 256 {
|
||||||
@ -38,7 +38,7 @@ func PackUint32(writer io.Writer, value uint32) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint64(writer io.Writer, value uint64) (n int, err os.Error) {
|
func PackUint64(writer io.Writer, value uint64) (n int, err error) {
|
||||||
if value < 128 {
|
if value < 128 {
|
||||||
return writer.Write([]byte{byte(value)})
|
return writer.Write([]byte{byte(value)})
|
||||||
} else if value < 256 {
|
} else if value < 256 {
|
||||||
@ -51,7 +51,7 @@ func PackUint64(writer io.Writer, value uint64) (n int, err os.Error) {
|
|||||||
return writer.Write([]byte{0xcf, byte(value >> 56), byte(value >> 48), byte(value >> 40), byte(value >> 32), byte(value >> 24), byte(value >> 16), byte(value >> 8), byte(value)})
|
return writer.Write([]byte{0xcf, byte(value >> 56), byte(value >> 48), byte(value >> 40), byte(value >> 32), byte(value >> 24), byte(value >> 16), byte(value >> 8), byte(value)})
|
||||||
}
|
}
|
||||||
|
|
||||||
func PackUint(writer io.Writer, value uint) (n int, err os.Error) {
|
func PackUint(writer io.Writer, value uint) (n int, err error) {
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
switch unsafe.Sizeof(value) {
|
switch unsafe.Sizeof(value) {
|
||||||
case 4:
|
case 4:
|
||||||
@ -63,7 +63,7 @@ func PackUint(writer io.Writer, value uint) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt8(writer io.Writer, value int8) (n int, err os.Error) {
|
func PackInt8(writer io.Writer, value int8) (n int, err error) {
|
||||||
if value < -32 {
|
if value < -32 {
|
||||||
return writer.Write([]byte{0xd0, byte(value)})
|
return writer.Write([]byte{0xd0, byte(value)})
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ func PackInt8(writer io.Writer, value int8) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt16(writer io.Writer, value int16) (n int, err os.Error) {
|
func PackInt16(writer io.Writer, value int16) (n int, err error) {
|
||||||
if value < -128 || value >= 128 {
|
if value < -128 || value >= 128 {
|
||||||
return writer.Write([]byte{0xd1, byte(uint16(value) >> 8), byte(value)})
|
return writer.Write([]byte{0xd1, byte(uint16(value) >> 8), byte(value)})
|
||||||
} else if value < -32 {
|
} else if value < -32 {
|
||||||
@ -81,7 +81,7 @@ func PackInt16(writer io.Writer, value int16) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt32(writer io.Writer, value int32) (n int, err os.Error) {
|
func PackInt32(writer io.Writer, value int32) (n int, err error) {
|
||||||
if value < -32768 || value >= 32768 {
|
if value < -32768 || value >= 32768 {
|
||||||
return writer.Write([]byte{0xd2, byte(uint32(value) >> 24), byte(uint32(value) >> 16), byte(uint32(value) >> 8), byte(value)})
|
return writer.Write([]byte{0xd2, byte(uint32(value) >> 24), byte(uint32(value) >> 16), byte(uint32(value) >> 8), byte(value)})
|
||||||
} else if value < -128 {
|
} else if value < -128 {
|
||||||
@ -95,7 +95,7 @@ func PackInt32(writer io.Writer, value int32) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt64(writer io.Writer, value int64) (n int, err os.Error) {
|
func PackInt64(writer io.Writer, value int64) (n int, err error) {
|
||||||
if value < -2147483648 || value >= 2147483648 {
|
if value < -2147483648 || value >= 2147483648 {
|
||||||
return writer.Write([]byte{0xd3, byte(uint64(value) >> 56), byte(uint64(value) >> 48), byte(uint64(value) >> 40), byte(uint64(value) >> 32), byte(uint64(value) >> 24), byte(uint64(value) >> 16), byte(uint64(value) >> 8), byte(value)})
|
return writer.Write([]byte{0xd3, byte(uint64(value) >> 56), byte(uint64(value) >> 48), byte(uint64(value) >> 40), byte(uint64(value) >> 32), byte(uint64(value) >> 24), byte(uint64(value) >> 16), byte(uint64(value) >> 8), byte(value)})
|
||||||
} else if value < -32768 || value >= 32768 {
|
} else if value < -32768 || value >= 32768 {
|
||||||
@ -109,7 +109,7 @@ func PackInt64(writer io.Writer, value int64) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt(writer io.Writer, value int) (n int, err os.Error) {
|
func PackInt(writer io.Writer, value int) (n int, err error) {
|
||||||
switch unsafe.Sizeof(value) {
|
switch unsafe.Sizeof(value) {
|
||||||
case 4:
|
case 4:
|
||||||
return PackInt32(writer, *(*int32)(unsafe.Pointer(&value)))
|
return PackInt32(writer, *(*int32)(unsafe.Pointer(&value)))
|
||||||
@ -120,12 +120,12 @@ func PackInt(writer io.Writer, value int) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackNil(writer io.Writer) (n int, err os.Error) {
|
func PackNil(writer io.Writer) (n int, err error) {
|
||||||
return writer.Write([]byte{0xc0})
|
return writer.Write([]byte{0xc0})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackBool(writer io.Writer, value bool) (n int, err os.Error) {
|
func PackBool(writer io.Writer, value bool) (n int, err error) {
|
||||||
var code byte
|
var code byte
|
||||||
if value {
|
if value {
|
||||||
code = 0xc3
|
code = 0xc3
|
||||||
@ -136,17 +136,17 @@ func PackBool(writer io.Writer, value bool) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackFloat32(writer io.Writer, value float32) (n int, err os.Error) {
|
func PackFloat32(writer io.Writer, value float32) (n int, err error) {
|
||||||
return PackUint32(writer, *(*uint32)(unsafe.Pointer(&value)))
|
return PackUint32(writer, *(*uint32)(unsafe.Pointer(&value)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackFloat64(writer io.Writer, value float64) (n int, err os.Error) {
|
func PackFloat64(writer io.Writer, value float64) (n int, err error) {
|
||||||
return PackUint64(writer, *(*uint64)(unsafe.Pointer(&value)))
|
return PackUint64(writer, *(*uint64)(unsafe.Pointer(&value)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackBytes(writer io.Writer, value []byte) (n int, err os.Error) {
|
func PackBytes(writer io.Writer, value []byte) (n int, err error) {
|
||||||
if len(value) < 32 {
|
if len(value) < 32 {
|
||||||
n1, err := writer.Write([]byte{0xa0 | uint8(len(value))})
|
n1, err := writer.Write([]byte{0xa0 | uint8(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -171,7 +171,7 @@ func PackBytes(writer io.Writer, value []byte) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint16Array(writer io.Writer, value []uint16) (n int, err os.Error) {
|
func PackUint16Array(writer io.Writer, value []uint16) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -213,7 +213,7 @@ func PackUint16Array(writer io.Writer, value []uint16) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint32Array(writer io.Writer, value []uint32) (n int, err os.Error) {
|
func PackUint32Array(writer io.Writer, value []uint32) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -255,7 +255,7 @@ func PackUint32Array(writer io.Writer, value []uint32) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUint64Array(writer io.Writer, value []uint64) (n int, err os.Error) {
|
func PackUint64Array(writer io.Writer, value []uint64) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -297,7 +297,7 @@ func PackUint64Array(writer io.Writer, value []uint64) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackUintArray(writer io.Writer, value []uint) (n int, err os.Error) {
|
func PackUintArray(writer io.Writer, value []uint) (n int, err error) {
|
||||||
switch unsafe.Sizeof(0) {
|
switch unsafe.Sizeof(0) {
|
||||||
case 4:
|
case 4:
|
||||||
return PackUint32Array(writer, *(*[]uint32)(unsafe.Pointer(&value)))
|
return PackUint32Array(writer, *(*[]uint32)(unsafe.Pointer(&value)))
|
||||||
@ -308,7 +308,7 @@ func PackUintArray(writer io.Writer, value []uint) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt8Array(writer io.Writer, value []int8) (n int, err os.Error) {
|
func PackInt8Array(writer io.Writer, value []int8) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -350,7 +350,7 @@ func PackInt8Array(writer io.Writer, value []int8) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt16Array(writer io.Writer, value []int16) (n int, err os.Error) {
|
func PackInt16Array(writer io.Writer, value []int16) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -392,7 +392,7 @@ func PackInt16Array(writer io.Writer, value []int16) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt32Array(writer io.Writer, value []int32) (n int, err os.Error) {
|
func PackInt32Array(writer io.Writer, value []int32) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -434,7 +434,7 @@ func PackInt32Array(writer io.Writer, value []int32) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackInt64Array(writer io.Writer, value []int64) (n int, err os.Error) {
|
func PackInt64Array(writer io.Writer, value []int64) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -476,7 +476,7 @@ func PackInt64Array(writer io.Writer, value []int64) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackIntArray(writer io.Writer, value []int) (n int, err os.Error) {
|
func PackIntArray(writer io.Writer, value []int) (n int, err error) {
|
||||||
switch unsafe.Sizeof(0) {
|
switch unsafe.Sizeof(0) {
|
||||||
case 4:
|
case 4:
|
||||||
return PackInt32Array(writer, *(*[]int32)(unsafe.Pointer(&value)))
|
return PackInt32Array(writer, *(*[]int32)(unsafe.Pointer(&value)))
|
||||||
@ -487,7 +487,7 @@ func PackIntArray(writer io.Writer, value []int) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackFloat32Array(writer io.Writer, value []float32) (n int, err os.Error) {
|
func PackFloat32Array(writer io.Writer, value []float32) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -529,7 +529,7 @@ func PackFloat32Array(writer io.Writer, value []float32) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackFloat64Array(writer io.Writer, value []float64) (n int, err os.Error) {
|
func PackFloat64Array(writer io.Writer, value []float64) (n int, err error) {
|
||||||
if len(value) < 16 {
|
if len(value) < 16 {
|
||||||
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
n, err := writer.Write([]byte{0x90 | byte(len(value))})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -571,7 +571,7 @@ func PackFloat64Array(writer io.Writer, value []float64) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackArray(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
func PackArray(writer io.Writer, value reflect.Value) (n int, err error) {
|
||||||
{
|
{
|
||||||
elemType := value.Type().Elem()
|
elemType := value.Type().Elem()
|
||||||
if (elemType.Kind() == reflect.Uint || elemType.Kind() == reflect.Uint8 || elemType.Kind() == reflect.Uint16 || elemType.Kind() == reflect.Uint32 || elemType.Kind() == reflect.Uint64 || elemType.Kind() == reflect.Uintptr) &&
|
if (elemType.Kind() == reflect.Uint || elemType.Kind() == reflect.Uint8 || elemType.Kind() == reflect.Uint16 || elemType.Kind() == reflect.Uint32 || elemType.Kind() == reflect.Uint64 || elemType.Kind() == reflect.Uintptr) &&
|
||||||
@ -622,7 +622,7 @@ func PackArray(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackMap(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
func PackMap(writer io.Writer, value reflect.Value) (n int, err error) {
|
||||||
keys := value.MapKeys()
|
keys := value.MapKeys()
|
||||||
if value.Len() < 16 {
|
if value.Len() < 16 {
|
||||||
n, err := writer.Write([]byte{0x80 | byte(len(keys))})
|
n, err := writer.Write([]byte{0x80 | byte(len(keys))})
|
||||||
@ -680,7 +680,7 @@ func PackMap(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func PackValue(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
func PackValue(writer io.Writer, value reflect.Value) (n int, err error) {
|
||||||
if !value.IsValid() || value.Type() == nil {
|
if !value.IsValid() || value.Type() == nil {
|
||||||
return PackNil(writer)
|
return PackNil(writer)
|
||||||
}
|
}
|
||||||
@ -710,7 +710,7 @@ func PackValue(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Packs a given value and writes it into the specified writer.
|
// Packs a given value and writes it into the specified writer.
|
||||||
func Pack(writer io.Writer, value interface{}) (n int, err os.Error) {
|
func Pack(writer io.Writer, value interface{}) (n int, err error) {
|
||||||
if value == nil {
|
if value == nil {
|
||||||
return PackNil(writer)
|
return PackNil(writer)
|
||||||
}
|
}
|
||||||
|
33
go/unpack.go
33
go/unpack.go
@ -2,13 +2,12 @@ package msgpack
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"unsafe"
|
|
||||||
"strconv"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strconv"
|
||||||
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
func readByte(reader io.Reader) (v uint8, err os.Error) {
|
func readByte(reader io.Reader) (v uint8, err error) {
|
||||||
data := [1]byte{}
|
data := [1]byte{}
|
||||||
_, e := reader.Read(data[0:])
|
_, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -17,7 +16,7 @@ func readByte(reader io.Reader) (v uint8, err os.Error) {
|
|||||||
return data[0], nil
|
return data[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readUint16(reader io.Reader) (v uint16, n int, err os.Error) {
|
func readUint16(reader io.Reader) (v uint16, n int, err error) {
|
||||||
data := [2]byte{}
|
data := [2]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -26,7 +25,7 @@ func readUint16(reader io.Reader) (v uint16, n int, err os.Error) {
|
|||||||
return (uint16(data[0]) << 8) | uint16(data[1]), n, nil
|
return (uint16(data[0]) << 8) | uint16(data[1]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readUint32(reader io.Reader) (v uint32, n int, err os.Error) {
|
func readUint32(reader io.Reader) (v uint32, n int, err error) {
|
||||||
data := [4]byte{}
|
data := [4]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -35,7 +34,7 @@ func readUint32(reader io.Reader) (v uint32, n int, err os.Error) {
|
|||||||
return (uint32(data[0]) << 24) | (uint32(data[1]) << 16) | (uint32(data[2]) << 8) | uint32(data[3]), n, nil
|
return (uint32(data[0]) << 24) | (uint32(data[1]) << 16) | (uint32(data[2]) << 8) | uint32(data[3]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readUint64(reader io.Reader) (v uint64, n int, err os.Error) {
|
func readUint64(reader io.Reader) (v uint64, n int, err error) {
|
||||||
data := [8]byte{}
|
data := [8]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -44,7 +43,7 @@ func readUint64(reader io.Reader) (v uint64, n int, err os.Error) {
|
|||||||
return (uint64(data[0]) << 56) | (uint64(data[1]) << 48) | (uint64(data[2]) << 40) | (uint64(data[3]) << 32) | (uint64(data[4]) << 24) | (uint64(data[5]) << 16) | (uint64(data[6]) << 8) | uint64(data[7]), n, nil
|
return (uint64(data[0]) << 56) | (uint64(data[1]) << 48) | (uint64(data[2]) << 40) | (uint64(data[3]) << 32) | (uint64(data[4]) << 24) | (uint64(data[5]) << 16) | (uint64(data[6]) << 8) | uint64(data[7]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readInt16(reader io.Reader) (v int16, n int, err os.Error) {
|
func readInt16(reader io.Reader) (v int16, n int, err error) {
|
||||||
data := [2]byte{}
|
data := [2]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -53,7 +52,7 @@ func readInt16(reader io.Reader) (v int16, n int, err os.Error) {
|
|||||||
return (int16(data[0]) << 8) | int16(data[1]), n, nil
|
return (int16(data[0]) << 8) | int16(data[1]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readInt32(reader io.Reader) (v int32, n int, err os.Error) {
|
func readInt32(reader io.Reader) (v int32, n int, err error) {
|
||||||
data := [4]byte{}
|
data := [4]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -62,7 +61,7 @@ func readInt32(reader io.Reader) (v int32, n int, err os.Error) {
|
|||||||
return (int32(data[0]) << 24) | (int32(data[1]) << 16) | (int32(data[2]) << 8) | int32(data[3]), n, nil
|
return (int32(data[0]) << 24) | (int32(data[1]) << 16) | (int32(data[2]) << 8) | int32(data[3]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readInt64(reader io.Reader) (v int64, n int, err os.Error) {
|
func readInt64(reader io.Reader) (v int64, n int, err error) {
|
||||||
data := [8]byte{}
|
data := [8]byte{}
|
||||||
n, e := reader.Read(data[0:])
|
n, e := reader.Read(data[0:])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -71,7 +70,7 @@ func readInt64(reader io.Reader) (v int64, n int, err os.Error) {
|
|||||||
return (int64(data[0]) << 56) | (int64(data[1]) << 48) | (int64(data[2]) << 40) | (int64(data[3]) << 32) | (int64(data[4]) << 24) | (int64(data[5]) << 16) | (int64(data[6]) << 8) | int64(data[7]), n, nil
|
return (int64(data[0]) << 56) | (int64(data[1]) << 48) | (int64(data[2]) << 40) | (int64(data[3]) << 32) | (int64(data[4]) << 24) | (int64(data[5]) << 16) | (int64(data[6]) << 8) | int64(data[7]), n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpackArray(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.Error) {
|
func unpackArray(reader io.Reader, nelems uint) (v reflect.Value, n int, err error) {
|
||||||
retval := make([]interface{}, nelems)
|
retval := make([]interface{}, nelems)
|
||||||
nbytesread := 0
|
nbytesread := 0
|
||||||
var i uint
|
var i uint
|
||||||
@ -86,7 +85,7 @@ func unpackArray(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.
|
|||||||
return reflect.ValueOf(retval), nbytesread, nil
|
return reflect.ValueOf(retval), nbytesread, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpackArrayReflected(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.Error) {
|
func unpackArrayReflected(reader io.Reader, nelems uint) (v reflect.Value, n int, err error) {
|
||||||
retval := make([]reflect.Value, nelems)
|
retval := make([]reflect.Value, nelems)
|
||||||
nbytesread := 0
|
nbytesread := 0
|
||||||
var i uint
|
var i uint
|
||||||
@ -101,7 +100,7 @@ func unpackArrayReflected(reader io.Reader, nelems uint) (v reflect.Value, n int
|
|||||||
return reflect.ValueOf(retval), nbytesread, nil
|
return reflect.ValueOf(retval), nbytesread, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpackMap(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.Error) {
|
func unpackMap(reader io.Reader, nelems uint) (v reflect.Value, n int, err error) {
|
||||||
retval := make(map[interface{}]interface{})
|
retval := make(map[interface{}]interface{})
|
||||||
nbytesread := 0
|
nbytesread := 0
|
||||||
var i uint
|
var i uint
|
||||||
@ -121,7 +120,7 @@ func unpackMap(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.Er
|
|||||||
return reflect.ValueOf(retval), nbytesread, nil
|
return reflect.ValueOf(retval), nbytesread, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpackMapReflected(reader io.Reader, nelems uint) (v reflect.Value, n int, err os.Error) {
|
func unpackMapReflected(reader io.Reader, nelems uint) (v reflect.Value, n int, err error) {
|
||||||
retval := make(map[interface{}]reflect.Value)
|
retval := make(map[interface{}]reflect.Value)
|
||||||
nbytesread := 0
|
nbytesread := 0
|
||||||
var i uint
|
var i uint
|
||||||
@ -141,7 +140,7 @@ func unpackMapReflected(reader io.Reader, nelems uint) (v reflect.Value, n int,
|
|||||||
return reflect.ValueOf(retval), nbytesread, nil
|
return reflect.ValueOf(retval), nbytesread, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpack(reader io.Reader, reflected bool) (v reflect.Value, n int, err os.Error) {
|
func unpack(reader io.Reader, reflected bool) (v reflect.Value, n int, err error) {
|
||||||
var retval reflect.Value
|
var retval reflect.Value
|
||||||
var nbytesread int = 0
|
var nbytesread int = 0
|
||||||
|
|
||||||
@ -354,13 +353,13 @@ func unpack(reader io.Reader, reflected bool) (v reflect.Value, n int, err os.Er
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reads a value from the reader, unpack and returns it.
|
// Reads a value from the reader, unpack and returns it.
|
||||||
func Unpack(reader io.Reader) (v reflect.Value, n int, err os.Error) {
|
func Unpack(reader io.Reader) (v reflect.Value, n int, err error) {
|
||||||
return unpack(reader, false)
|
return unpack(reader, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reads unpack a value from the reader, unpack and returns it. When the
|
// Reads unpack a value from the reader, unpack and returns it. When the
|
||||||
// value is an array or map, leaves the elements wrapped by corresponding
|
// value is an array or map, leaves the elements wrapped by corresponding
|
||||||
// wrapper objects defined in reflect package.
|
// wrapper objects defined in reflect package.
|
||||||
func UnpackReflected(reader io.Reader) (v reflect.Value, n int, err os.Error) {
|
func UnpackReflected(reader io.Reader) (v reflect.Value, n int, err error) {
|
||||||
return unpack(reader, true)
|
return unpack(reader, true)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user