GoToSocial/vendor/codeberg.org/gruf/go-structr/key.go
kim adf345f1ec
[chore] bump go structr cache version -> v0.6.0 (#2773)
* update go-structr library -> v0.6.0, add necessary wrapping types + code changes to support these changes

* update readme with go-structr package changes

* improved wrapping of the SliceCache type

* add code comments for the cache wrapper types

* remove test.out 😇

---------

Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
2024-04-02 12:03:40 +02:00

59 lines
1.0 KiB
Go

package structr
import (
"sync"
"codeberg.org/gruf/go-byteutil"
)
// Key represents one key to
// lookup (potentially) stored
// entries in an Index.
type Key struct {
raw []any
key string
}
// Key returns the underlying cache key string.
// NOTE: this will not be log output friendly.
func (k Key) Key() string {
return k.key
}
// Equal returns whether keys are equal.
func (k Key) Equal(o Key) bool {
return k.key == o.key
}
// Value returns the raw slice of
// values that comprise this Key.
func (k Key) Values() []any {
return k.raw
}
// Zero indicates a zero value key.
func (k Key) Zero() bool {
return k.raw == nil
}
var buf_pool sync.Pool
// new_buffer returns a new initialized byte buffer.
func new_buffer() *byteutil.Buffer {
v := buf_pool.Get()
if v == nil {
buf := new(byteutil.Buffer)
buf.B = make([]byte, 0, 512)
v = buf
}
return v.(*byteutil.Buffer)
}
// free_buffer releases the byte buffer.
func free_buffer(buf *byteutil.Buffer) {
if cap(buf.B) > int(^uint16(0)) {
return // drop large bufs
}
buf_pool.Put(buf)
}