From 66b3b1104976da6fbca323539a8b211a16c6f5cc Mon Sep 17 00:00:00 2001 From: Tnze Date: Sun, 28 Jul 2024 00:02:55 +0800 Subject: [PATCH] Add tags api --- registry/README.md | 33 --------------------------------- registry/registry.go | 12 ++++++++++++ 2 files changed, 12 insertions(+), 33 deletions(-) delete mode 100644 registry/README.md diff --git a/registry/README.md b/registry/README.md deleted file mode 100644 index 81429fc..0000000 --- a/registry/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Registry System - -instance { - ResourceLocation { - namespace: string - path: string - } - - ResourceKey { - registryName: ResourceLocation - location: ResourceLocation - } - - registry { - getId(T): int - byId(int): T - - getKey(T): ResourceLocation - getResourceKey(T): ResourceKey - get(ResourceKey): T - get(ResourceLocation): T - - getTags(TagKey): (TagKey, *T[])[] - getTagNames(): TagKey[] - resetTags() - bindTags((TagKey, *T[])[]) - }[] - - TagKey { - *Registry - ResourceLocation - } -} diff --git a/registry/registry.go b/registry/registry.go index 46defce..2413572 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -1,5 +1,7 @@ package registry +import "slices" + type Registry[E any] struct { keys map[string]int32 values []E @@ -47,6 +49,16 @@ func (r *Registry[E]) Put(name string, data E) (id int32, val *E) { return } +// Tags + +func (r *Registry[E]) Tag(tag string) []*E { + return slices.Clone(r.tags[tag]) +} + +func (r *Registry[E]) ClearTags() { + r.tags = make(map[string][]*E) +} + // func (r *Registry[E]) BindTags(tag string, ids []int32) error { // values := make([]*E, len(ids)) // for i, id := range ids {