aghalg

package
v0.0.0-...-9998b90 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2024 License: GPL-3.0 Imports: 6 Imported by: 0

Documentation

Overview

Package aghalg contains common generic algorithms and data structures.

TODO(a.garipov): Move parts of this into golibs.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CoalesceSlice

func CoalesceSlice[E any, S []E](values ...S) (res S)

CoalesceSlice returns the first non-zero value. It is named after function COALESCE in SQL. If values or all its elements are empty, it returns nil.

Types

type NullBool

type NullBool uint8

NullBool is a nullable boolean. Use these in JSON requests and responses instead of pointers to bool.

const (
	NBNull NullBool = iota
	NBTrue
	NBFalse
)

NullBool values

func BoolToNullBool

func BoolToNullBool(cond bool) (nb NullBool)

BoolToNullBool converts a bool into a NullBool.

func (NullBool) MarshalJSON

func (nb NullBool) MarshalJSON() (b []byte, err error)

MarshalJSON implements the json.Marshaler interface for NullBool.

func (NullBool) String

func (nb NullBool) String() (s string)

String implements the fmt.Stringer interface for NullBool.

func (*NullBool) UnmarshalJSON

func (nb *NullBool) UnmarshalJSON(b []byte) (err error)

UnmarshalJSON implements the json.Unmarshaler interface for *NullBool.

type SortedMap

type SortedMap[K comparable, V any] struct {
	// contains filtered or unexported fields
}

SortedMap is a map that keeps elements in order with internal sorting function. Must be initialised by the NewSortedMap.

func NewSortedMap

func NewSortedMap[K comparable, V any](cmp func(a, b K) (res int)) SortedMap[K, V]

NewSortedMap initializes the new instance of sorted map. cmp is a sort function to keep elements in order.

TODO(s.chzhen): Use cmp.Compare in Go 1.21.

func (*SortedMap[K, V]) Clear

func (m *SortedMap[K, V]) Clear()

Clear removes all elements from the sorted map.

func (*SortedMap[K, V]) Del

func (m *SortedMap[K, V]) Del(key K)

Del removes the value by key from the sorted map.

func (*SortedMap[K, V]) Get

func (m *SortedMap[K, V]) Get(key K) (val V, ok bool)

Get returns val by key from the sorted map.

func (*SortedMap[K, V]) Range

func (m *SortedMap[K, V]) Range(cb func(K, V) (cont bool))

Range calls cb for each element of the map, sorted by m.cmp. If cb returns false it stops.

func (*SortedMap[K, V]) Set

func (m *SortedMap[K, V]) Set(key K, val V)

Set adds val with key to the sorted map. It panics if the m is nil.

type UniqChecker

type UniqChecker[T constraints.Ordered] map[T]int64

UniqChecker allows validating uniqueness of comparable items.

TODO(a.garipov): The Ordered constraint is only really necessary in Validate. Consider ways of making this constraint comparable instead.

func (UniqChecker[T]) Add

func (uc UniqChecker[T]) Add(elems ...T)

Add adds a value to the validator. v must not be nil.

func (UniqChecker[T]) Merge

func (uc UniqChecker[T]) Merge(other UniqChecker[T]) (merged UniqChecker[T])

Merge returns a checker containing data from both uc and other.

func (UniqChecker[T]) Validate

func (uc UniqChecker[T]) Validate() (err error)

Validate returns an error enumerating all elements that aren't unique.

Jump to

Keyboard shortcuts

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