add back non_dedup

This commit is contained in:
Chris Lu
2021-08-21 15:13:13 -07:00
parent 849f185a20
commit 38c8470d1d
4 changed files with 83 additions and 51 deletions

View File

@@ -14,7 +14,7 @@ type loc_iterator func() (i int, leaf *BpNode, li loc_iterator)
func NewBpTree(node_size int) *BpTree {
return &BpTree{
root: NewLeaf(node_size),
root: NewLeaf(node_size, false),
}
}
@@ -26,6 +26,20 @@ func (self *BpTree) Has(key Hashable) bool {
return l.keys[j].Equals(key)
}
func (self *BpTree) Count(key Hashable) int {
if len(self.root.keys) == 0 {
return 0
}
j, l := self.root.get_start(key)
count := 0
end := false
for !end && l.keys[j].Equals(key) {
count++
j, l, end = next_location(j, l)
}
return count
}
func (self *BpTree) Add(key Hashable, value interface{}) (err error) {
new_root, err := self.getRoot().put(key, value)
if err != nil {
@@ -75,7 +89,7 @@ func (self *BpTree) RemoveWhere(key Hashable, where WhereFunc) (err error) {
return err
}
if new_root == nil {
self.setRoot(NewLeaf(ns))
self.setRoot(NewLeaf(ns, false))
} else {
self.setRoot(new_root)
}