Files
pmomusic/upnp/objectstore/objectset.go

41 lines
637 B
Go
Raw Normal View History

2025-08-01 12:45:42 +02:00
package objectstore
2025-09-06 17:45:28 +02:00
import (
"fmt"
"iter"
)
2025-08-01 12:45:42 +02:00
type Object interface {
Name() string
TypeID() string
}
type ObjectSet[T Object] map[string]T
2025-09-06 17:45:28 +02:00
func (m *ObjectSet[T]) Insert(obj T) error {
if m.Contains(obj) {
return fmt.Errorf("object %s already present in set", obj.Name())
}
(*m)[obj.Name()] = obj
return nil
}
func (m *ObjectSet[T]) InsertOrReplace(obj T) {
2025-08-01 12:45:42 +02:00
(*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
}
}
}
}