summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Schwartz <scotts@golang.org>2009-06-19 16:29:30 -0700
committerScott Schwartz <scotts@golang.org>2009-06-19 16:29:30 -0700
commit0ddac0c5ded6e6f018d8d2f253e9b2e9406b0596 (patch)
tree771c7776356289df00a53726ff1a2974fdd1fc15
parent9e2437e53f1c28550d51d34e323642074a730d12 (diff)
downloadgolang-0ddac0c5ded6e6f018d8d2f253e9b2e9406b0596.tar.gz
Add ReadByte to bytebuffer
R=rsc APPROVED=rsc DELTA=24 (24 added, 0 deleted, 0 changed) OCL=30459 CL=30540
-rw-r--r--src/pkg/io/bytebuffer.go11
-rw-r--r--src/pkg/io/bytebuffer_test.go13
2 files changed, 24 insertions, 0 deletions
diff --git a/src/pkg/io/bytebuffer.go b/src/pkg/io/bytebuffer.go
index 921ddb17a..000c05352 100644
--- a/src/pkg/io/bytebuffer.go
+++ b/src/pkg/io/bytebuffer.go
@@ -102,6 +102,17 @@ func (b *ByteBuffer) Read(p []byte) (n int, err os.Error) {
return n, nil
}
+// ReadByte reads and returns the next byte from the buffer.
+// If no byte is available, it returns error ErrEOF.
+func (b *ByteBuffer) ReadByte() (c byte, err os.Error) {
+ if b.off >= len(b.buf) {
+ return 0, ErrEOF;
+ }
+ c = b.buf[b.off];
+ b.off++;
+ return c, nil;
+}
+
// NewByteBufferFromArray creates and initializes a new ByteBuffer
// with buf as its initial contents.
func NewByteBufferFromArray(buf []byte) *ByteBuffer {
diff --git a/src/pkg/io/bytebuffer_test.go b/src/pkg/io/bytebuffer_test.go
index 5a5432223..0ba83e916 100644
--- a/src/pkg/io/bytebuffer_test.go
+++ b/src/pkg/io/bytebuffer_test.go
@@ -118,6 +118,19 @@ func TestBasicOperations(t *testing.T) {
empty(t, "TestBasicOperations (9)", &buf, string(data[0 : 20]), make([]byte, 5));
empty(t, "TestBasicOperations (10)", &buf, "", make([]byte, 100));
+
+ buf.WriteByte(data[1]);
+ c, err := buf.ReadByte();
+ if err != nil {
+ t.Errorf("ReadByte unexpected eof\n");
+ }
+ if c != data[1] {
+ t.Errorf("ReadByte wrong value c=%v\n", c);
+ }
+ c, err = buf.ReadByte();
+ if err == nil {
+ t.Errorf("ReadByte unexpected not eof\n");
+ }
}
}