vendor tsgo
This commit is contained in:
30
tools/tsgo/internal/core/linkstore.go
Normal file
30
tools/tsgo/internal/core/linkstore.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package core
|
||||
|
||||
// Links store
|
||||
|
||||
type LinkStore[K comparable, V any] struct {
|
||||
entries map[K]*V
|
||||
arena Arena[V]
|
||||
}
|
||||
|
||||
func (s *LinkStore[K, V]) Get(key K) *V {
|
||||
value := s.entries[key]
|
||||
if value != nil {
|
||||
return value
|
||||
}
|
||||
if s.entries == nil {
|
||||
s.entries = make(map[K]*V)
|
||||
}
|
||||
value = s.arena.New()
|
||||
s.entries[key] = value
|
||||
return value
|
||||
}
|
||||
|
||||
func (s *LinkStore[K, V]) Has(key K) bool {
|
||||
_, ok := s.entries[key]
|
||||
return ok
|
||||
}
|
||||
|
||||
func (s *LinkStore[K, V]) TryGet(key K) *V {
|
||||
return s.entries[key]
|
||||
}
|
||||
Reference in New Issue
Block a user