From: Robert Griesemer Date: Thu, 26 May 2011 18:03:52 +0000 (-0700) Subject: io: add ByteScanner, RuneScanner interfaces X-Git-Tag: weekly.2011-06-02~99 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5b1fb9d5c6d57bf9abea2ca42a72012473bc269a;p=gostls13.git io: add ByteScanner, RuneScanner interfaces R=r, rsc CC=golang-dev https://golang.org/cl/4530069 --- diff --git a/src/pkg/io/io.go b/src/pkg/io/io.go index 1ad1129923..846dcacb5a 100644 --- a/src/pkg/io/io.go +++ b/src/pkg/io/io.go @@ -162,6 +162,18 @@ type ByteReader interface { ReadByte() (c byte, err os.Error) } +// ByteScanner is the interface that adds the UnreadByte method to the +// basic ReadByte method. +// +// UnreadByte causes the next call to ReadByte to return the same byte +// as the previous call to ReadByte. +// It may be an error to call UnreadByte twice without an intervening +// call to ReadByte. +type ByteScanner interface { + ByteReader + UnreadByte() os.Error +} + // RuneReader is the interface that wraps the ReadRune method. // // ReadRune reads a single UTF-8 encoded Unicode character @@ -171,6 +183,18 @@ type RuneReader interface { ReadRune() (rune int, size int, err os.Error) } +// RuneScanner is the interface that adds the UnreadRune method to the +// basic ReadRune method. +// +// UnreadRune causes the next call to ReadRune to return the same rune +// as the previous call to ReadRune. +// It may be an error to call UnreadRune twice without an intervening +// call to ReadRune. +type RuneScanner interface { + RuneReader + UnreadRune() os.Error +} + // WriteString writes the contents of the string s to w, which accepts an array of bytes. func WriteString(w Writer, s string) (n int, err os.Error) { return w.Write([]byte(s))