[mlpack-git] master: Avoid deprecated methods inside NeighborSearch class. (74fd863)

gitdub at mlpack.org gitdub at mlpack.org
Tue Aug 23 15:58:25 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/1148f1652e139c9037eb3813550090313d089a30...a8a8a1381b529a01420de6e792a4a1e7bd58a626

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

commit 74fd8631f8bda0d4f3e26a4725065b8e8aeb55be
Author: MarcosPividori <marcos.pividori at gmail.com>
Date:   Fri Aug 19 11:45:09 2016 -0300

    Avoid deprecated methods inside NeighborSearch class.


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

74fd8631f8bda0d4f3e26a4725065b8e8aeb55be
 .../neighbor_search/neighbor_search_impl.hpp       | 58 +++++++++++++++++++---
 1 file changed, 50 insertions(+), 8 deletions(-)

diff --git a/src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp b/src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp
index a4a7cfe..2bd7af4 100644
--- a/src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp
+++ b/src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp
@@ -328,10 +328,20 @@ SingleTreeTraversalType>::NeighborSearch(Tree& referenceTree,
                                          const bool singleMode,
                                          const double epsilon,
                                          const MetricType metric) :
-    NeighborSearch(new Tree(referenceTree), singleMode, epsilon,
-        metric)
+    referenceTree(new Tree(referenceTree)),
+    referenceSet(&this->referenceTree->Dataset()),
+    treeOwner(true),
+    setOwner(false),
+    naive(false),
+    singleMode(singleMode),
+    epsilon(epsilon),
+    metric(metric),
+    baseCases(0),
+    scores(0),
+    treeNeedsReset(false)
 {
-  treeOwner = true;
+  if (epsilon < 0)
+    throw std::invalid_argument("epsilon must be non-negative");
 }
 
 // Construct the object.
@@ -348,10 +358,20 @@ SingleTreeTraversalType>::NeighborSearch(Tree&& referenceTree,
                                          const bool singleMode,
                                          const double epsilon,
                                          const MetricType metric) :
-    NeighborSearch(new Tree(std::move(referenceTree)), singleMode, epsilon,
-        metric)
+    referenceTree(new Tree(std::move(referenceTree))),
+    referenceSet(&this->referenceTree->Dataset()),
+    treeOwner(true),
+    setOwner(false),
+    naive(false),
+    singleMode(singleMode),
+    epsilon(epsilon),
+    metric(metric),
+    baseCases(0),
+    scores(0),
+    treeNeedsReset(false)
 {
-  treeOwner = true;
+  if (epsilon < 0)
+    throw std::invalid_argument("epsilon must be non-negative");
 }
 
 // Construct the object without a reference dataset.
@@ -542,8 +562,19 @@ template<typename SortPolicy,
 void NeighborSearch<SortPolicy, MetricType, MatType, TreeType,
 DualTreeTraversalType, SingleTreeTraversalType>::Train(Tree& referenceTree)
 {
-  Train(new Tree(referenceTree));
+  if (naive)
+    throw std::invalid_argument("cannot train on given reference tree when "
+        "naive search (without trees) is desired");
+
+  if (treeOwner && this->referenceTree)
+    delete this->referenceTree;
+  if (setOwner && referenceSet)
+    delete this->referenceSet;
+
+  this->referenceTree = new Tree(referenceTree);
+  this->referenceSet = &this->referenceTree->Dataset();
   treeOwner = true;
+  setOwner = false;
 }
 
 template<typename SortPolicy,
@@ -557,8 +588,19 @@ template<typename SortPolicy,
 void NeighborSearch<SortPolicy, MetricType, MatType, TreeType,
 DualTreeTraversalType, SingleTreeTraversalType>::Train(Tree&& referenceTree)
 {
-  Train(new Tree(std::move(referenceTree)));
+  if (naive)
+    throw std::invalid_argument("cannot train on given reference tree when "
+        "naive search (without trees) is desired");
+
+  if (treeOwner && this->referenceTree)
+    delete this->referenceTree;
+  if (setOwner && referenceSet)
+    delete this->referenceSet;
+
+  this->referenceTree = new Tree(std::move(referenceTree));
+  this->referenceSet = &this->referenceTree->Dataset();
   treeOwner = true;
+  setOwner = false;
 }
 
 /**




More information about the mlpack-git mailing list