aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/tensor/hnsw_test_node.h
blob: dd0e61ec9e8a44614bbb3eac1878b234bfaf8525 (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
34
35
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#pragma once

#include <vector>

namespace search::tensor {

/**
 * Represents a snapshot of a graph node with all its levels and links.
 * Should only be used by unit tests.
 */
class HnswTestNode {
public:
    using LinkArray = std::vector<uint32_t>;
    using LevelArray = std::vector<LinkArray>;

private:
    LevelArray _levels;

public:
    HnswTestNode() : _levels() {}
    HnswTestNode(const LinkArray& level_0) : _levels() { _levels.push_back(level_0); }
    HnswTestNode(const LevelArray& levels_in) : _levels(levels_in) {}
    bool empty() const { return _levels.empty(); }
    size_t size() const { return _levels.size(); }
    const LevelArray& levels() const { return _levels; }
    const LinkArray& level(size_t idx) const { return _levels[idx]; }
    bool operator==(const HnswTestNode& rhs) {
        return _levels == rhs._levels;
    }
};

}