memory

package
v8.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 8 more Imports: 8 Imported by: 5

Documentation

Overview

Package memory provides support for allocating and manipulating memory at a low level.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Set

func Set(buf []byte, c byte)

Set assigns the value c to every element of the slice buf.

Types

type Allocator

type Allocator interface {
	Allocate(size int) []byte
	Reallocate(size int, b []byte) []byte
	Free(b []byte)
}
var DefaultAllocator Allocator = NewGoAllocator()

DefaultAllocator is a default implementation of Allocator and can be used anywhere an Allocator is required.

DefaultAllocator is safe to use from multiple goroutines.

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer is a wrapper type for a buffer of bytes.

func NewBufferBytes

func NewBufferBytes(data []byte) *Buffer

NewBufferBytes creates a fixed-size buffer from the specified data.

func NewResizableBuffer

func NewResizableBuffer(mem Allocator) *Buffer

NewResizableBuffer creates a mutable, resizable buffer with an Allocator for managing memory.

func (*Buffer) Buf

func (b *Buffer) Buf() []byte

Buf returns the slice of memory allocated by the Buffer, which is adjusted by calling Reserve.

func (*Buffer) Bytes

func (b *Buffer) Bytes() []byte

Bytes returns a slice of size Len, which is adjusted by calling Resize.

func (*Buffer) Cap

func (b *Buffer) Cap() int

Cap returns the capacity of the buffer.

func (*Buffer) Len

func (b *Buffer) Len() int

Len returns the length of the buffer.

func (*Buffer) Mutable

func (b *Buffer) Mutable() bool

Mutable returns a bool indicating whether the buffer is mutable or not.

func (*Buffer) Release

func (b *Buffer) Release()

Release decreases the reference count by 1. When the reference count goes to zero, the memory is freed.

func (*Buffer) Reserve

func (b *Buffer) Reserve(capacity int)

Reserve reserves the provided amount of capacity for the buffer.

func (*Buffer) Reset

func (b *Buffer) Reset(buf []byte)

Reset resets the buffer for reuse.

func (*Buffer) Resize

func (b *Buffer) Resize(newSize int)

Resize resizes the buffer to the target size.

func (*Buffer) ResizeNoShrink

func (b *Buffer) ResizeNoShrink(newSize int)

ResizeNoShrink resizes the buffer to the target size, but will not shrink it.

func (*Buffer) Retain

func (b *Buffer) Retain()

Retain increases the reference count by 1.

type CheckedAllocator

type CheckedAllocator struct {
	// contains filtered or unexported fields
}

func NewCheckedAllocator

func NewCheckedAllocator(mem Allocator) *CheckedAllocator

func (*CheckedAllocator) Allocate

func (a *CheckedAllocator) Allocate(size int) []byte

func (*CheckedAllocator) AssertSize

func (a *CheckedAllocator) AssertSize(t TestingT, sz int)

func (*CheckedAllocator) CurrentAlloc

func (a *CheckedAllocator) CurrentAlloc() int

func (*CheckedAllocator) Free

func (a *CheckedAllocator) Free(b []byte)

func (*CheckedAllocator) Reallocate

func (a *CheckedAllocator) Reallocate(size int, b []byte) []byte

type CheckedAllocatorScope

type CheckedAllocatorScope struct {
	// contains filtered or unexported fields
}

func NewCheckedAllocatorScope

func NewCheckedAllocatorScope(alloc *CheckedAllocator) *CheckedAllocatorScope

func (*CheckedAllocatorScope) CheckSize

func (c *CheckedAllocatorScope) CheckSize(t TestingT)

type GoAllocator

type GoAllocator struct{}

func NewGoAllocator

func NewGoAllocator() *GoAllocator

func (*GoAllocator) Allocate

func (a *GoAllocator) Allocate(size int) []byte

func (*GoAllocator) Free

func (a *GoAllocator) Free(b []byte)

func (*GoAllocator) Reallocate

func (a *GoAllocator) Reallocate(size int, b []byte) []byte

type TestingT

type TestingT interface {
	Errorf(format string, args ...interface{})
	Helper()
}

Jump to

Keyboard shortcuts

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