Documentation
¶
Index ¶
Constants ¶
const (
DefaultBufferSize = 1024
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type RuneBuffer ¶
type RuneBuffer struct {
// contains filtered or unexported fields
}
RuneBuffer adds an extra layer of buffering on top of bufio.Reader that works entirely with runes. This enables multiple UnreadRune calls without an intermediate read operation. This is a ring buffer, so the max number of UnreadRune calls will always be <= DefaultBufferSize (or the size passed to NewRuneBufferWithSize).
func NewRuneBuffer ¶
func NewRuneBuffer(r io.Reader) *RuneBuffer
func NewRuneBufferWithSize ¶
func NewRuneBufferWithSize(r io.Reader, size int) *RuneBuffer
func (*RuneBuffer) ReadRune ¶
func (b *RuneBuffer) ReadRune() (rune, error)
ReadRune will read the next rune in the buffer, pulling from the io.Reader if necessary.
func (*RuneBuffer) UnreadNumRunes ¶
func (b *RuneBuffer) UnreadNumRunes(num int)
UnreadNumRunes will unread the specified number of runes.
func (*RuneBuffer) UnreadRune ¶
func (b *RuneBuffer) UnreadRune()
UnreadRune will unread the previously read rune, if it exists. If no runes have been read, or the read pointer has reached the beginning of the buffer, this is a no-op.
type ThreadSafeRuneBuffer ¶
type ThreadSafeRuneBuffer struct {
*RuneBuffer
// contains filtered or unexported fields
}
ThreadSafeRuneBuffer just puts a sync.Mutex in front of public operations of a RuneBuffer.
func (*ThreadSafeRuneBuffer) ReadRune ¶
func (t *ThreadSafeRuneBuffer) ReadRune() (rune, error)
func (*ThreadSafeRuneBuffer) UnreadNumRunes ¶
func (t *ThreadSafeRuneBuffer) UnreadNumRunes(num int)
func (*ThreadSafeRuneBuffer) UnreadRune ¶
func (t *ThreadSafeRuneBuffer) UnreadRune()