aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/common/rankedhit.h
blob: 2d1ec0920dce0db5a7aa083d908b4902963a3429 (plain) (blame)
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
28
29
30
31
32
33
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#pragma once

#include "hitrank.h"
#include <cstdint>
#include <cstddef>

namespace search {

struct RankedHit {
    RankedHit() noexcept : _docId(0), _rankValue(zero_rank_value) { }
    RankedHit(unsigned int docId, HitRank rank = zero_rank_value) noexcept : _docId(docId), _rankValue(rank) { }
    unsigned int getDocId() const { return _docId; }
    HitRank getRank()       const { return _rankValue; }
//:private
    unsigned int _docId;
    HitRank _rankValue;
};

class RankedHitIterator {
public:
    RankedHitIterator(const RankedHit * h, size_t sz) noexcept : _h(h), _sz(sz), _pos(0) { }
    bool hasNext() const noexcept { return _pos < _sz; }
    uint32_t next() noexcept { return _h[_pos++].getDocId(); }
private:
    const RankedHit *_h;
    const size_t     _sz;
    size_t           _pos;
};

} // namespace search