+// Copyright (C) The Lightning Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
package lightning
import (
}
func (m *mask) Add(seqname string, start, end int) {
+ if m.frozen {
+ panic("bug: (*mask)Add() called after Freeze()")
+ }
if m.intervals == nil {
m.intervals = map[string][]interval{}
}
return m.itrees[seqname].check(0, interval{start, end})
}
+func (m *mask) Len() int {
+ if !m.frozen {
+ return 0
+ }
+ n := 0
+ for _, intervals := range m.intervals {
+ n += len(intervals)
+ }
+ return n
+}
+
func (m *mask) freeze(in []interval) intervalTree {
if len(in) == 0 {
return nil
itreesize = itreesize * 2
}
itree := make(intervalTree, itreesize)
- itree.importSlice(0, in)
- for i := len(in); i < itreesize; i++ {
+ for i := 0; i < itreesize; i++ {
itree[i].maxend = -1
}
+ itree.importSlice(0, in)
return itree
}