gollect

package module
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2022 License: MIT Imports: 6 Imported by: 0

README

Gollect

Go Reference

Gollect is a simple collections/data structure library with functionality similar to the STL collections from C++. It utilizes Go's new generics functionality.

Contents

This package currently implements the following collections.

Vector

A resizable array type, functionally a wrapper around a Go slice.

my_vector := NewVectorFromData[int64](1, 2, 3, 4, 5)
SortableVector

A Vector with the ability to sort it's elements. Requires elements satisfy the constraints.Ordered interface (from golang.org/x/exp/constraints)

Deque

A Deque is a double-ended queue.

Queue

A Queue is a single-ended queue.

Stack

A Stack is a FIFO stack.

Destructible

Elements of the collections included in this package can implement the Destructible interface which allows the collections to call Destruct() on the elements when they are removed from the collections.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ChunkMultiplier = 4 // TODO: try to fine-tune this magic number a little bit

ChunkMultiplier influences how large a Vector must be before Searches are performed in parallel.

Functions

This section is empty.

Types

type Byte added in v0.1.2

type Byte byte

func (*Byte) Equal added in v0.1.2

func (i *Byte) Equal(other Byte) bool

func (*Byte) GreaterThan added in v0.1.2

func (i *Byte) GreaterThan(other Byte) bool

func (*Byte) GreaterThanOrEqual added in v0.1.2

func (i *Byte) GreaterThanOrEqual(other Byte) bool

func (*Byte) LesserThan added in v0.1.2

func (i *Byte) LesserThan(other Byte) bool

func (*Byte) LesserThanOrEqual added in v0.1.2

func (i *Byte) LesserThanOrEqual(other Byte) bool

func (*Byte) NotEqual added in v0.1.2

func (i *Byte) NotEqual(other Byte) bool

type CollectionVisitor added in v0.1.2

type CollectionVisitor[T any] func(*T, *bool)

CollectionVisitor is a function that will be called on every element of a collection.

type Comparable added in v0.1.2

type Comparable[T any] interface {
	EqualityComparable[T]
	LesserThan(other T) bool
	GreaterThan(other T) bool
	LesserThanOrEqual(other T) bool
	GreaterThanOrEqual(other T) bool
}

type Complex128 added in v0.1.2

type Complex128 complex128

func (*Complex128) Equal added in v0.1.2

func (i *Complex128) Equal(other Complex128) bool

func (*Complex128) NotEqual added in v0.1.2

func (i *Complex128) NotEqual(other Complex128) bool

type Complex64 added in v0.1.2

type Complex64 complex64

func (*Complex64) Equal added in v0.1.2

func (i *Complex64) Equal(other Complex64) bool

func (*Complex64) NotEqual added in v0.1.2

func (i *Complex64) NotEqual(other Complex64) bool

type Deque

type Deque[T any] struct {
	// contains filtered or unexported fields
}

func MakeDeque

func MakeDeque[T any]() *Deque[T]

func MakeDequeFromData

func MakeDequeFromData[T any](values ...T) *Deque[T]

func MakeDequeFromDataRef

func MakeDequeFromDataRef[T any](values ...*T) *Deque[T]

func MakeDequeFromDeque

func MakeDequeFromDeque[T any](other Deque[T]) *Deque[T]

func NewDeque

func NewDeque[T any]() Deque[T]

func NewDequeFromData

func NewDequeFromData[T any](values ...T) Deque[T]

func NewDequeFromDataRef

func NewDequeFromDataRef[T any](values ...*T) Deque[T]

func NewDequeFromDeque

func NewDequeFromDeque[T any](other Deque[T]) Deque[T]

func (*Deque[T]) Back

func (d *Deque[T]) Back() T

func (*Deque[T]) BackRef

func (d *Deque[T]) BackRef() *T

func (*Deque[T]) Clear

func (d *Deque[T]) Clear()

func (*Deque[T]) Data

func (d *Deque[T]) Data() []T

func (*Deque[T]) Front

func (d *Deque[T]) Front() T

func (*Deque[T]) FrontRef

func (d *Deque[T]) FrontRef() *T

func (*Deque[T]) IsEmpty

func (d *Deque[T]) IsEmpty() bool

func (*Deque[T]) PopBack

func (d *Deque[T]) PopBack()

func (*Deque[T]) PopFront

func (d *Deque[T]) PopFront()

func (*Deque[T]) PushBack

func (d *Deque[T]) PushBack(value T)

func (*Deque[T]) PushBackRef

func (d *Deque[T]) PushBackRef(value *T)

func (*Deque[T]) PushFront

func (d *Deque[T]) PushFront(value T)

func (*Deque[T]) PushFrontRef

func (d *Deque[T]) PushFrontRef(value *T)

func (*Deque[T]) Size

func (d *Deque[T]) Size() int

func (*Deque[T]) String added in v0.1.2

func (d *Deque[T]) String() string

func (*Deque[T]) Swap

func (d *Deque[T]) Swap(other *Deque[T])

type Destructible

type Destructible interface {
	Destruct()
}

Destructible identifies a type that should have some kind of tear-down code executed when they are no longer being used.

type EqualityComparable added in v0.1.2

type EqualityComparable[T any] interface {
	Equal(other T) bool
	NotEqual(other T) bool
}

type Float32 added in v0.1.2

type Float32 float32

func (*Float32) Equal added in v0.1.2

func (i *Float32) Equal(other Float32) bool

func (*Float32) GreaterThan added in v0.1.2

func (i *Float32) GreaterThan(other Float32) bool

func (*Float32) GreaterThanOrEqual added in v0.1.2

func (i *Float32) GreaterThanOrEqual(other Float32) bool

func (*Float32) LesserThan added in v0.1.2

func (i *Float32) LesserThan(other Float32) bool

func (*Float32) LesserThanOrEqual added in v0.1.2

func (i *Float32) LesserThanOrEqual(other Float32) bool

func (*Float32) NotEqual added in v0.1.2

func (i *Float32) NotEqual(other Float32) bool

type Float64 added in v0.1.2

type Float64 float64

func (*Float64) Equal added in v0.1.2

func (i *Float64) Equal(other Float64) bool

func (*Float64) GreaterThan added in v0.1.2

func (i *Float64) GreaterThan(other Float64) bool

func (*Float64) GreaterThanOrEqual added in v0.1.2

func (i *Float64) GreaterThanOrEqual(other Float64) bool

func (*Float64) LesserThan added in v0.1.2

func (i *Float64) LesserThan(other Float64) bool

func (*Float64) LesserThanOrEqual added in v0.1.2

func (i *Float64) LesserThanOrEqual(other Float64) bool

func (*Float64) NotEqual added in v0.1.2

func (i *Float64) NotEqual(other Float64) bool

type GeneralCollector added in v0.1.2

type GeneralCollector[T any] interface {
	Front() T
	FrontRef() *T
	Back() T
	BackRef() *T
	IsEmpty() bool
	Size() int
	Clear()
	Insert(index int, value T)
	InsertRef(index int, value *T)
	Erase(index int)
	PushBack(value T)
	PushBackRef(value *T)
	PushFront(value T)
	PushFrontRef(value *T)
	PopBack()
	PopFront()
	Visit(visitor CollectionVisitor[T])
	VisitReverse(visitor CollectionVisitor[T])
	ContainsValue(value T) bool
	ContainsRef(value *T) bool
	OrderedSearch(value T) (found bool, index int)
	OrderedRefSearch(value *T) (found bool, index int)
	OrderedSearchRef(value T) *T
	OrderedRefSearchRef(value *T) *T
	Search(value T) (found bool, index int)
	RefSearch(value *T) (found bool, index int)
	SearchRef(value T) *T
	RefSearchRef(value *T) *T
	fmt.Stringer
}

GeneralCollector identifies a general-purpose collection type.

type Int added in v0.1.2

type Int int

func (*Int) Equal added in v0.1.2

func (i *Int) Equal(other Int) bool

func (*Int) GreaterThan added in v0.1.2

func (i *Int) GreaterThan(other Int) bool

func (*Int) GreaterThanOrEqual added in v0.1.2

func (i *Int) GreaterThanOrEqual(other Int) bool

func (*Int) LesserThan added in v0.1.2

func (i *Int) LesserThan(other Int) bool

func (*Int) LesserThanOrEqual added in v0.1.2

func (i *Int) LesserThanOrEqual(other Int) bool

func (*Int) NotEqual added in v0.1.2

func (i *Int) NotEqual(other Int) bool

type Int16 added in v0.1.2

type Int16 int16

func (*Int16) Equal added in v0.1.2

func (i *Int16) Equal(other Int16) bool

func (*Int16) GreaterThan added in v0.1.2

func (i *Int16) GreaterThan(other Int16) bool

func (*Int16) GreaterThanOrEqual added in v0.1.2

func (i *Int16) GreaterThanOrEqual(other Int16) bool

func (*Int16) LesserThan added in v0.1.2

func (i *Int16) LesserThan(other Int16) bool

func (*Int16) LesserThanOrEqual added in v0.1.2

func (i *Int16) LesserThanOrEqual(other Int16) bool

func (*Int16) NotEqual added in v0.1.2

func (i *Int16) NotEqual(other Int16) bool

type Int32 added in v0.1.2

type Int32 int32

func (*Int32) Equal added in v0.1.2

func (i *Int32) Equal(other Int32) bool

func (*Int32) GreaterThan added in v0.1.2

func (i *Int32) GreaterThan(other Int32) bool

func (*Int32) GreaterThanOrEqual added in v0.1.2

func (i *Int32) GreaterThanOrEqual(other Int32) bool

func (*Int32) LesserThan added in v0.1.2

func (i *Int32) LesserThan(other Int32) bool

func (*Int32) LesserThanOrEqual added in v0.1.2

func (i *Int32) LesserThanOrEqual(other Int32) bool

func (*Int32) NotEqual added in v0.1.2

func (i *Int32) NotEqual(other Int32) bool

type Int64 added in v0.1.2

type Int64 int64

func (*Int64) Equal added in v0.1.2

func (i *Int64) Equal(other Int64) bool

func (*Int64) GreaterThan added in v0.1.2

func (i *Int64) GreaterThan(other Int64) bool

func (*Int64) GreaterThanOrEqual added in v0.1.2

func (i *Int64) GreaterThanOrEqual(other Int64) bool

func (*Int64) LesserThan added in v0.1.2

func (i *Int64) LesserThan(other Int64) bool

func (*Int64) LesserThanOrEqual added in v0.1.2

func (i *Int64) LesserThanOrEqual(other Int64) bool

func (*Int64) NotEqual added in v0.1.2

func (i *Int64) NotEqual(other Int64) bool

type Int8 added in v0.1.2

type Int8 int8

func (*Int8) Equal added in v0.1.2

func (i *Int8) Equal(other Int8) bool

func (*Int8) GreaterThan added in v0.1.2

func (i *Int8) GreaterThan(other Int8) bool

func (*Int8) GreaterThanOrEqual added in v0.1.2

func (i *Int8) GreaterThanOrEqual(other Int8) bool

func (*Int8) LesserThan added in v0.1.2

func (i *Int8) LesserThan(other Int8) bool

func (*Int8) LesserThanOrEqual added in v0.1.2

func (i *Int8) LesserThanOrEqual(other Int8) bool

func (*Int8) NotEqual added in v0.1.2

func (i *Int8) NotEqual(other Int8) bool

type List added in v0.1.2

type List[T any] struct {
	// contains filtered or unexported fields
}

func MakeList added in v0.1.2

func MakeList[T any]() *List[T]

func MakeListFromData added in v0.1.2

func MakeListFromData[T any](values ...T) *List[T]

func MakeListFromDataRef added in v0.1.2

func MakeListFromDataRef[T any](values ...*T) *List[T]

func MakeListFromList added in v0.1.2

func MakeListFromList[T any](other List[T]) *List[T]

func NewList added in v0.1.2

func NewList[T any]() List[T]

func NewListFromData added in v0.1.2

func NewListFromData[T any](values ...T) List[T]

func NewListFromDataRef added in v0.1.2

func NewListFromDataRef[T any](values ...*T) List[T]

func NewListFromList added in v0.1.2

func NewListFromList[T any](other List[T]) List[T]

func (*List[T]) Back added in v0.1.2

func (l *List[T]) Back() T

func (*List[T]) BackRef added in v0.1.2

func (l *List[T]) BackRef() *T

func (*List[T]) Clear added in v0.1.2

func (l *List[T]) Clear()

func (*List[T]) ContainsRef added in v0.1.3

func (l *List[T]) ContainsRef(value *T) bool

func (*List[T]) ContainsValue added in v0.1.3

func (l *List[T]) ContainsValue(value T) bool

func (*List[T]) Erase added in v0.1.2

func (l *List[T]) Erase(index int)

func (*List[T]) Front added in v0.1.2

func (l *List[T]) Front() T

func (*List[T]) FrontRef added in v0.1.2

func (l *List[T]) FrontRef() *T

func (*List[T]) Insert added in v0.1.2

func (l *List[T]) Insert(index int, value T)

func (*List[T]) InsertRef added in v0.1.2

func (l *List[T]) InsertRef(index int, value *T)

func (*List[T]) IsEmpty added in v0.1.2

func (l *List[T]) IsEmpty() bool

func (*List[T]) OrderedRefSearch added in v0.1.3

func (l *List[T]) OrderedRefSearch(value *T) (found bool, index int)

func (*List[T]) OrderedRefSearchRef added in v0.1.3

func (l *List[T]) OrderedRefSearchRef(value *T) *T

func (*List[T]) OrderedSearch added in v0.1.3

func (l *List[T]) OrderedSearch(value T) (found bool, index int)

func (*List[T]) OrderedSearchRef added in v0.1.3

func (l *List[T]) OrderedSearchRef(value T) *T

func (*List[T]) PopBack added in v0.1.2

func (l *List[T]) PopBack()

func (*List[T]) PopFront added in v0.1.2

func (l *List[T]) PopFront()

func (*List[T]) PushBack added in v0.1.2

func (l *List[T]) PushBack(value T)

func (*List[T]) PushBackRef added in v0.1.2

func (l *List[T]) PushBackRef(value *T)

func (*List[T]) PushFront added in v0.1.2

func (l *List[T]) PushFront(value T)

func (*List[T]) PushFrontRef added in v0.1.2

func (l *List[T]) PushFrontRef(value *T)

func (*List[T]) RefSearch added in v0.1.3

func (l *List[T]) RefSearch(value *T) (found bool, index int)

func (*List[T]) RefSearchRef added in v0.1.3

func (l *List[T]) RefSearchRef(value *T) *T

func (*List[T]) Search added in v0.1.3

func (l *List[T]) Search(value T) (found bool, index int)

func (*List[T]) SearchRef added in v0.1.3

func (l *List[T]) SearchRef(value T) *T

func (*List[T]) Size added in v0.1.2

func (l *List[T]) Size() int

func (*List[T]) String added in v0.1.2

func (l *List[T]) String() string

func (*List[T]) Swap added in v0.1.2

func (l *List[T]) Swap(other *List[T])

func (*List[T]) Visit added in v0.1.2

func (l *List[T]) Visit(visitor CollectionVisitor[T])

func (*List[T]) VisitReverse added in v0.1.2

func (l *List[T]) VisitReverse(visitor CollectionVisitor[T])

type NVector added in v0.1.2

type NVector[T NativeEquatable] struct {
	// contains filtered or unexported fields
}

func NewNVector added in v0.1.2

func NewNVector[T NativeEquatable]() NVector[T]

func NewNVectorFromData added in v0.1.2

func NewNVectorFromData[T NativeEquatable](values ...T) NVector[T]

func NewNVectorFromNVector added in v0.1.2

func NewNVectorFromNVector[T NativeEquatable](other NVector[T]) NVector[T]

func NewNVectorFromVector added in v0.1.2

func NewNVectorFromVector[T NativeEquatable](other Vector[T]) NVector[T]

func (*NVector[T]) At added in v0.1.2

func (v *NVector[T]) At(index int) T

func (*NVector[T]) AtRef added in v0.1.2

func (v *NVector[T]) AtRef(index int) *T

func (*NVector[T]) Back added in v0.1.2

func (v *NVector[T]) Back() T

func (*NVector[T]) BackRef added in v0.1.2

func (v *NVector[T]) BackRef() *T

func (*NVector[T]) Clear added in v0.1.2

func (v *NVector[T]) Clear()

func (*NVector[T]) ContainsRef added in v0.1.2

func (v *NVector[T]) ContainsRef(value *T) bool

func (*NVector[T]) ContainsValue added in v0.1.2

func (v *NVector[T]) ContainsValue(value T) bool

func (*NVector[T]) Data added in v0.1.2

func (v *NVector[T]) Data() []T

func (*NVector[T]) Erase added in v0.1.2

func (v *NVector[T]) Erase(index int)

func (*NVector[T]) Front added in v0.1.2

func (v *NVector[T]) Front() T

func (*NVector[T]) FrontRef added in v0.1.2

func (v *NVector[T]) FrontRef() *T

func (*NVector[T]) Insert added in v0.1.2

func (v *NVector[T]) Insert(index int, value T)

func (*NVector[T]) InsertRef added in v0.1.2

func (v *NVector[T]) InsertRef(index int, value *T)

func (*NVector[T]) IsEmpty added in v0.1.2

func (v *NVector[T]) IsEmpty() bool

func (*NVector[T]) OrderedRefSearch added in v0.1.2

func (v *NVector[T]) OrderedRefSearch(value *T) (found bool, index int)

func (*NVector[T]) OrderedRefSearchRef added in v0.1.2

func (v *NVector[T]) OrderedRefSearchRef(value *T) *T

func (*NVector[T]) OrderedSearch added in v0.1.2

func (v *NVector[T]) OrderedSearch(value T) (found bool, index int)

func (*NVector[T]) OrderedSearchRef added in v0.1.2

func (v *NVector[T]) OrderedSearchRef(value T) *T

func (*NVector[T]) PopBack added in v0.1.2

func (v *NVector[T]) PopBack()

func (*NVector[T]) PopFront added in v0.1.2

func (v *NVector[T]) PopFront()

func (*NVector[T]) PushBack added in v0.1.2

func (v *NVector[T]) PushBack(value T)

func (*NVector[T]) PushBackRef added in v0.1.2

func (v *NVector[T]) PushBackRef(value *T)

func (*NVector[T]) PushFront added in v0.1.2

func (v *NVector[T]) PushFront(value T)

func (*NVector[T]) PushFrontRef added in v0.1.2

func (v *NVector[T]) PushFrontRef(value *T)

func (*NVector[T]) RefSearch added in v0.1.2

func (v *NVector[T]) RefSearch(value *T) (found bool, index int)

func (*NVector[T]) RefSearchRef added in v0.1.2

func (v *NVector[T]) RefSearchRef(value *T) (ret *T)

func (*NVector[T]) Resize added in v0.1.2

func (v *NVector[T]) Resize(new_size int)

func (*NVector[T]) SafeAt added in v0.1.2

func (v *NVector[T]) SafeAt(index int) T

func (*NVector[T]) SafeAtRef added in v0.1.2

func (v *NVector[T]) SafeAtRef(index int) *T

func (*NVector[T]) Search added in v0.1.2

func (v *NVector[T]) Search(value T) (found bool, index int)

func (*NVector[T]) SearchRef added in v0.1.2

func (v *NVector[T]) SearchRef(value T) (ret *T)

func (*NVector[T]) Size added in v0.1.2

func (v *NVector[T]) Size() int

func (*NVector[T]) String added in v0.1.2

func (v *NVector[T]) String() string

func (*NVector[T]) Swap added in v0.1.2

func (v *NVector[T]) Swap(other *NVector[T])

func (*NVector[T]) Visit added in v0.1.2

func (v *NVector[T]) Visit(visitor CollectionVisitor[T])

func (*NVector[T]) VisitReverse added in v0.1.2

func (v *NVector[T]) VisitReverse(visitor CollectionVisitor[T])

type NativeComparable added in v0.1.2

type NativeComparable interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~float32 | ~float64 | ~string
}

NativeComparable identifies the set of types that can have the `<`, `>`, `<=`, and `>=` operators used on them.

type NativeEquatable added in v0.1.2

type NativeEquatable interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~float32 | ~float64 | ~complex64 | ~complex128 | ~string | ~bool
}

NativeEquatable identifies the set of types that can have the `==` and `!=` operators used on them.

type Queue

type Queue[T any] struct {
	// contains filtered or unexported fields
}

func MakeQueue

func MakeQueue[T any]() *Queue[T]

func MakeQueueFromData

func MakeQueueFromData[T any](values ...T) *Queue[T]

func MakeQueueFromDataRef

func MakeQueueFromDataRef[T any](values ...*T) *Queue[T]

func MakeQueueFromQueue

func MakeQueueFromQueue[T any](other Queue[T]) *Queue[T]

func NewQueue

func NewQueue[T any]() Queue[T]

func NewQueueFromData

func NewQueueFromData[T any](values ...T) Queue[T]

func NewQueueFromDataRef

func NewQueueFromDataRef[T any](values ...*T) Queue[T]

func NewQueueFromQueue

func NewQueueFromQueue[T any](other Queue[T]) Queue[T]

func (*Queue[T]) Clear

func (q *Queue[T]) Clear()

func (*Queue[T]) Data

func (q *Queue[T]) Data() []T

func (*Queue[T]) Front

func (q *Queue[T]) Front() T

func (*Queue[T]) FrontRef

func (q *Queue[T]) FrontRef() *T

func (*Queue[T]) IsEmpty

func (q *Queue[T]) IsEmpty() bool

func (*Queue[T]) PopFront

func (q *Queue[T]) PopFront()

func (*Queue[T]) PushBack

func (q *Queue[T]) PushBack(value T)

func (*Queue[T]) PushBackRef

func (q *Queue[T]) PushBackRef(value *T)

func (*Queue[T]) Size

func (q *Queue[T]) Size() int

func (*Queue[T]) String added in v0.1.2

func (q *Queue[T]) String() string

func (*Queue[T]) Swap

func (q *Queue[T]) Swap(other *Queue[T])

type Rune added in v0.1.2

type Rune rune

func (*Rune) Equal added in v0.1.2

func (i *Rune) Equal(other Rune) bool

func (*Rune) GreaterThan added in v0.1.2

func (i *Rune) GreaterThan(other Rune) bool

func (*Rune) GreaterThanOrEqual added in v0.1.2

func (i *Rune) GreaterThanOrEqual(other Rune) bool

func (*Rune) LesserThan added in v0.1.2

func (i *Rune) LesserThan(other Rune) bool

func (*Rune) LesserThanOrEqual added in v0.1.2

func (i *Rune) LesserThanOrEqual(other Rune) bool

func (*Rune) NotEqual added in v0.1.2

func (i *Rune) NotEqual(other Rune) bool

type SortableVector

type SortableVector[T constraints.Ordered] struct {
	Vector[T]
}

func MakeSortableVector

func MakeSortableVector[T constraints.Ordered]() *SortableVector[T]

func MakeSortableVectorFromData

func MakeSortableVectorFromData[T constraints.Ordered](values ...T) *SortableVector[T]

func MakeSortableVectorFromDataRef

func MakeSortableVectorFromDataRef[T constraints.Ordered](values ...*T) *SortableVector[T]

func MakeSortableVectorFromVector

func MakeSortableVectorFromVector[T constraints.Ordered](other SortableVector[T]) *SortableVector[T]

func NewSortableVector

func NewSortableVector[T constraints.Ordered]() SortableVector[T]

func NewSortableVectorFromData

func NewSortableVectorFromData[T constraints.Ordered](values ...T) SortableVector[T]

func NewSortableVectorFromDataRef

func NewSortableVectorFromDataRef[T constraints.Ordered](values ...*T) SortableVector[T]

func NewSortableVectorFromVector

func NewSortableVectorFromVector[T constraints.Ordered](other SortableVector[T]) SortableVector[T]

func (*SortableVector[T]) IsSorted

func (v *SortableVector[T]) IsSorted() bool

func (*SortableVector[T]) IsSortedFunc

func (v *SortableVector[T]) IsSortedFunc(f func(left *T, right *T) bool) bool

func (*SortableVector[T]) Sort

func (v *SortableVector[T]) Sort()

func (*SortableVector[T]) SortFunc

func (v *SortableVector[T]) SortFunc(f func(left *T, right *T) bool)

func (*SortableVector[T]) StableSort

func (v *SortableVector[T]) StableSort()

func (*SortableVector[T]) StableSortFunc

func (v *SortableVector[T]) StableSortFunc(f func(left *T, right *T) bool)

type Stack

type Stack[T any] struct {
	// contains filtered or unexported fields
}

func MakeStack

func MakeStack[T any]() *Stack[T]

func MakeStackFromData

func MakeStackFromData[T any](values ...T) *Stack[T]

func MakeStackFromDataRef

func MakeStackFromDataRef[T any](values ...*T) *Stack[T]

func MakeStackFromStack

func MakeStackFromStack[T any](other Stack[T]) *Stack[T]

func NewStack

func NewStack[T any]() Stack[T]

func NewStackFromData

func NewStackFromData[T any](values ...T) Stack[T]

func NewStackFromDataRef

func NewStackFromDataRef[T any](values ...*T) Stack[T]

func NewStackFromStack

func NewStackFromStack[T any](other Stack[T]) Stack[T]

func (*Stack[T]) Clear

func (s *Stack[T]) Clear()

func (*Stack[T]) Data

func (s *Stack[T]) Data() []T

func (*Stack[T]) IsEmpty

func (s *Stack[T]) IsEmpty() bool

func (*Stack[T]) Pop

func (s *Stack[T]) Pop()

func (*Stack[T]) Push

func (s *Stack[T]) Push(value T)

func (*Stack[T]) PushRef

func (s *Stack[T]) PushRef(value *T)

func (*Stack[T]) Size

func (s *Stack[T]) Size() int

func (*Stack[T]) String added in v0.1.2

func (s *Stack[T]) String() string

func (*Stack[T]) Swap

func (s *Stack[T]) Swap(other *Stack[T])

func (*Stack[T]) Top

func (s *Stack[T]) Top() T

func (*Stack[T]) TopRef

func (s *Stack[T]) TopRef() *T

type String added in v0.1.2

type String string

func (*String) Equal added in v0.1.2

func (i *String) Equal(other String) bool

func (*String) GreaterThan added in v0.1.2

func (i *String) GreaterThan(other String) bool

func (*String) GreaterThanOrEqual added in v0.1.2

func (i *String) GreaterThanOrEqual(other String) bool

func (*String) LesserThan added in v0.1.2

func (i *String) LesserThan(other String) bool

func (*String) LesserThanOrEqual added in v0.1.2

func (i *String) LesserThanOrEqual(other String) bool

func (*String) NotEqual added in v0.1.2

func (i *String) NotEqual(other String) bool

type Uint added in v0.1.2

type Uint uint

func (*Uint) Equal added in v0.1.2

func (i *Uint) Equal(other Uint) bool

func (*Uint) GreaterThan added in v0.1.2

func (i *Uint) GreaterThan(other Uint) bool

func (*Uint) GreaterThanOrEqual added in v0.1.2

func (i *Uint) GreaterThanOrEqual(other Uint) bool

func (*Uint) LesserThan added in v0.1.2

func (i *Uint) LesserThan(other Uint) bool

func (*Uint) LesserThanOrEqual added in v0.1.2

func (i *Uint) LesserThanOrEqual(other Uint) bool

func (*Uint) NotEqual added in v0.1.2

func (i *Uint) NotEqual(other Uint) bool

type Uint16 added in v0.1.2

type Uint16 uint16

func (*Uint16) Equal added in v0.1.2

func (i *Uint16) Equal(other Uint16) bool

func (*Uint16) GreaterThan added in v0.1.2

func (i *Uint16) GreaterThan(other Uint16) bool

func (*Uint16) GreaterThanOrEqual added in v0.1.2

func (i *Uint16) GreaterThanOrEqual(other Uint16) bool

func (*Uint16) LesserThan added in v0.1.2

func (i *Uint16) LesserThan(other Uint16) bool

func (*Uint16) LesserThanOrEqual added in v0.1.2

func (i *Uint16) LesserThanOrEqual(other Uint16) bool

func (*Uint16) NotEqual added in v0.1.2

func (i *Uint16) NotEqual(other Uint16) bool

type Uint32 added in v0.1.2

type Uint32 uint32

func (*Uint32) Equal added in v0.1.2

func (i *Uint32) Equal(other Uint32) bool

func (*Uint32) GreaterThan added in v0.1.2

func (i *Uint32) GreaterThan(other Uint32) bool

func (*Uint32) GreaterThanOrEqual added in v0.1.2

func (i *Uint32) GreaterThanOrEqual(other Uint32) bool

func (*Uint32) LesserThan added in v0.1.2

func (i *Uint32) LesserThan(other Uint32) bool

func (*Uint32) LesserThanOrEqual added in v0.1.2

func (i *Uint32) LesserThanOrEqual(other Uint32) bool

func (*Uint32) NotEqual added in v0.1.2

func (i *Uint32) NotEqual(other Uint32) bool

type Uint64 added in v0.1.2

type Uint64 uint64

func (*Uint64) Equal added in v0.1.2

func (i *Uint64) Equal(other Uint64) bool

func (*Uint64) GreaterThan added in v0.1.2

func (i *Uint64) GreaterThan(other Uint64) bool

func (*Uint64) GreaterThanOrEqual added in v0.1.2

func (i *Uint64) GreaterThanOrEqual(other Uint64) bool

func (*Uint64) LesserThan added in v0.1.2

func (i *Uint64) LesserThan(other Uint64) bool

func (*Uint64) LesserThanOrEqual added in v0.1.2

func (i *Uint64) LesserThanOrEqual(other Uint64) bool

func (*Uint64) NotEqual added in v0.1.2

func (i *Uint64) NotEqual(other Uint64) bool

type Uint8 added in v0.1.2

type Uint8 uint8

func (*Uint8) Equal added in v0.1.2

func (i *Uint8) Equal(other Uint8) bool

func (*Uint8) GreaterThan added in v0.1.2

func (i *Uint8) GreaterThan(other Uint8) bool

func (*Uint8) GreaterThanOrEqual added in v0.1.2

func (i *Uint8) GreaterThanOrEqual(other Uint8) bool

func (*Uint8) LesserThan added in v0.1.2

func (i *Uint8) LesserThan(other Uint8) bool

func (*Uint8) LesserThanOrEqual added in v0.1.2

func (i *Uint8) LesserThanOrEqual(other Uint8) bool

func (*Uint8) NotEqual added in v0.1.2

func (i *Uint8) NotEqual(other Uint8) bool

type UintPtr added in v0.1.2

type UintPtr uintptr

func (*UintPtr) Equal added in v0.1.2

func (i *UintPtr) Equal(other UintPtr) bool

func (*UintPtr) GreaterThan added in v0.1.2

func (i *UintPtr) GreaterThan(other UintPtr) bool

func (*UintPtr) GreaterThanOrEqual added in v0.1.2

func (i *UintPtr) GreaterThanOrEqual(other UintPtr) bool

func (*UintPtr) LesserThan added in v0.1.2

func (i *UintPtr) LesserThan(other UintPtr) bool

func (*UintPtr) LesserThanOrEqual added in v0.1.2

func (i *UintPtr) LesserThanOrEqual(other UintPtr) bool

func (*UintPtr) NotEqual added in v0.1.2

func (i *UintPtr) NotEqual(other UintPtr) bool

type Vector

type Vector[T any] struct {
	// contains filtered or unexported fields
}

Vector is a general-purpose collection that can be used for any type.

It does have special functionality for element types that implement the Destructible interface.

Note, if you want a Vector of a native type, you will most likely get significantly better performance out of an NVector.

func MakeVector

func MakeVector[T any]() *Vector[T]

MakeVector creates a new empty Vector instance.

func MakeVectorFromData

func MakeVectorFromData[T any](values ...T) *Vector[T]

MakeVectorFromData creates a new Vector instance using the elements in values.

func MakeVectorFromDataRef

func MakeVectorFromDataRef[T any](values ...*T) *Vector[T]

MakeVectorFromDataRef creates a new Vector instance using pointers to the elements in values.

func MakeVectorFromVector

func MakeVectorFromVector[T any](other Vector[T]) *Vector[T]

MakeVectorFromVector creates a new Vector instance using the values of another.

func NewVector

func NewVector[T any]() Vector[T]

NewVector creates a new empty Vector, by value

func NewVectorFromData

func NewVectorFromData[T any](values ...T) Vector[T]

NewVectorFromData creates a new Vector using the elements in values, by value.

func NewVectorFromDataRef

func NewVectorFromDataRef[T any](values ...*T) Vector[T]

NewVectorFromDataRef creates a new Vector using pointers to the elements in values, by value.

func NewVectorFromNVector added in v0.1.2

func NewVectorFromNVector[T NativeEquatable](other NVector[T]) Vector[T]

func NewVectorFromVector

func NewVectorFromVector[T any](other Vector[T]) Vector[T]

NewVectorFromVector creates a new Vector using the values of another, by value.

func (*Vector[T]) At

func (v *Vector[T]) At(index int) T

At gets the element at index by value.

Note, this function does no bounds checking besides what the Go runtime does already.

func (*Vector[T]) AtRef

func (v *Vector[T]) AtRef(index int) *T

AtRef gets a pointer to the element at index.

Note, this function does no bounds checking besides what the Go runtime does already.

func (*Vector[T]) Back

func (v *Vector[T]) Back() T

Back gets the element at the back of the Vector by value.

func (*Vector[T]) BackRef

func (v *Vector[T]) BackRef() *T

BackRef gets a pointer to the element at the back of the Vector.

func (*Vector[T]) Clear

func (v *Vector[T]) Clear()

Clear removes all the elements from the Vector.

If the elements implement the Destructible interface, then they will have the Destruct method called on them.

func (*Vector[T]) ContainsRef added in v0.1.2

func (v *Vector[T]) ContainsRef(value *T) bool

ContainsRef returns true if the Vector contains the exact reference of value.

func (*Vector[T]) ContainsValue added in v0.1.2

func (v *Vector[T]) ContainsValue(value T) bool

ContainsValue returns true if the Vector contains value.

func (*Vector[T]) Data

func (v *Vector[T]) Data() []T

Data gets the underlying slice of the elements.

func (*Vector[T]) Erase

func (v *Vector[T]) Erase(index int)

Erase removes an element at the specified index, moving all later elements one index forward.

func (*Vector[T]) Front

func (v *Vector[T]) Front() T

Front gets the element at the front of the Vector by value.

func (*Vector[T]) FrontRef

func (v *Vector[T]) FrontRef() *T

FrontRef gets a pointer to the element at the front of the Vector.

func (*Vector[T]) Insert

func (v *Vector[T]) Insert(index int, value T)

Insert adds an element at the specified index, moving all later elements one further index back.

func (*Vector[T]) InsertRef

func (v *Vector[T]) InsertRef(index int, value *T)

Insert adds an element at the specified index, moving all later elements one further index back.

func (*Vector[T]) IsEmpty

func (v *Vector[T]) IsEmpty() bool

IsEmpty returns true if the Vector is empty.

func (*Vector[T]) OrderedRefSearch added in v0.1.2

func (v *Vector[T]) OrderedRefSearch(value *T) (found bool, index int)

OrderedRefSearch searches for an instance, and returns the index to the first match.

func (*Vector[T]) OrderedRefSearchRef added in v0.1.2

func (v *Vector[T]) OrderedRefSearchRef(value *T) *T

OrderedRefSearchRef searches for an instance, and returns a pointer to the first match.

func (*Vector[T]) OrderedSearch added in v0.1.2

func (v *Vector[T]) OrderedSearch(value T) (found bool, index int)

OrderedSearch searches for a value, and returns the index to the first match.

func (*Vector[T]) OrderedSearchRef added in v0.1.2

func (v *Vector[T]) OrderedSearchRef(value T) *T

OrderedSearchRef searches for a value, and returns a pointer to the first match.

func (*Vector[T]) PopBack

func (v *Vector[T]) PopBack()

PopBack removes an element from the back of the Vector.

If the element implements the Destructible interface, it will have the Destruct method called on it.

func (*Vector[T]) PopFront

func (v *Vector[T]) PopFront()

PopFront removes an element from the front of the Vector, moving all later elements one index forward.

If the element implements the Destructible interface, it will have the Destruct method called on it.

func (*Vector[T]) PushBack

func (v *Vector[T]) PushBack(value T)

PushBack adds an element to the back of the Vector.

func (*Vector[T]) PushBackRef

func (v *Vector[T]) PushBackRef(value *T)

PushBackRef adds an element to the back of the Vector.

func (*Vector[T]) PushFront

func (v *Vector[T]) PushFront(value T)

PushFront adds an element to the front of the Vector, moving all later elements one index backward.

func (*Vector[T]) PushFrontRef

func (v *Vector[T]) PushFrontRef(value *T)

PushFrontRef adds an element to the front of the Vector, moving all later elements one index backward.

func (*Vector[T]) RefSearch added in v0.1.2

func (v *Vector[T]) RefSearch(value *T) (found bool, index int)

RefSearch searches for an instance, and returns an index to a match.

Note, this method may perform a search in parallel, so the match might not be the first in the Vector.

func (*Vector[T]) RefSearchRef added in v0.1.2

func (v *Vector[T]) RefSearchRef(value *T) *T

SearchRef searches for an instance, and returns a pointer to a match.

Note, this method may perform a search in parallel, so the match might not be the first in the Vector.

func (*Vector[T]) Resize

func (v *Vector[T]) Resize(new_size int)

Resize resizes the Vector.

If the size increases, the new elements are zero-valued.

If the size decreases and the removed elements implement the Destructible interface, they will have the Destruct method called on them.

func (*Vector[T]) SafeAt

func (v *Vector[T]) SafeAt(index int) T

SafeAt gets the element at index by value.

Note, this function does do bounds checking.

func (*Vector[T]) SafeAtRef

func (v *Vector[T]) SafeAtRef(index int) *T

SafeAtRef gets a pointer to the element at index.

Note, this function does do bounds checking.

func (*Vector[T]) Search added in v0.1.2

func (v *Vector[T]) Search(value T) (found bool, index int)

Search searches for a value, and returns an index to a match.

Note, this method may perform a search in parallel, so the match might not be the first in the Vector.

func (*Vector[T]) SearchRef added in v0.1.2

func (v *Vector[T]) SearchRef(value T) *T

SearchRef searches for a value, and returns a pointer to a match.

Note, this method may perform a search in parallel, so the match might not be the first in the Vector.

func (*Vector[T]) Size

func (v *Vector[T]) Size() int

Size returns the number of elements in the Vector.

func (*Vector[T]) String added in v0.1.2

func (v *Vector[T]) String() string

String returns a string representation of the Vector and it's contents.

func (*Vector[T]) Swap

func (v *Vector[T]) Swap(other *Vector[T])

Swap swaps the data of two Vectors.

func (*Vector[T]) Visit added in v0.1.2

func (v *Vector[T]) Visit(visitor CollectionVisitor[T])

Visit calls a function for every element in the Vector.

func (*Vector[T]) VisitReverse added in v0.1.2

func (v *Vector[T]) VisitReverse(visitor CollectionVisitor[T])

Visit calls a function for every element in the Vector in reverse order.

Jump to

Keyboard shortcuts

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