some improvements from integrating into go-ipfs

This commit is contained in:
Jeromy
2016-08-31 19:47:09 -07:00
parent cc13075232
commit 7105263bfa
4 changed files with 130 additions and 53 deletions

35
set.go Normal file
View File

@@ -0,0 +1,35 @@
package cid
type Set struct {
set map[string]struct{}
}
func NewSet() *Set {
return &Set{set: make(map[string]struct{})}
}
func (s *Set) Add(c *Cid) {
s.set[string(c.Bytes())] = struct{}{}
}
func (s *Set) Has(c *Cid) bool {
_, ok := s.set[string(c.Bytes())]
return ok
}
func (s *Set) Remove(c *Cid) {
delete(s.set, string(c.Bytes()))
}
func (s *Set) Len() int {
return len(s.set)
}
func (s *Set) Keys() []*Cid {
var out []*Cid
for k, _ := range s.set {
c, _ := Cast([]byte(k))
out = append(out, c)
}
return out
}