[mlpack-git] master: Refactor CoverTree to new TreeType API. (6e3f49e)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Wed Jul 29 16:42:11 EDT 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/f8ceffae0613b350f4d6bdd46c6c8633a40b4897...6ee21879488fe98612a4619b17f8b51e8da5215b

>---------------------------------------------------------------

commit 6e3f49e05cc464765bfad21ff3d61ad6f928171b
Author: ryan <ryan at ratml.org>
Date:   Fri Jul 24 14:27:13 2015 -0400

    Refactor CoverTree to new TreeType API.


>---------------------------------------------------------------

6e3f49e05cc464765bfad21ff3d61ad6f928171b
 src/mlpack/core/tree/cover_tree.hpp                |   1 +
 src/mlpack/core/tree/cover_tree/cover_tree.hpp     |   4 +-
 .../core/tree/cover_tree/cover_tree_impl.hpp       | 168 ++++++++++-----------
 .../core/tree/cover_tree/dual_tree_traverser.hpp   |   8 +-
 .../tree/cover_tree/dual_tree_traverser_impl.hpp   |  30 ++--
 .../core/tree/cover_tree/single_tree_traverser.hpp |  10 +-
 .../tree/cover_tree/single_tree_traverser_impl.hpp |  24 +--
 src/mlpack/core/tree/cover_tree/traits.hpp         |  10 +-
 8 files changed, 128 insertions(+), 127 deletions(-)

diff --git a/src/mlpack/core/tree/cover_tree.hpp b/src/mlpack/core/tree/cover_tree.hpp
index b82befc..d879b24 100644
--- a/src/mlpack/core/tree/cover_tree.hpp
+++ b/src/mlpack/core/tree/cover_tree.hpp
@@ -15,5 +15,6 @@
 #include "cover_tree/dual_tree_traverser.hpp"
 #include "cover_tree/dual_tree_traverser_impl.hpp"
 #include "cover_tree/traits.hpp"
+#include "cover_tree/typedef.hpp"
 
 #endif
diff --git a/src/mlpack/core/tree/cover_tree/cover_tree.hpp b/src/mlpack/core/tree/cover_tree/cover_tree.hpp
index 6dafc6a..e5e78fc 100644
--- a/src/mlpack/core/tree/cover_tree/cover_tree.hpp
+++ b/src/mlpack/core/tree/cover_tree/cover_tree.hpp
@@ -85,9 +85,9 @@ namespace tree {
  *      sp_mat).
  */
 template<typename MetricType = metric::LMetric<2, true>,
-         typename RootPointPolicy = FirstPointIsRoot,
          typename StatisticType = EmptyStatistic,
-         typename MatType = arma::mat>
+         typename MatType = arma::mat,
+         typename RootPointPolicy = FirstPointIsRoot>
 class CoverTree
 {
  public:
diff --git a/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp b/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
index 4d8247f..cd634d7 100644
--- a/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
+++ b/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
@@ -19,11 +19,11 @@ namespace tree {
 // Create the cover tree.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
     const MatType& dataset,
     const double base,
     MetricType* metric) :
@@ -106,11 +106,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
     const MatType& dataset,
     MetricType& metric,
     const double base) :
@@ -190,11 +190,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
     const MatType& dataset,
     const double base,
     const size_t pointIndex,
@@ -238,11 +238,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
 // Manually create a cover tree node.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
     const MatType& dataset,
     const double base,
     const size_t pointIndex,
@@ -273,11 +273,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
     const CoverTree& other) :
     dataset(other.dataset),
     point(other.point),
@@ -302,11 +302,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CoverTree(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::~CoverTree()
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::~CoverTree()
 {
   // Delete each child.
   for (size_t i = 0; i < children.size(); ++i)
@@ -320,12 +320,12 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::~CoverTree()
 //! Return the number of descendant points.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 inline size_t
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     NumDescendants() const
 {
   return numDescendants;
@@ -334,12 +334,12 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! Return the index of a particular descendant point.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 inline size_t
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::Descendant(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::Descendant(
     const size_t index) const
 {
   // The first descendant is the point contained within this node.
@@ -365,11 +365,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::Descendant(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MinDistance(const CoverTree* other) const
 {
   // Every cover tree node will contain points up to base^(scale + 1) away.
@@ -380,11 +380,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MinDistance(const CoverTree* other, const double distance) const
 {
   // We already have the distance as evaluated by the metric.
@@ -394,11 +394,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MinDistance(const arma::vec& other) const
 {
   return std::max(metric->Evaluate(dataset.col(point), other) -
@@ -407,11 +407,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MinDistance(const arma::vec& /* other */, const double distance) const
 {
   return std::max(distance - furthestDescendantDistance, 0.0);
@@ -419,11 +419,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MaxDistance(const CoverTree* other) const
 {
   return metric->Evaluate(dataset.col(point),
@@ -433,11 +433,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MaxDistance(const CoverTree* other, const double distance) const
 {
   // We already have the distance as evaluated by the metric.
@@ -447,11 +447,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MaxDistance(const arma::vec& other) const
 {
   return metric->Evaluate(dataset.col(point), other) +
@@ -460,11 +460,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+double CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MaxDistance(const arma::vec& /* other */, const double distance) const
 {
   return distance + furthestDescendantDistance;
@@ -473,11 +473,11 @@ double CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! Return the minimum and maximum distance to another node.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+math::Range CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     RangeDistance(const CoverTree* other) const
 {
   const double distance = metric->Evaluate(dataset.col(point),
@@ -496,11 +496,11 @@ math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! point-to-point distance has already been calculated.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+math::Range CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     RangeDistance(const CoverTree* other,
                   const double distance) const
 {
@@ -516,11 +516,11 @@ math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! Return the minimum and maximum distance to another point.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+math::Range CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     RangeDistance(const arma::vec& other) const
 {
   const double distance = metric->Evaluate(dataset.col(point), other);
@@ -533,11 +533,11 @@ math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! point-to-point distance has already been calculated.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+math::Range CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     RangeDistance(const arma::vec& /* other */,
                   const double distance) const
 {
@@ -548,12 +548,12 @@ math::Range CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 //! For a newly initialized node, create children using the near and far set.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 inline void
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CreateChildren(
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CreateChildren(
     arma::Col<size_t>& indices,
     arma::vec& distances,
     size_t nearSetSize,
@@ -743,11 +743,11 @@ CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::CreateChildren(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+size_t CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     SplitNearFar(arma::Col<size_t>& indices,
                  arma::vec& distances,
                  const double bound,
@@ -801,11 +801,11 @@ size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 // Returns the maximum distance between points.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     ComputeDistances(const size_t pointIndex,
                      const arma::Col<size_t>& indices,
                      arma::vec& distances,
@@ -823,11 +823,11 @@ void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+size_t CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     SortPointSet(arma::Col<size_t>& indices,
                  arma::vec& distances,
                  const size_t childFarSetSize,
@@ -888,11 +888,11 @@ size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     MoveToUsedSet(arma::Col<size_t>& indices,
                   arma::vec& distances,
                   size_t& nearSetSize,
@@ -1034,11 +1034,11 @@ void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+size_t CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     PruneFarSet(arma::Col<size_t>& indices,
                 arma::vec& distances,
                 const double bound,
@@ -1080,11 +1080,11 @@ size_t CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
  */
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-inline void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+inline void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     RemoveNewImplicitNodes()
 {
   // If we created an implicit node, take its self-child instead (this could
@@ -1116,11 +1116,11 @@ inline void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
  */
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
-std::string CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+std::string CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     ToString() const
 {
   std::ostringstream convert;
diff --git a/src/mlpack/core/tree/cover_tree/dual_tree_traverser.hpp b/src/mlpack/core/tree/cover_tree/dual_tree_traverser.hpp
index 963099c..bd053dc 100644
--- a/src/mlpack/core/tree/cover_tree/dual_tree_traverser.hpp
+++ b/src/mlpack/core/tree/cover_tree/dual_tree_traverser.hpp
@@ -15,12 +15,12 @@ namespace tree {
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-class CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+class CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     DualTreeTraverser
 {
  public:
@@ -59,7 +59,7 @@ class CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
   struct DualCoverTreeMapEntry
   {
     //! The node this entry refers to.
-    CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>*
+    CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>*
         referenceNode;
     //! The score of the node.
     double score;
diff --git a/src/mlpack/core/tree/cover_tree/dual_tree_traverser_impl.hpp b/src/mlpack/core/tree/cover_tree/dual_tree_traverser_impl.hpp
index 65e4240..ee8881c 100644
--- a/src/mlpack/core/tree/cover_tree/dual_tree_traverser_impl.hpp
+++ b/src/mlpack/core/tree/cover_tree/dual_tree_traverser_impl.hpp
@@ -15,12 +15,12 @@ namespace tree {
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 DualTreeTraverser<RuleType>::DualTreeTraverser(RuleType& rule) :
     rule(rule),
     numPrunes(0)
@@ -28,12 +28,12 @@ DualTreeTraverser<RuleType>::DualTreeTraverser(RuleType& rule) :
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 DualTreeTraverser<RuleType>::Traverse(CoverTree& queryNode,
                                       CoverTree& referenceNode)
 {
@@ -57,12 +57,12 @@ DualTreeTraverser<RuleType>::Traverse(CoverTree& queryNode,
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 DualTreeTraverser<RuleType>::Traverse(
     CoverTree& queryNode,
     std::map<int, std::vector<DualCoverTreeMapEntry> >& referenceMap)
@@ -143,12 +143,12 @@ DualTreeTraverser<RuleType>::Traverse(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 DualTreeTraverser<RuleType>::PruneMap(
     CoverTree& queryNode,
     std::map<int, std::vector<DualCoverTreeMapEntry> >& referenceMap,
@@ -264,12 +264,12 @@ DualTreeTraverser<RuleType>::PruneMap(
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 DualTreeTraverser<RuleType>::ReferenceRecursion(
     CoverTree& queryNode,
     std::map<int, std::vector<DualCoverTreeMapEntry> >& referenceMap)
diff --git a/src/mlpack/core/tree/cover_tree/single_tree_traverser.hpp b/src/mlpack/core/tree/cover_tree/single_tree_traverser.hpp
index 62aefe5..b2622c2 100644
--- a/src/mlpack/core/tree/cover_tree/single_tree_traverser.hpp
+++ b/src/mlpack/core/tree/cover_tree/single_tree_traverser.hpp
@@ -18,12 +18,12 @@ namespace tree {
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-class CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+class CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
     SingleTreeTraverser
 {
  public:
@@ -54,8 +54,8 @@ class CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
   size_t numPrunes;
 };
 
-}; // namespace tree
-}; // namespace mlpack
+} // namespace tree
+} // namespace mlpack
 
 // Include implementation.
 #include "single_tree_traverser_impl.hpp"
diff --git a/src/mlpack/core/tree/cover_tree/single_tree_traverser_impl.hpp b/src/mlpack/core/tree/cover_tree/single_tree_traverser_impl.hpp
index f0663a0..2c20eb7 100644
--- a/src/mlpack/core/tree/cover_tree/single_tree_traverser_impl.hpp
+++ b/src/mlpack/core/tree/cover_tree/single_tree_traverser_impl.hpp
@@ -19,14 +19,14 @@ namespace tree {
 //! This is the structure the cover tree map will use for traversal.
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 struct CoverTreeMapEntry
 {
   //! The node this entry refers to.
-  CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>* node;
+  CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>* node;
   //! The score of the node.
   double score;
   //! The index of the parent node.
@@ -43,12 +43,12 @@ struct CoverTreeMapEntry
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 SingleTreeTraverser<RuleType>::SingleTreeTraverser(RuleType& rule) :
     rule(rule),
     numPrunes(0)
@@ -56,19 +56,19 @@ SingleTreeTraverser<RuleType>::SingleTreeTraverser(RuleType& rule) :
 
 template<
     typename MetricType,
-    typename RootPointPolicy,
     typename StatisticType,
-    typename MatType
+    typename MatType,
+    typename RootPointPolicy
 >
 template<typename RuleType>
-void CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>::
+void CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::
 SingleTreeTraverser<RuleType>::Traverse(
     const size_t queryIndex,
     CoverTree& referenceNode)
 {
   // This is a non-recursive implementation (which should be faster than a
   // recursive implementation).
-  typedef CoverTreeMapEntry<MetricType, RootPointPolicy, StatisticType, MatType>
+  typedef CoverTreeMapEntry<MetricType, StatisticType, MatType, RootPointPolicy>
       MapEntryType;
 
   // We will use this map as a priority queue.  Each key represents the scale,
@@ -230,7 +230,7 @@ SingleTreeTraverser<RuleType>::Traverse(
   }
 }
 
-}; // namespace tree
-}; // namespace mlpack
+} // namespace tree
+} // namespace mlpack
 
 #endif
diff --git a/src/mlpack/core/tree/cover_tree/traits.hpp b/src/mlpack/core/tree/cover_tree/traits.hpp
index dabc55a..60d6aa1 100644
--- a/src/mlpack/core/tree/cover_tree/traits.hpp
+++ b/src/mlpack/core/tree/cover_tree/traits.hpp
@@ -20,10 +20,10 @@ namespace tree {
  * mlpack/core/tree/tree_traits.hpp for more information.
  */
 template<typename MetricType,
-         typename RootPointPolicy,
          typename StatisticType,
-         typename MatType>
-class TreeTraits<CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>>
+         typename MatType,
+         typename RootPointPolicy>
+class TreeTraits<CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>>
 {
  public:
   /**
@@ -54,7 +54,7 @@ class TreeTraits<CoverTree<MetricType, RootPointPolicy, StatisticType, MatType>>
   static const bool BinaryTree = false;
 };
 
-}; // namespace tree
-}; // namespace mlpack
+} // namespace tree
+} // namespace mlpack
 
 #endif



More information about the mlpack-git mailing list