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" 54 #include "services/host_app.h" 73 template<ComputeMode mode>
74 class DAAL_EXPORT AlgorithmImpl :
public Algorithm<mode>
78 AlgorithmImpl() : wasSetup(false), resetFlag(true), wasFinalizeSetup(false), resetFinalizeFlag(true) {}
80 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(
false), resetFlag(
true), wasFinalizeSetup(
false), resetFinalizeFlag(
true) {}
82 virtual ~AlgorithmImpl()
85 resetFinalizeCompute();
92 services::Status computeNoThrow();
98 services::Status compute()
100 this->_status = computeNoThrow();
101 return services::throwIfPossible(this->_status);
107 services::Status finalizeComputeNoThrow()
109 if(this->isChecksEnabled())
111 services::Status s = this->checkPartialResult();
116 services::Status s = this->allocateResultMemory();
118 return s.add(services::ErrorMemoryAllocationFailed);
120 this->_ac->setPartialResult(this->_pres);
121 this->_ac->setResult(this->_res);
123 if(this->isChecksEnabled())
125 s = this->checkFinalizeComputeParams();
130 s = setupFinalizeCompute();
132 s |= this->_ac->finalizeCompute();
133 if(resetFinalizeFlag)
134 s |= resetFinalizeCompute();
141 services::Status finalizeCompute()
143 this->_status = finalizeComputeNoThrow();
144 return services::throwIfPossible(this->_status);
150 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
154 s = this->_par->check();
155 return s.add(this->_in->check(this->_par, this->getMethod()));
161 virtual services::Status checkResult() DAAL_C11_OVERRIDE
163 return this->_pres ? this->_pres->check(this->_in, this->_par, this->getMethod()) :
164 services::Status(services::ErrorNullPartialResult);
170 virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
172 return this->_pres ? this->_pres->check(this->_par, this->getMethod()) :
173 services::Status(services::ErrorNullPartialResult);
179 virtual services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
181 return this->_res ? this->_res->check(this->_pres, this->_par, this->getMethod()) : services::Status();
184 services::Status setupCompute()
189 s = this->_ac->setupCompute();
195 services::Status resetCompute()
200 s = this->_ac->resetCompute();
206 void enableResetOnCompute(
bool flag)
211 services::Status setupFinalizeCompute()
214 if(!wasFinalizeSetup)
216 s = this->_ac->setupFinalizeCompute();
217 wasFinalizeSetup =
true;
222 services::Status resetFinalizeCompute()
227 s = this->_ac->resetFinalizeCompute();
228 wasFinalizeSetup =
false;
233 void enableResetOnFinalizeCompute(
bool flag)
235 resetFinalizeFlag = flag;
241 services::HostAppIfacePtr hostApp();
247 void setHostApp(
const services::HostAppIfacePtr& pHost);
252 bool wasFinalizeSetup;
253 bool resetFinalizeFlag;
261 class DAAL_EXPORT AlgorithmImpl<batch> :
public Algorithm<batch>
265 AlgorithmImpl() : wasSetup(false), resetFlag(true) {}
267 AlgorithmImpl(
const AlgorithmImpl& other) : wasSetup(
false), resetFlag(
true) {}
269 virtual ~AlgorithmImpl()
277 services::Status computeNoThrow();
282 services::Status compute()
284 this->_status = computeNoThrow();
285 return services::throwIfPossible(this->_status);
291 virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
301 return _in->check(_par, getMethod());
307 virtual services::Status checkResult() DAAL_C11_OVERRIDE
310 return _res->check(_in, _par, getMethod());
311 return services::Status(services::ErrorNullResult);
314 services::Status setupCompute()
319 s = this->_ac->setupCompute();
325 services::Status resetCompute()
330 s = this->_ac->resetCompute();
336 void enableResetOnCompute(
bool flag)
345 services::HostAppIfacePtr hostApp();
351 void setHostApp(
const services::HostAppIfacePtr& pHost);
359 using interface1::AlgorithmImpl;
daal::algorithms::interface1::AlgorithmImpl< batch >::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:265
daal::services::interface1::Status
Class that holds the results of API calls. In case of API routine failure it contains the list of err...
Definition: error_handling.h:491
daal
Definition: algorithm_base_common.h:57
daal::algorithms::interface1::AlgorithmImpl::AlgorithmImpl
AlgorithmImpl()
Definition: algorithm_base_mode_impl.h:78
daal::algorithms::interface1::AlgorithmImpl< batch >::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:307
daal::services::interface1::Status::add
Status & add(ErrorID id)
daal::algorithms::interface1::AlgorithmImpl::checkPartialResult
virtual services::Status checkPartialResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:170
daal::algorithms::interface1::AlgorithmImpl< batch >::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:282
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:131
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:172
daal::algorithms::interface1::AlgorithmImpl< batch >::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:291
daal::algorithms::interface1::AlgorithmImpl::checkResult
virtual services::Status checkResult() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:161
daal::algorithms::interface1::AlgorithmImpl::checkComputeParams
virtual services::Status checkComputeParams() DAAL_C11_OVERRIDE
Definition: algorithm_base_mode_impl.h:150
daal::batch
Definition: daal_defines.h:132
daal::algorithms::interface1::AlgorithmImpl::compute
services::Status compute()
Definition: algorithm_base_mode_impl.h:98
daal::algorithms::interface1::AlgorithmImpl::finalizeCompute
services::Status finalizeCompute()
Definition: algorithm_base_mode_impl.h:141
daal::algorithms::interface1::AlgorithmImpl
Provides implementations of the compute and finalizeCompute methods of the Algorithm class...
Definition: algorithm_base_mode_impl.h:74
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:107
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:179