diff options
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) +} |