30 lines
439 B
Go
30 lines
439 B
Go
package objectstore
|
|
|
|
import "iter"
|
|
|
|
type Object interface {
|
|
Name() string
|
|
TypeID() string
|
|
}
|
|
|
|
type ObjectSet[T Object] map[string]T
|
|
|
|
func (m *ObjectSet[T]) Insert(obj T) {
|
|
(*m)[obj.Name()] = obj
|
|
}
|
|
|
|
func (set *ObjectSet[T]) Contains(obj T) bool {
|
|
_, ok := (*set)[obj.Name()]
|
|
return ok
|
|
}
|
|
|
|
func (m *ObjectSet[T]) All() iter.Seq[T] {
|
|
return func(yield func(T) bool) {
|
|
for _, sv := range *m {
|
|
if !yield(sv) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|