48 #ifndef __ALGORITHM_BASE_MODE_IMPL_H__
49 #define __ALGORITHM_BASE_MODE_IMPL_H__
51 #include "services/daal_defines.h"
52 #include "algorithms/algorithm_base_common.h"
53 #include "algorithms/algorithm_base_mode_batch.h"
71 template<ComputeMode mode>
72 class DAAL_EXPORT AlgorithmImpl :
public Algorithm<mode>
76 AlgorithmImpl() : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
78 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
80 virtual ~AlgorithmImpl()
83 resetFinalizeCompute();
90 services::Status computeNoThrow();
96 services::Status compute()
98 this->_status = computeNoThrow();
99 return services::throwIfPossible(this->_status);
105 services::Status finalizeComputeNoThrow()
107 if(this->isChecksEnabled())
109 services::Status s = this->checkPartialResult();
114 services::Status s = this->allocateResultMemory();
116 return s.add(services::ErrorMemoryAllocationFailed);
118 this->_ac->setPartialResult(this->_pres);
119 this->_ac->setResult(this->_res);
121 if(this->isChecksEnabled())
123 s = this->checkFinalizeComputeParams();
128 s = setupFinalizeCompute();
130 s |= this->_ac->finalizeCompute();
131 if(resetFinalizeFlag)
132 s |= resetFinalizeCompute();
139 services::Status finalizeCompute()
141 this->_status = finalizeComputeNoThrow();
142 return services::throwIfPossible(this->_status);
148 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
152 s = this->_par->check();
153 return s.add(this->_in->check(this->_par, this->getMethod()));
159 virtual services::Status checkResult() DAAL_C11_OVERRIDE
161 return this->_pres ? this->_pres->check(this->_in, this->_par, this->getMethod()) :
162 services::Status(services::ErrorNullPartialResult);
168 virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
170 return this->_pres ? this->_pres->check(this->_par, this->getMethod()) :
171 services::Status(services::ErrorNullPartialResult);
177 virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
179 return this->_res ? this->_res->check(this->_pres, this->_par, this->getMethod()) : services::Status();
182 services::Status setupCompute()
187 s = this->_ac->setupCompute();
193 services::Status resetCompute()
198 s = this->_ac->resetCompute();
204 void enableResetOnCompute(
bool flag)
209 services::Status setupFinalizeCompute()
212 if(!wasFinalizeSetup)
214 s = this->_ac->setupFinalizeCompute();
215 wasFinalizeSetup =
true;
220 services::Status resetFinalizeCompute()
225 s = this->_ac->resetFinalizeCompute();
226 wasFinalizeSetup =
false;
231 void enableResetOnFinalizeCompute(
bool flag)
233 resetFinalizeFlag = flag;
239 bool wasFinalizeSetup;
240 bool resetFinalizeFlag;
248 class DAAL_EXPORT AlgorithmImpl<batch> :
public Algorithm<batch>
252 AlgorithmImpl() : wasSetup(false), resetFlag(true) {}
254 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(false), resetFlag(true) {}
256 virtual ~AlgorithmImpl()
264 services::Status computeNoThrow();
269 services::Status compute()
271 this->_status = computeNoThrow();
272 return services::throwIfPossible(this->_status);
278 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
288 return _in->check(_par, getMethod());
294 virtual services::Status checkResult() DAAL_C11_OVERRIDE
297 return _res->check(_in, _par, getMethod());
298 return services::Status(services::ErrorNullResult);
301 services::Status setupCompute()
306 s = this->_ac->setupCompute();
312 services::Status resetCompute()
317 s = this->_ac->resetCompute();
323 void enableResetOnCompute(
bool flag)
334 using interface1::AlgorithmImpl;
daal::algorithms::interface1::AlgorithmImpl< batch >::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:252
daal
Definition: algorithm_base_common.h:57
daal::algorithms::interface1::AlgorithmImpl::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:76
daal::algorithms::interface1::AlgorithmImpl< batch >::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:294
daal::algorithms::interface1::AlgorithmImpl::checkPartialResult
virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:168
daal::algorithms::interface1::AlgorithmImpl< batch >::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:269
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:131
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:170
daal::algorithms::interface1::AlgorithmImpl< batch >::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:278
daal::algorithms::interface1::AlgorithmImpl::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:159
daal::algorithms::interface1::AlgorithmImpl::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:148
daal::batch
Definition: daal_defines.h:131
daal::algorithms::interface1::AlgorithmImpl::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:96
daal::algorithms::interface1::AlgorithmImpl::finalizeCompute
services::Status finalizeCompute()
Definition: algorithm_base_mode_impl.h:139
daal::algorithms::interface1::AlgorithmImpl
Provides implementations of the compute and finalizeCompute methods of the Algorithm class...
Definition: algorithm_base_mode_impl.h:72
daal::algorithms::interface1::Algorithm
Implements the abstract interface AlgorithmIface. Algorithm is, in turn, the base class for the class...
Definition: algorithm_base_mode.h:76
daal::algorithms::interface1::AlgorithmImpl::finalizeComputeNoThrow
services::Status finalizeComputeNoThrow()
Definition: algorithm_base_mode_impl.h:105
daal::services::ErrorNullResult
Definition: error_indexes.h:122
daal::algorithms::interface1::AlgorithmImpl::checkFinalizeComputeParams
virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:177