Documentation
¶
Overview ¶
Package buffer provides high-performance byte buffer types.
Index ¶
- type Buffer
- func (buffer Buffer) Bytes() []byte
- func (buffer Buffer) BytesView() []byte
- func (buffer *Buffer) Clear()
- func (buffer *Buffer) CommitBulkRead(length uint)
- func (buffer *Buffer) CommitBulkWrite(length uint)
- func (buffer Buffer) DebugString() string
- func (buffer Buffer) GoString() string
- func (buffer *Buffer) Init(numBits uint)
- func (buffer Buffer) IsEmpty() bool
- func (buffer Buffer) IsFull() bool
- func (buffer Buffer) Len() uint
- func (buffer Buffer) NumBits() uint
- func (buffer *Buffer) PrepareBulkRead(length uint) []byte
- func (buffer *Buffer) PrepareBulkWrite(length uint) []byte
- func (buffer *Buffer) Read(data []byte) (int, error)
- func (buffer *Buffer) ReadByte() (byte, error)
- func (buffer *Buffer) ReadFrom(r io.Reader) (int64, error)
- func (buffer Buffer) Size() uint
- func (buffer Buffer) String() string
- func (buffer *Buffer) Swap(other *Buffer)
- func (buffer *Buffer) Write(data []byte) (int, error)
- func (buffer *Buffer) WriteByte(ch byte) error
- func (buffer *Buffer) WriteTo(w io.Writer) (int64, error)
- type Error
- type LZ77
- func (lz77 *LZ77) Advance() (buf []byte, matchDistance uint, matchLength uint, matchFound bool)
- func (lz77 LZ77) BufferBytes() []byte
- func (lz77 LZ77) BufferBytesView() []byte
- func (lz77 LZ77) BufferNumBits() uint
- func (lz77 LZ77) BufferSize() uint
- func (lz77 *LZ77) Clear()
- func (lz77 *LZ77) CommitBulkRead(length uint)
- func (lz77 *LZ77) CommitBulkWrite(length uint)
- func (lz77 LZ77) DebugString() string
- func (lz77 LZ77) GoString() string
- func (lz77 LZ77) HashNumBits() uint
- func (lz77 *LZ77) Init(o LZ77Options)
- func (lz77 LZ77) IsEmpty() bool
- func (lz77 LZ77) IsFull() bool
- func (lz77 LZ77) IsWindowEmpty() bool
- func (lz77 LZ77) IsWindowFull() bool
- func (lz77 LZ77) Len() uint
- func (lz77 LZ77) Options() LZ77Options
- func (lz77 *LZ77) PrepareBulkRead(length uint) []byte
- func (lz77 *LZ77) PrepareBulkWrite(length uint) []byte
- func (lz77 *LZ77) Read(data []byte) (int, error)
- func (lz77 *LZ77) ReadByte() (byte, error)
- func (lz77 *LZ77) SetWindow(data []byte)
- func (lz77 LZ77) String() string
- func (lz77 LZ77) WindowBytes() []byte
- func (lz77 LZ77) WindowBytesView() []byte
- func (lz77 *LZ77) WindowClear()
- func (lz77 LZ77) WindowLen() uint
- func (lz77 LZ77) WindowNumBits() uint
- func (lz77 LZ77) WindowSize() uint
- func (lz77 *LZ77) Write(data []byte) (int, error)
- func (lz77 *LZ77) WriteByte(ch byte) error
- type LZ77Options
- type Window
- func (window Window) Bytes() []byte
- func (window Window) BytesView() []byte
- func (window *Window) Clear()
- func (window *Window) CommitBulkWrite(length uint)
- func (window Window) DebugString() string
- func (window Window) GoString() string
- func (window Window) Hash(hashes ...hash.Hash)
- func (window Window) Hash32(fn func() hash.Hash32) uint32
- func (window *Window) Init(numBits uint)
- func (window Window) IsZero() bool
- func (window Window) LookupByte(distance uint) (byte, error)
- func (window Window) LookupSlice(distance uint, length uint) ([]byte, error)
- func (window Window) NumBits() uint
- func (window *Window) PrepareBulkWrite(length uint) []byte
- func (window Window) Size() uint
- func (window Window) String() string
- func (window *Window) Write(data []byte) (int, error)
- func (window *Window) WriteByte(ch byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Buffer ¶
type Buffer struct {
// contains filtered or unexported fields
}
Buffer implements a byte buffer. The Buffer has space for 2**N bytes for user-specified N.
func (*Buffer) CommitBulkRead ¶
CommitBulkRead completes the bulk read begun by the previous call to PrepareBulkRead. The argument must be between 0 and the length of the slice returned by PrepareBulkRead.
func (*Buffer) CommitBulkWrite ¶
CommitBulkWrite completes the bulk write begun by the previous call to PrepareBulkWrite. The argument must be between 0 and the length of the slice returned by PrepareBulkWrite.
func (Buffer) DebugString ¶
DebugString returns a detailed dump of the Buffer's internal state.
func (*Buffer) Init ¶
Init initializes the Buffer. The Buffer will hold a maximum of 2**N bits, where N is the argument provided. The argument must be a number between 0 and 31 inclusive.
func (*Buffer) PrepareBulkRead ¶
PrepareBulkRead obtains a slice from which the caller can read bytes. The bytes do not leave the buffer's contents until CommitBulkRead is called. If CommitBulkRead is not subsequently called, the read acts as a "peek" operation.
The returned slice may contain fewer bytes than requested; it will return a zero-length slice iff the buffer is empty. The caller must check its length before using it. A short but non-empty return slice does *not* indicate an empty buffer.
The returned slice is only valid until the next call to any mutating method on this Buffer; mutating methods are those which take a pointer receiver.
func (*Buffer) PrepareBulkWrite ¶
PrepareBulkWrite obtains a slice into which the caller can write bytes. The bytes do not become a part of the buffer's contents until CommitBulkWrite is called. If CommitBulkWrite is not subsequently called, the write is considered abandoned.
The returned slice may contain fewer bytes than requested; it will return a nil slice iff the buffer is full. The caller must check the slice's length before using it. A short but non-empty return slice does *not* indicate a full buffer.
The returned slice is only valid until the next call to any mutating method on this Buffer; mutating methods are those which take a pointer receiver.
func (*Buffer) Read ¶
Read reads a slice of bytes from the Buffer. If the buffer is empty, ErrEmpty is returned.
func (*Buffer) ReadByte ¶
ReadByte reads a single byte from the Buffer. If the buffer is empty, ErrEmpty is returned.
func (*Buffer) ReadFrom ¶
ReadFrom attempts to fill this Buffer by reading from the provided Reader. May return any error returned by the Reader, including io.EOF. If a nil error is returned, then the buffer is now full.
func (*Buffer) Write ¶
Write writes a slice of bytes to the Buffer. If the Buffer is full, as many bytes as possible are written to the Buffer and ErrFull is returned.
type Error ¶
type Error byte
Error is the type for the error constants returned by this package.
type LZ77 ¶
type LZ77 struct {
// contains filtered or unexported fields
}
LZ77 implements a combination Window/Buffer that uses the Window to remember bytes that were recently removed from the Buffer, and that hashes all data that enters the Window so that LZ77-style prefix matching can be made efficient.
func NewLZ77 ¶
func NewLZ77(o LZ77Options) *LZ77
NewLZ77 is a convenience function that allocates a LZ77 and calls Init on it.
func (*LZ77) Advance ¶
Advance moves a slice of bytes from the LZ77's Buffer to its Window. The nature of the slice depends on the LZ77's prefix match settings, the contents of the LZ77's Window, and the contents of the LZ77's Buffer.
func (LZ77) BufferBytes ¶ added in v3.1.0
BufferBytes allocates and returns a copy of the Hybrid's Buffer's contents.
func (LZ77) BufferBytesView ¶ added in v3.1.0
BufferBytesView returns a slice into the Hybrid's Buffer's contents.
func (LZ77) BufferNumBits ¶
BufferNumBits returns the size of the buffer in bits.
func (LZ77) BufferSize ¶
BufferSize returns the size of the buffer, in bytes.
func (*LZ77) Clear ¶
func (lz77 *LZ77) Clear()
Clear clears all data, emptying both the buffer and the sliding window.
func (*LZ77) CommitBulkRead ¶
CommitBulkRead completes the bulk read begun by the previous call to PrepareBulkRead. The argument must be between 0 and the length of the slice returned by PrepareBulkRead.
func (*LZ77) CommitBulkWrite ¶
CommitBulkWrite completes the bulk write begun by the previous call to PrepareBulkWrite. The argument must be between 0 and the length of the slice returned by PrepareBulkWrite.
func (LZ77) DebugString ¶
DebugString returns a detailed dump of the LZ77's internal state.
func (LZ77) HashNumBits ¶
HashNumBits returns the size of the hash function output in bits.
func (LZ77) IsWindowEmpty ¶ added in v3.1.0
IsWindowEmpty returns true iff the Window is empty.
func (LZ77) IsWindowFull ¶ added in v3.1.0
IsWindowFull returns true iff the Window is full.
func (LZ77) Options ¶
func (lz77 LZ77) Options() LZ77Options
Options returns a LZ77Options struct which can be used to construct a new LZ77 with the same settings.
func (*LZ77) PrepareBulkRead ¶
PrepareBulkRead obtains a slice from which the caller can read bytes. See Buffer.PrepareBulkRead for more details.
func (*LZ77) PrepareBulkWrite ¶
PrepareBulkWrite obtains a slice into which the caller can write bytes. See Buffer.PrepareBulkWrite for more details.
func (*LZ77) Read ¶
Read reads a slice of bytes from the LZ77's Buffer. If the buffer is empty, ErrEmpty is returned.
func (LZ77) WindowBytes ¶ added in v3.1.0
WindowBytes allocates and returns a copy of the Hybrid's Window's contents.
func (LZ77) WindowBytesView ¶ added in v3.1.0
WindowBytesView returns a slice into the Hybrid's Window's contents.
func (LZ77) WindowLen ¶ added in v3.1.0
WindowLen returns the number of bytes currently in the LZ77's Window.
func (LZ77) WindowNumBits ¶
WindowNumBits returns the size of the sliding window in bits.
func (LZ77) WindowSize ¶
WindowSize returns the size of the sliding window, in bytes.
type LZ77Options ¶
type LZ77Options struct { BufferNumBits uint WindowNumBits uint HashNumBits uint MinMatchLength uint MaxMatchLength uint MaxMatchDistance uint HasMinMatchLength bool HasMaxMatchLength bool HasMaxMatchDistance bool }
LZ77Options holds options for initializing an instance of LZ77.
func (LZ77Options) Equal ¶
func (opts LZ77Options) Equal(other LZ77Options) bool
Equal returns true iff the given LZ77Options is semantically equal to this one.
type Window ¶
type Window struct {
// contains filtered or unexported fields
}
Window implements a sliding window. The Window has space for 2**N bytes for user-specified N.
func (Window) BytesView ¶
BytesView returns a slice into the Window's contents.
The returned slice is only valid until the next call to any mutating method on this Window; mutating methods are those which take a pointer receiver.
func (*Window) CommitBulkWrite ¶
CommitBulkWrite completes the bulk write begun by the previous call to PrepareBulkWrite. The argument must be between 0 and the length of the slice returned by PrepareBulkWrite.
func (Window) DebugString ¶
DebugString returns a detailed dump of the Window's internal state.
func (Window) Hash ¶
Hash non-destructively writes the contents of the Window into the provided Hash object(s).
func (Window) Hash32 ¶
Hash32 is a convenience method that constructs a Hash32, calls Window.Hash with it, and calls Sum32 on it.
func (*Window) Init ¶
Init initializes the Window. The Window will hold a maximum of 2**N bits, where N is the argument provided. The argument must be a number between 0 and 31 inclusive.
func (Window) LookupByte ¶
LookupByte returns a byte which was written previously. The argument is the offset into the window, with 1 representing the most recently written byte and Window.Size() representing the oldest byte still within the Window.
func (Window) LookupSlice ¶ added in v3.2.0
LookupSlice returns a slice which was written previously. The distance argument measures the offset into the Window, with 1 representing the most recently written byte and Window.Size() representing the oldest byte still within the Window. The length argument is the maximum length of the slice to be returned; it may be shorter if it would otherwise extend past the most recently written byte.
func (*Window) PrepareBulkWrite ¶
PrepareBulkWrite obtains a slice into which the caller can write bytes. The bytes do not become a part of the Window's contents until CommitBulkWrite is called. If CommitBulkWrite is not subsequently called, the write is considered abandoned.
The returned slice may contain fewer bytes than requested, if the provided length is greater than the size of the Window. The caller must check the slice's length before using it.
The returned slice is only valid until the next call to any mutating method on this Window; mutating methods are those which take a pointer receiver.