Remove setOwner from range_search.

This commit is contained in:
Jun An
2018-03-26 01:34:50 +08:00
parent ba4511b03c
commit fa23d377ce
2 changed files with 6 additions and 21 deletions
@@ -298,8 +298,6 @@ class RangeSearch
//! If true, this object is responsible for deleting the trees.
bool treeOwner;
//! If true, we own the reference set.
bool setOwner;
//! If true, O(n^2) naive computation is used.
bool naive;
@@ -57,7 +57,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(
referenceSet(naive ? new MatType(std::move(referenceSet)) :
&referenceTree->Dataset()),
treeOwner(!naive),
setOwner(naive),
naive(naive),
singleMode(!naive && singleMode),
metric(metric),
@@ -79,7 +78,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(
referenceTree(referenceTree),
referenceSet(&referenceTree->Dataset()),
treeOwner(false),
setOwner(false),
naive(false),
singleMode(singleMode),
metric(metric),
@@ -101,7 +99,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(
referenceTree(NULL),
referenceSet(new MatType()), // Empty matrix.
treeOwner(false),
setOwner(true),
naive(naive),
singleMode(singleMode),
metric(metric),
@@ -129,7 +126,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(
referenceSet(other.referenceTree ? &referenceTree->Dataset() :
new MatType(*other.referenceSet)),
treeOwner(other.referenceTree),
setOwner(!other.referenceTree),
naive(other.naive),
singleMode(other.singleMode),
metric(other.metric),
@@ -149,7 +145,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(RangeSearch&& other) :
referenceTree(other.referenceTree),
referenceSet(other.referenceSet),
treeOwner(other.treeOwner),
setOwner(other.setOwner),
naive(other.naive),
singleMode(other.singleMode),
metric(std::move(other.metric)),
@@ -162,7 +157,6 @@ RangeSearch<MetricType, MatType, TreeType>::RangeSearch(RangeSearch&& other) :
BuildTree<Tree>(const_cast<MatType&>(*other.referenceSet),
other.oldFromNewReferences);
other.treeOwner = true;
other.setOwner = true;
other.naive = false;
other.singleMode = false;
other.baseCases = 0;
@@ -180,7 +174,7 @@ RangeSearch<MetricType, MatType, TreeType>::operator=(RangeSearch other)
// Clean memory first.
if (treeOwner)
delete referenceTree;
if (setOwner)
if (naive)
delete referenceSet;
// Move the other model.
@@ -188,7 +182,6 @@ RangeSearch<MetricType, MatType, TreeType>::operator=(RangeSearch other)
referenceTree = other.referenceTree;
referenceSet = other.referenceSet;
treeOwner = other.treeOwner;
setOwner = other.setOwner;
naive = other.naive;
singleMode = other.singleMode;
metric = std::move(other.metric);
@@ -207,7 +200,7 @@ RangeSearch<MetricType, MatType, TreeType>::~RangeSearch()
{
if (treeOwner && referenceTree)
delete referenceTree;
if (setOwner && referenceSet)
if (naive && referenceSet)
delete referenceSet;
}
@@ -236,18 +229,16 @@ void RangeSearch<MetricType, MatType, TreeType>::Train(
}
// Delete the old reference set, if we owned it.
if (setOwner && this->referenceSet)
if (naive && this->referenceSet)
delete this->referenceSet;
if (!naive)
{
this->referenceSet = &referenceTree->Dataset();
setOwner = false;
}
else
{
this->referenceSet = new MatType(std::move(referenceSet));
setOwner = true;
}
}
@@ -265,13 +256,12 @@ void RangeSearch<MetricType, MatType, TreeType>::Train(
if (treeOwner && referenceTree)
delete this->referenceTree;
if (setOwner && referenceSet)
if (naive && referenceSet)
delete this->referenceSet;
this->referenceTree = referenceTree;
this->referenceSet = &referenceTree->Dataset();
treeOwner = false;
setOwner = false;
}
template<typename MetricType,
@@ -657,10 +647,8 @@ void RangeSearch<MetricType, MatType, TreeType>::serialize(
{
if (Archive::is_loading::value)
{
if (setOwner && referenceSet)
if (naive && referenceSet)
delete referenceSet;
setOwner = true;
}
ar & BOOST_SERIALIZATION_NVP(referenceSet);
@@ -696,12 +684,11 @@ void RangeSearch<MetricType, MatType, TreeType>::serialize(
// necessary.
if (Archive::is_loading::value)
{
if (setOwner && referenceSet)
if (naive && referenceSet)
delete referenceSet;
referenceSet = &referenceTree->Dataset();
metric = referenceTree->Metric(); // Get the metric from the tree.
setOwner = false;
}
}
}