forked from parquet-go/parquet-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
level.go
27 lines (21 loc) · 592 Bytes
/
level.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package parquet
import "github.com/parquet-go/parquet-go/internal/bytealg"
func countLevelsEqual(levels []byte, value byte) int {
return bytealg.Count(levels, value)
}
func countLevelsNotEqual(levels []byte, value byte) int {
return len(levels) - countLevelsEqual(levels, value)
}
func appendLevel(levels []byte, value byte, count int) []byte {
i := len(levels)
n := len(levels) + count
if cap(levels) < n {
newLevels := make([]byte, n, 2*n)
copy(newLevels, levels)
levels = newLevels
} else {
levels = levels[:n]
}
bytealg.Broadcast(levels[i:], value)
return levels
}