@@ -68,10 +68,12 @@ class SearchNn {
6868template <typename RandomAccessIterator>
6969class SearchKnn {
7070 private:
71- static_assert (std::is_same<
72- typename std::iterator_traits<
73- RandomAccessIterator>::iterator_category,
74- std::random_access_iterator_tag>::value);
71+ static_assert (
72+ std::is_same<
73+ typename std::iterator_traits<
74+ RandomAccessIterator>::iterator_category,
75+ std::random_access_iterator_tag>::value,
76+ " SEARCH_KNN_EXPECTED_RANDOM_ACCESS_ITERATOR" );
7577
7678 using Pair = typename std::iterator_traits<RandomAccessIterator>::value_type;
7779 using Index = typename Pair::first_type;
@@ -154,10 +156,12 @@ class SearchRadius {
154156template <typename RandomAccessIterator>
155157class SearchAknn {
156158 private:
157- static_assert (std::is_same<
158- typename std::iterator_traits<
159- RandomAccessIterator>::iterator_category,
160- std::random_access_iterator_tag>::value);
159+ static_assert (
160+ std::is_same<
161+ typename std::iterator_traits<
162+ RandomAccessIterator>::iterator_category,
163+ std::random_access_iterator_tag>::value,
164+ " SEARCH_AKNN_EXPECTED_RANDOM_ACCESS_ITERATOR" );
161165
162166 using Pair = typename std::iterator_traits<RandomAccessIterator>::value_type;
163167 using Index = typename Pair::first_type;
@@ -304,12 +308,15 @@ class SplitterLongestMedian {
304308 using Sequence = typename internal::Sequence<Scalar, Dim>;
305309
306310 public:
311+ // ! \brief Buffer type used with this splitter.
307312 template <typename T>
308313 using MemoryBuffer = internal::StaticBuffer<T>;
309314
315+ // ! \private
310316 SplitterLongestMedian (Points const & points, std::vector<Index>* p_indices)
311317 : points_{points}, indices_{*p_indices} {}
312318
319+ // ! \brief This function splits a node.
313320 inline void operator ()(
314321 Index const , // depth
315322 Index const offset,
@@ -363,12 +370,15 @@ class SplitterSlidingMidpoint {
363370 using Sequence = typename internal::Sequence<Scalar, Dim>;
364371
365372 public:
373+ // ! \brief Buffer type used with this splitter.
366374 template <typename T>
367375 using MemoryBuffer = internal::DynamicBuffer<T>;
368376
377+ // ! \private
369378 SplitterSlidingMidpoint (Points const & points, std::vector<Index>* p_indices)
370379 : points_{points}, indices_{*p_indices} {}
371380
381+ // ! \brief This function splits a node.
372382 inline void operator ()(
373383 Index const , // depth
374384 Index const offset,
@@ -452,12 +462,15 @@ class KdTree {
452462 struct Branch {
453463 // ! \brief Split coordinate / index of the KdTree spatial dimension.
454464 int split_dim;
465+ // ! \brief Coordinate value used for splitting the children of a node.
455466 Scalar split_val;
456467 };
457468
458469 // ! \brief Tree leaf.
459470 struct Leaf {
471+ // ! \private
460472 Index begin_idx;
473+ // ! \private
461474 Index end_idx;
462475 };
463476
@@ -616,6 +629,12 @@ class KdTree {
616629 RandomAccessIterator begin,
617630 RandomAccessIterator end,
618631 bool const sort = false ) const {
632+ static_assert (
633+ std::is_same<
634+ typename std::iterator_traits<RandomAccessIterator>::value_type,
635+ std::pair<Index, Scalar>>::value,
636+ " SEARCH_ITERATOR_VALUE_TYPE_DOES_NOT_EQUAL_PAIR_INDEX_SCALAR" );
637+
619638 internal::SearchKnn<RandomAccessIterator> v (begin, end);
620639 SearchNn (root_, p, &v);
621640
@@ -629,7 +648,7 @@ class KdTree {
629648 // ! results.
630649 // ! \tparam P Point type.
631650 // ! \see template <typename P, typename RandomAccessIterator> void SearchKnn(P
632- // ! const&, RandomAccessIterator, RandomAccessIterator, bool const sort ) const
651+ // ! const&, RandomAccessIterator, RandomAccessIterator, bool const) const
633652 template <typename P>
634653 inline void SearchKnn (
635654 P const & p,
@@ -714,6 +733,12 @@ class KdTree {
714733 RandomAccessIterator begin,
715734 RandomAccessIterator end,
716735 bool const sort = false ) const {
736+ static_assert (
737+ std::is_same<
738+ typename std::iterator_traits<RandomAccessIterator>::value_type,
739+ std::pair<Index, Scalar>>::value,
740+ " SEARCH_ITERATOR_VALUE_TYPE_DOES_NOT_EQUAL_PAIR_INDEX_SCALAR" );
741+
717742 internal::SearchAknn<RandomAccessIterator> v (e, begin, end);
718743 SearchNn (root_, p, &v);
719744
@@ -728,7 +753,7 @@ class KdTree {
728753 // ! \tparam P Point type.
729754 // ! \see template <typename P, typename RandomAccessIterator> void
730755 // ! SearchAknn(P const&, RandomAccessIterator, RandomAccessIterator, bool
731- // ! const sort ) const
756+ // ! const) const
732757 template <typename P>
733758 inline void SearchAknn (
734759 P const & p,
0 commit comments