Remove setOwner from range_search.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user