Lines 79-89
Link Here
|
79 |
struct Accumulator<int> { typedef float Type; }; |
79 |
struct Accumulator<int> { typedef float Type; }; |
80 |
|
80 |
|
81 |
|
81 |
|
82 |
class True |
82 |
class XTrue |
83 |
{ |
83 |
{ |
84 |
}; |
84 |
}; |
85 |
|
85 |
|
86 |
class False |
86 |
class XFalse |
87 |
{ |
87 |
{ |
88 |
}; |
88 |
}; |
89 |
|
89 |
|
Lines 97-104
Link Here
|
97 |
template<class T> |
97 |
template<class T> |
98 |
struct L2_Simple |
98 |
struct L2_Simple |
99 |
{ |
99 |
{ |
100 |
typedef True is_kdtree_distance; |
100 |
typedef XTrue is_kdtree_distance; |
101 |
typedef True is_vector_space_distance; |
101 |
typedef XTrue is_vector_space_distance; |
102 |
|
102 |
|
103 |
typedef T ElementType; |
103 |
typedef T ElementType; |
104 |
typedef typename Accumulator<T>::Type ResultType; |
104 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 130-137
Link Here
|
130 |
template<class T> |
130 |
template<class T> |
131 |
struct L2 |
131 |
struct L2 |
132 |
{ |
132 |
{ |
133 |
typedef True is_kdtree_distance; |
133 |
typedef XTrue is_kdtree_distance; |
134 |
typedef True is_vector_space_distance; |
134 |
typedef XTrue is_vector_space_distance; |
135 |
|
135 |
|
136 |
typedef T ElementType; |
136 |
typedef T ElementType; |
137 |
typedef typename Accumulator<T>::Type ResultType; |
137 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 195-202
Link Here
|
195 |
template<class T> |
195 |
template<class T> |
196 |
struct L1 |
196 |
struct L1 |
197 |
{ |
197 |
{ |
198 |
typedef True is_kdtree_distance; |
198 |
typedef XTrue is_kdtree_distance; |
199 |
typedef True is_vector_space_distance; |
199 |
typedef XTrue is_vector_space_distance; |
200 |
|
200 |
|
201 |
typedef T ElementType; |
201 |
typedef T ElementType; |
202 |
typedef typename Accumulator<T>::Type ResultType; |
202 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 252-259
Link Here
|
252 |
template<class T> |
252 |
template<class T> |
253 |
struct MinkowskiDistance |
253 |
struct MinkowskiDistance |
254 |
{ |
254 |
{ |
255 |
typedef True is_kdtree_distance; |
255 |
typedef XTrue is_kdtree_distance; |
256 |
typedef True is_vector_space_distance; |
256 |
typedef XTrue is_vector_space_distance; |
257 |
|
257 |
|
258 |
typedef T ElementType; |
258 |
typedef T ElementType; |
259 |
typedef typename Accumulator<T>::Type ResultType; |
259 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 316-323
Link Here
|
316 |
template<class T> |
316 |
template<class T> |
317 |
struct MaxDistance |
317 |
struct MaxDistance |
318 |
{ |
318 |
{ |
319 |
typedef False is_kdtree_distance; |
319 |
typedef XFalse is_kdtree_distance; |
320 |
typedef True is_vector_space_distance; |
320 |
typedef XTrue is_vector_space_distance; |
321 |
|
321 |
|
322 |
typedef T ElementType; |
322 |
typedef T ElementType; |
323 |
typedef typename Accumulator<T>::Type ResultType; |
323 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 373-380
Link Here
|
373 |
*/ |
373 |
*/ |
374 |
struct HammingLUT |
374 |
struct HammingLUT |
375 |
{ |
375 |
{ |
376 |
typedef False is_kdtree_distance; |
376 |
typedef XFalse is_kdtree_distance; |
377 |
typedef False is_vector_space_distance; |
377 |
typedef XFalse is_vector_space_distance; |
378 |
|
378 |
|
379 |
typedef unsigned char ElementType; |
379 |
typedef unsigned char ElementType; |
380 |
typedef int ResultType; |
380 |
typedef int ResultType; |
Lines 475-482
Link Here
|
475 |
template<class T> |
475 |
template<class T> |
476 |
struct Hamming |
476 |
struct Hamming |
477 |
{ |
477 |
{ |
478 |
typedef False is_kdtree_distance; |
478 |
typedef XFalse is_kdtree_distance; |
479 |
typedef False is_vector_space_distance; |
479 |
typedef XFalse is_vector_space_distance; |
480 |
|
480 |
|
481 |
|
481 |
|
482 |
typedef T ElementType; |
482 |
typedef T ElementType; |
Lines 537-544
Link Here
|
537 |
template<typename T> |
537 |
template<typename T> |
538 |
struct Hamming2 |
538 |
struct Hamming2 |
539 |
{ |
539 |
{ |
540 |
typedef False is_kdtree_distance; |
540 |
typedef XFalse is_kdtree_distance; |
541 |
typedef False is_vector_space_distance; |
541 |
typedef XFalse is_vector_space_distance; |
542 |
|
542 |
|
543 |
typedef T ElementType; |
543 |
typedef T ElementType; |
544 |
typedef int ResultType; |
544 |
typedef int ResultType; |
Lines 596-603
Link Here
|
596 |
template<class T> |
596 |
template<class T> |
597 |
struct HistIntersectionDistance |
597 |
struct HistIntersectionDistance |
598 |
{ |
598 |
{ |
599 |
typedef True is_kdtree_distance; |
599 |
typedef XTrue is_kdtree_distance; |
600 |
typedef True is_vector_space_distance; |
600 |
typedef XTrue is_vector_space_distance; |
601 |
|
601 |
|
602 |
typedef T ElementType; |
602 |
typedef T ElementType; |
603 |
typedef typename Accumulator<T>::Type ResultType; |
603 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 649-656
Link Here
|
649 |
template<class T> |
649 |
template<class T> |
650 |
struct HellingerDistance |
650 |
struct HellingerDistance |
651 |
{ |
651 |
{ |
652 |
typedef True is_kdtree_distance; |
652 |
typedef XTrue is_kdtree_distance; |
653 |
typedef True is_vector_space_distance; |
653 |
typedef XTrue is_vector_space_distance; |
654 |
|
654 |
|
655 |
typedef T ElementType; |
655 |
typedef T ElementType; |
656 |
typedef typename Accumulator<T>::Type ResultType; |
656 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 697-704
Link Here
|
697 |
template<class T> |
697 |
template<class T> |
698 |
struct ChiSquareDistance |
698 |
struct ChiSquareDistance |
699 |
{ |
699 |
{ |
700 |
typedef True is_kdtree_distance; |
700 |
typedef XTrue is_kdtree_distance; |
701 |
typedef True is_vector_space_distance; |
701 |
typedef XTrue is_vector_space_distance; |
702 |
|
702 |
|
703 |
typedef T ElementType; |
703 |
typedef T ElementType; |
704 |
typedef typename Accumulator<T>::Type ResultType; |
704 |
typedef typename Accumulator<T>::Type ResultType; |
Lines 751-758
Link Here
|
751 |
template<class T> |
751 |
template<class T> |
752 |
struct KL_Divergence |
752 |
struct KL_Divergence |
753 |
{ |
753 |
{ |
754 |
typedef True is_kdtree_distance; |
754 |
typedef XTrue is_kdtree_distance; |
755 |
typedef True is_vector_space_distance; |
755 |
typedef XTrue is_vector_space_distance; |
756 |
|
756 |
|
757 |
typedef T ElementType; |
757 |
typedef T ElementType; |
758 |
typedef typename Accumulator<T>::Type ResultType; |
758 |
typedef typename Accumulator<T>::Type ResultType; |