namespace nanoflann
namespace nanoflann {
// structs
struct IndexDist_Sorter;
template <class MatrixType, int DIM = -1, class Distance = nanoflann::metric_L2>
struct KDTreeEigenMatrixAdaptor;
struct KDTreeSingleIndexAdaptorParams;
template <class T, class DataSource, typename _DistanceType = T>
struct L1_Adaptor;
template <class T, class DataSource, typename _DistanceType = T>
struct L2_Adaptor;
template <class T, class DataSource, typename _DistanceType = T>
struct L2_Simple_Adaptor;
struct SearchParams;
template <typename T>
struct array_or_vector_selector<-1, T>;
template <int DIM, typename T>
struct array_or_vector_selector;
struct metric_L1;
struct metric_L2;
struct metric_L2_Simple;
// classes
template <typename T, std::size_t N>
class CArray;
template <
typename Distance,
class DatasetAdaptor,
int DIM = -1,
typename IndexType = size_t
>
class KDTreeSingleIndexAdaptor;
template <
typename DistanceType,
typename IndexType = size_t,
typename CountType = size_t
>
class KNNResultSet;
class PooledAllocator;
template <typename DistanceType, typename IndexType = size_t>
class RadiusResultSet;
// global variables
const size_t WORDSIZE =16;
const size_t BLOCKSIZE =8192;
// global functions
template <typename T>
void save_value(
FILE* stream,
const T& value,
size_t count = 1
);
template <typename T>
void save_value(
FILE* stream,
const std::vector<T>& value
);
template <typename T>
void load_value(
FILE* stream,
T& value,
size_t count = 1
);
template <typename T>
void load_value(
FILE* stream,
std::vector<T>& value
);
template <typename T>
T* allocate(size_t count = 1);
} // namespace nanoflann