...
1 package token
2
3
4 type stringSet map[string]struct{}
5
6
7 func newStringSet(keys ...string) stringSet {
8 ss := make(stringSet, len(keys))
9 ss.add(keys...)
10 return ss
11 }
12
13
14 func (ss stringSet) add(keys ...string) {
15 for _, key := range keys {
16 ss[key] = struct{}{}
17 }
18 }
19
20
21 func (ss stringSet) contains(key string) bool {
22 _, ok := ss[key]
23 return ok
24 }
25
26
27 func (ss stringSet) keys() []string {
28 keys := make([]string, 0, len(ss))
29
30 for key := range ss {
31 keys = append(keys, key)
32 }
33
34 return keys
35 }
36
View as plain text