diff options
author | 2024-04-02 11:03:40 +0100 | |
---|---|---|
committer | 2024-04-02 12:03:40 +0200 | |
commit | adf345f1ec0cb76a0df94a4505143d891659cba9 (patch) | |
tree | e0cca289c0a50f30191d4b65a2c336704570e470 /vendor/codeberg.org/gruf/go-structr/key.go | |
parent | [feature] Option to hide followers/following (#2788) (diff) | |
download | gotosocial-adf345f1ec0cb76a0df94a4505143d891659cba9.tar.xz |
[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 :innocent:
---------
Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/key.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-structr/key.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/key.go b/vendor/codeberg.org/gruf/go-structr/key.go new file mode 100644 index 000000000..d68e3fe19 --- /dev/null +++ b/vendor/codeberg.org/gruf/go-structr/key.go @@ -0,0 +1,58 @@ +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) +} |