summaryrefslogtreecommitdiff
path: root/src/merger.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/merger.go')
-rw-r--r--src/merger.go22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/merger.go b/src/merger.go
index 0d3fb801..3879ab7e 100644
--- a/src/merger.go
+++ b/src/merger.go
@@ -3,13 +3,13 @@ package fzf
import "fmt"
// EmptyMerger is a Merger with no data
-var EmptyMerger = NewMerger([][]*Item{}, false, false)
+var EmptyMerger = NewMerger([][]*Result{}, false, false)
// Merger holds a set of locally sorted lists of items and provides the view of
// a single, globally-sorted list
type Merger struct {
- lists [][]*Item
- merged []*Item
+ lists [][]*Result
+ merged []*Result
chunks *[]*Chunk
cursors []int
sorted bool
@@ -33,10 +33,10 @@ func PassMerger(chunks *[]*Chunk, tac bool) *Merger {
}
// NewMerger returns a new Merger
-func NewMerger(lists [][]*Item, sorted bool, tac bool) *Merger {
+func NewMerger(lists [][]*Result, sorted bool, tac bool) *Merger {
mg := Merger{
lists: lists,
- merged: []*Item{},
+ merged: []*Result{},
chunks: nil,
cursors: make([]int, len(lists)),
sorted: sorted,
@@ -55,14 +55,14 @@ func (mg *Merger) Length() int {
return mg.count
}
-// Get returns the pointer to the Item object indexed by the given integer
-func (mg *Merger) Get(idx int) *Item {
+// Get returns the pointer to the Result object indexed by the given integer
+func (mg *Merger) Get(idx int) *Result {
if mg.chunks != nil {
if mg.tac {
idx = mg.count - idx - 1
}
chunk := (*mg.chunks)[idx/chunkSize]
- return (*chunk)[idx%chunkSize]
+ return &Result{item: (*chunk)[idx%chunkSize]}
}
if mg.sorted {
@@ -86,9 +86,9 @@ func (mg *Merger) cacheable() bool {
return mg.count < mergerCacheMax
}
-func (mg *Merger) mergedGet(idx int) *Item {
+func (mg *Merger) mergedGet(idx int) *Result {
for i := len(mg.merged); i <= idx; i++ {
- minRank := buildEmptyRank(0)
+ minRank := minRank()
minIdx := -1
for listIdx, list := range mg.lists {
cursor := mg.cursors[listIdx]
@@ -97,7 +97,7 @@ func (mg *Merger) mergedGet(idx int) *Item {
continue
}
if cursor >= 0 {
- rank := list[cursor].Rank(false)
+ rank := list[cursor].rank
if minIdx < 0 || compareRanks(rank, minRank, mg.tac) {
minRank = rank
minIdx = listIdx