summaryrefslogtreecommitdiff
path: root/usr/austin/sym/binary.go
diff options
context:
space:
mode:
Diffstat (limited to 'usr/austin/sym/binary.go')
-rw-r--r--usr/austin/sym/binary.go194
1 files changed, 0 insertions, 194 deletions
diff --git a/usr/austin/sym/binary.go b/usr/austin/sym/binary.go
deleted file mode 100644
index be395f209..000000000
--- a/usr/austin/sym/binary.go
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package sym
-
-import (
- "bufio";
- "io";
- "log";
- "os";
- "reflect";
-)
-
-type byteOrder interface {
- Uint16(b []byte) uint16;
- Uint32(b []byte) uint32;
- Uint64(b []byte) uint64;
- String() string;
-}
-
-type olsb struct {}
-
-func (olsb) Uint16(b []byte) uint16 {
- return uint16(b[0]) | uint16(b[1]) << 8;
-}
-
-func (olsb) Uint32(b []byte) uint32 {
- return uint32(b[0]) | uint32(b[1]) << 8 | uint32(b[2]) << 16 | uint32(b[3]) << 24;
-}
-
-func (olsb) Uint64(b []byte) uint64 {
- return uint64(b[0]) | uint64(b[1]) << 8 | uint64(b[2]) << 16 | uint64(b[3]) << 24 | uint64(b[4]) << 32 | uint64(b[5]) << 40 | uint64(b[6]) << 48 | uint64(b[7]) << 56;
-}
-
-func (olsb) String() string {
- return "LSB";
-}
-
-type omsb struct {}
-
-func (omsb) Uint16(b []byte) uint16 {
- return uint16(b[1]) | uint16(b[0]) << 8;
-}
-
-func (omsb) Uint32(b []byte) uint32 {
- return uint32(b[3]) | uint32(b[2]) << 8 | uint32(b[1]) << 16 | uint32(b[0]) << 24;
-}
-
-func (omsb) Uint64(b []byte) uint64 {
- return uint64(b[7]) | uint64(b[6]) << 8 | uint64(b[5]) << 16 | uint64(b[4]) << 24 | uint64(b[3]) << 32 | uint64(b[2]) << 40 | uint64(b[1]) << 48 | uint64(b[0]) << 56;
-}
-
-func (omsb) String() string {
- return "MSB";
-}
-
-var (
- lsb = olsb{};
- msb = omsb{};
-)
-
-// A binaryReader decodes binary data from another reader. On an
-// error, the Read methods simply return 0 and record the error, to
-// make it more convenient to decode long sequences of binary data.
-// The caller should use the Error method when convenient to check
-// for errors.
-type binaryReader struct {
- *bufio.Reader;
- err os.Error;
- order byteOrder;
-}
-
-// newBinaryReader creates a new binary data reader backed by the
-// given reader and using the given byte order for decoding.
-func newBinaryReader(r io.Reader, o byteOrder) *binaryReader {
- return &binaryReader{bufio.NewReader(r), nil, o};
-}
-
-// Error returns the recorded error, or nil if no error has occurred.
-func (r *binaryReader) Error() os.Error {
- return r.err;
-}
-
-func (r *binaryReader) ReadUint8() uint8 {
- var buf [1]byte;
- _, err := io.ReadFull(r.Reader, &buf);
- if r.err == nil && err != nil {
- r.err = err;
- }
- return buf[0];
-}
-
-func (r *binaryReader) ReadUint16() uint16 {
- var buf [2]byte;
- _, err := io.ReadFull(r.Reader, &buf);
- if r.err == nil && err != nil {
- r.err = err;
- }
- return r.order.Uint16(&buf);
-}
-
-func (r *binaryReader) ReadUint32() uint32 {
- var buf [4]byte;
- _, err := io.ReadFull(r.Reader, &buf);
- if r.err == nil && err != nil {
- r.err = err;
- }
- return r.order.Uint32(&buf);
-}
-
-func (r *binaryReader) ReadUint64() uint64 {
- var buf [8]byte;
- _, err := io.ReadFull(r.Reader, &buf);
- if r.err == nil && err != nil {
- r.err = err;
- }
- return r.order.Uint64(&buf);
-}
-
-func (r *binaryReader) ReadInt8() int8 {
- return int8(r.ReadUint8());
-}
-
-func (r *binaryReader) ReadInt16() int16 {
- return int16(r.ReadUint16());
-}
-
-func (r *binaryReader) ReadInt32() int32 {
- return int32(r.ReadUint32());
-}
-
-func (r *binaryReader) ReadInt64() int64 {
- return int64(r.ReadUint64());
-}
-
-// ReadCString reads a NUL-terminated string.
-func (r *binaryReader) ReadCString() string {
- str, err := r.Reader.ReadString('\x00');
- if r.err == nil && err != nil {
- r.err = err;
- }
- n := len(str);
- if n > 0 {
- str = str[0:n-1];
- }
- return str;
-}
-
-// ReadValue reads a value according to its reflected type. This can
-// read any of the types for which there is a regular Read method,
-// plus structs and arrays. It assumes structs contain no padding.
-func (r *binaryReader) ReadValue(v reflect.Value) {
- switch v := v.(type) {
- case *reflect.ArrayValue:
- l := v.Len();
- for i := 0; i < l; i++ {
- r.ReadValue(v.Elem(i));
- }
- case *reflect.StructValue:
- l := v.NumField();
- for i := 0; i < l; i++ {
- r.ReadValue(v.Field(i));
- }
-
- case *reflect.Uint8Value:
- v.Set(r.ReadUint8());
- case *reflect.Uint16Value:
- v.Set(r.ReadUint16());
- case *reflect.Uint32Value:
- v.Set(r.ReadUint32());
- case *reflect.Uint64Value:
- v.Set(r.ReadUint64());
- case *reflect.Int8Value:
- v.Set(r.ReadInt8());
- case *reflect.Int16Value:
- v.Set(r.ReadInt16());
- case *reflect.Int32Value:
- v.Set(r.ReadInt32());
- case *reflect.Int64Value:
- v.Set(r.ReadInt64());
- case *reflect.StringValue:
- v.Set(r.ReadCString());
-
- default:
- log.Crashf("Value of unexpected type %T", v);
- }
-}
-
-// ReadAny is a convenience wrapper for ReadValue. It can be passed a
-// pointer any type that can be decoded by ReadValue.
-func (r *binaryReader) ReadAny(out interface {}) {
- r.ReadValue(reflect.Indirect(reflect.NewValue(out)));
-}