runebuffer

package module
v0.0.0-...-2cd74bd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2022 License: MIT Imports: 3 Imported by: 1

Documentation

Index

Constants

View Source
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()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL