pisa icon indicating copy to clipboard operation
pisa copied to clipboard

Cursor concept discussion

Open elshize opened this issue 5 years ago • 0 comments


template <typename T>
concept bool CursorLike = requires(T cursor, DocId docid, Position pos)
{
    { cursor.reset() } -> void;
    { cursor.next() } -> void;
    { cursor.next_geq(docid) } -> void;
    { cursor.move(pos) } -> void;
    { cursor.docid() } -> DocId;
    { cursor.position() } -> Position;
    { cursor.size() } -> std::size_t;
};

template <typename T>
concept bool FreqCursorLike = CursorLike<T> && requires(T cursor)
{
    { cursor.freq() } -> Frequency;
};

template <typename T>
concept bool ScoredCursorLike = CursorLike<T> && requires(T cursor)
{
    { cursor.score() } -> Score;
};

template <typename T>
concept bool BlockCursorLike = CursorLike<T> && requires(T cursor)
{
    { cursor.num_blocks() } -> Score;
    { cursor.block() } -> std::size_t;
};

elshize avatar Sep 15 '19 17:09 elshize