knncolle
Collection of KNN methods in C++
Loading...
Searching...
No Matches
Builder.hpp
Go to the documentation of this file.
1#ifndef KNNCOLLE_BUILDER_HPP
2#define KNNCOLLE_BUILDER_HPP
3
4#include "Prebuilt.hpp"
5#include "Matrix.hpp"
6#include <memory>
7#include <utility>
8#include <type_traits>
9
16namespace knncolle {
17
27template<typename Index_, typename Data_, typename Distance_, class Matrix_ = Matrix<Index_, Data_> >
28class Builder {
29public:
33 // Rule of 5 all of this.
34 Builder() = default;
35 Builder(Builder&&) = default;
36 Builder(const Builder&) = default;
37 Builder& operator=(Builder&&) = default;
38 Builder& operator=(const Builder&) = default;
39 virtual ~Builder() = default;
40
41 static_assert(std::is_same<decltype(std::declval<Matrix_>().num_observations()), Index_>::value);
42 static_assert(std::is_same<typename std::remove_pointer<decltype(std::declval<Matrix_>().new_extractor()->next())>::type, const Data_>::value);
47public:
52 virtual Prebuilt<Index_, Data_, Distance_>* build_raw(const Matrix_& data) const = 0;
53
58 std::shared_ptr<Prebuilt<Index_, Data_, Distance_> > build_shared(const Matrix_& data) const {
59 return std::shared_ptr<Prebuilt<Index_, Data_, Distance_> >(build_raw(data));
60 }
61
66 std::unique_ptr<Prebuilt<Index_, Data_, Distance_> > build_unique(const Matrix_& data) const {
67 return std::unique_ptr<Prebuilt<Index_, Data_, Distance_> >(build_raw(data));
68 }
69};
70
71}
72
73#endif
Interface for the input matrix.
Interface for prebuilt nearest-neighbor indices.
Interface to build nearest-neighbor search indices.
Definition Builder.hpp:28
std::unique_ptr< Prebuilt< Index_, Data_, Distance_ > > build_unique(const Matrix_ &data) const
Definition Builder.hpp:66
std::shared_ptr< Prebuilt< Index_, Data_, Distance_ > > build_shared(const Matrix_ &data) const
Definition Builder.hpp:58
virtual Prebuilt< Index_, Data_, Distance_ > * build_raw(const Matrix_ &data) const =0
Interface for prebuilt nearest-neighbor search indices.
Definition Prebuilt.hpp:28
Collection of KNN algorithms.
Definition Bruteforce.hpp:24