22 #ifndef __ALGORITHM_TYPES_H__
23 #define __ALGORITHM_TYPES_H__
25 #include "services/daal_defines.h"
26 #include "data_management/data/data_archive.h"
27 #include "data_management/data/data_serialize.h"
28 #include "data_management/data/data_collection.h"
29 #include "services/error_handling.h"
65 virtual ~Parameter() {}
67 virtual services::Status check()
const {
return services::Status(); }
74 class DAAL_EXPORT Argument
80 Argument() : idx(0) {}
86 Argument(
const size_t n);
88 virtual ~Argument() {};
95 Argument &operator <<(
const data_management::SerializationIfacePtr &val)
107 return _storage->size();
115 Argument(
const Argument& other);
122 const data_management::SerializationIfacePtr &
get(
size_t index)
const;
130 void set(
size_t index,
const data_management::SerializationIfacePtr &value);
136 void setStorage(
const data_management::DataCollectionPtr& storage);
142 static data_management::DataCollectionPtr& getStorage(Argument& a);
148 static const data_management::DataCollectionPtr& getStorage(
const Argument& a);
151 template<
typename Archive,
bool onDeserialize>
152 services::Status serialImpl(Archive *arch)
155 arch->setObj(_storage.get());
157 return services::Status();
162 data_management::DataCollectionPtr _storage;
169 class SerializableArgument :
public data_management::SerializationIface,
public Argument
175 SerializableArgument() {}
181 SerializableArgument(
const size_t n) : Argument(n) {}
183 virtual ~SerializableArgument() {};
191 class Input :
public Argument
203 Input(
const size_t n) : Argument(n) {}
212 virtual services::Status check(
const Parameter *parameter,
int method)
const {
return services::Status(); }
219 Input(
const Input& other) : Argument(other){}
227 class PartialResult :
public SerializableArgument
233 PartialResult() : _initFlag(false) {};
239 PartialResult(
const size_t n) : SerializableArgument(n), _initFlag(false) {}
241 virtual ~PartialResult() {};
246 virtual int getSerializationTag()
const {
return 0; }
252 bool getInitFlag() {
return _initFlag; }
258 void setInitFlag(
bool flag) { _initFlag = flag; }
266 virtual services::Status check(
const Input *input,
const Parameter *parameter,
int method)
const
268 return services::Status();
276 virtual services::Status check(
const Parameter *parameter,
int method)
const {
return services::Status(); }
283 template<
typename Archive,
bool onDeserialize>
284 services::Status serialImpl(Archive *arch)
286 Argument::serialImpl<Archive, onDeserialize>(arch);
288 arch->set(_initFlag);
290 return services::Status();
292 virtual services::Status serializeImpl(data_management::InputDataArchive *archive)
294 return services::Status();
296 virtual services::Status deserializeImpl(
const data_management::OutputDataArchive *archive)
298 return services::Status();
307 class Result :
public SerializableArgument
319 Result(
const size_t n) : SerializableArgument(n) {}
321 virtual ~Result() {};
326 virtual int getSerializationTag()
const {
return 0; }
334 virtual services::Status check(
const Input *input,
const Parameter *parameter,
int method)
const
336 return services::Status();
345 virtual services::Status check(
const PartialResult *partialResult,
const Parameter *parameter,
int method)
const
347 return services::Status();
353 template<
typename Archive,
bool onDeserialize>
354 services::Status serialImpl(Archive *arch)
356 Argument::serialImpl<Archive, onDeserialize>(arch);
358 return services::Status();
360 virtual services::Status serializeImpl(data_management::InputDataArchive *archive)
362 return services::Status();
364 virtual services::Status deserializeImpl(
const data_management::OutputDataArchive *archive)
366 return services::Status();
374 class DAAL_EXPORT OptionalArgument :
public SerializableArgument
377 DECLARE_SERIALIZABLE_TAG();
380 OptionalArgument() : SerializableArgument(0) {}
386 OptionalArgument(
const size_t n) : SerializableArgument(n) {}
393 const data_management::SerializationIfacePtr &
get(
size_t index)
const {
return SerializableArgument::get(index); }
401 void set(
size_t index,
const data_management::SerializationIfacePtr &value) {
return SerializableArgument::set(index, value); }
405 template<
typename Archive,
bool onDeserialize>
406 services::Status serialImpl(Archive *arch)
408 Argument::serialImpl<Archive, onDeserialize>(arch);
410 return services::Status();
413 services::Status serializeImpl(data_management::InputDataArchive *arch) DAAL_C11_OVERRIDE
415 serialImpl<data_management::InputDataArchive, false>(arch);
417 return services::Status();
420 services::Status deserializeImpl(
const data_management::OutputDataArchive *arch) DAAL_C11_OVERRIDE
422 serialImpl<const data_management::OutputDataArchive, true>(arch);
424 return services::Status();
427 typedef services::SharedPtr<Input> InputPtr;
428 typedef services::SharedPtr<PartialResult> PartialResultPtr;
429 typedef services::SharedPtr<Result> ResultPtr;
430 typedef services::SharedPtr<OptionalArgument> OptionalArgumentPtr;
434 using interface1::Parameter;
435 using interface1::Argument;
436 using interface1::Input;
437 using interface1::InputPtr;
438 using interface1::PartialResult;
439 using interface1::PartialResultPtr;
440 using interface1::Result;
441 using interface1::ResultPtr;
442 using interface1::OptionalArgument;
443 using interface1::OptionalArgumentPtr;
daal::algorithms::interface1::Result::getSerializationTag
virtual int getSerializationTag() const
Definition: algorithm_types.h:326
daal::algorithms::interface1::Argument::size
size_t size() const
Definition: algorithm_types.h:105
daal::algorithms::interface1::Result::check
virtual services::Status check(const Input *input, const Parameter *parameter, int method) const
Definition: algorithm_types.h:334
daal
Definition: algorithm_base_common.h:31
daal::algorithms::interface1::Result
Base class to represent final results of the computation. Algorithm-specific final results are repres...
Definition: algorithm_types.h:307
daal::algorithms::interface1::PartialResult::getSerializationTag
virtual int getSerializationTag() const
Definition: algorithm_types.h:246
daal::algorithms::interface1::PartialResult
Base class to represent partial results of the computation. Algorithm-specific partial results are re...
Definition: algorithm_types.h:227
daal::algorithms::interface1::OptionalArgument
Base class to represent argument with serialization methods
Definition: algorithm_types.h:374
daal::algorithms::interface1::Result::check
virtual services::Status check(const PartialResult *partialResult, const Parameter *parameter, int method) const
Definition: algorithm_types.h:345
daal::algorithms::interface1::Result::Result
Result(const size_t n)
Definition: algorithm_types.h:319
daal::algorithms::interface1::OptionalArgument::OptionalArgument
OptionalArgument()
Definition: algorithm_types.h:380
daal::algorithms::interface1::Parameter
Base class to represent computation parameters. Algorithm-specific parameters are represented as deri...
Definition: algorithm_types.h:60
daal::algorithms::interface1::OptionalArgument::OptionalArgument
OptionalArgument(const size_t n)
Definition: algorithm_types.h:386
daal::algorithms::interface1::PartialResult::getInitFlag
bool getInitFlag()
Definition: algorithm_types.h:252
daal::algorithms::interface1::PartialResult::check
virtual services::Status check(const Input *input, const Parameter *parameter, int method) const
Definition: algorithm_types.h:266
daal::algorithms::interface1::Result::Result
Result()
Definition: algorithm_types.h:313
daal::algorithms::interface1::Argument::get
const data_management::SerializationIfacePtr & get(size_t index) const
daal::algorithms::interface1::Argument::Argument
Argument()
Definition: algorithm_types.h:80
daal::algorithms::interface1::SerializableArgument
Base class to represent argument with serialization methods
Definition: algorithm_types.h:169
daal::algorithms::math::abs::value
Definition: abs_types.h:86
daal::algorithms::interface1::PartialResult::PartialResult
PartialResult(const size_t n)
Definition: algorithm_types.h:239
daal::algorithms::interface1::SerializableArgument::SerializableArgument
SerializableArgument()
Definition: algorithm_types.h:175
daal::algorithms::interface1::PartialResult::PartialResult
PartialResult()
Definition: algorithm_types.h:233
daal::algorithms::interface1::Argument
Base class to represent computation input and output arguments.
Definition: algorithm_types.h:74
daal::algorithms::interface1::SerializableArgument::SerializableArgument
SerializableArgument(const size_t n)
Definition: algorithm_types.h:181
daal::algorithms::interface1::OptionalArgument::set
void set(size_t index, const data_management::SerializationIfacePtr &value)
Definition: algorithm_types.h:401
daal::algorithms::interface1::Argument::set
void set(size_t index, const data_management::SerializationIfacePtr &value)
daal::algorithms::interface1::PartialResult::check
virtual services::Status check(const Parameter *parameter, int method) const
Definition: algorithm_types.h:276
daal::algorithms::interface1::PartialResult::setInitFlag
void setInitFlag(bool flag)
Definition: algorithm_types.h:258