24 #ifndef __ALGORITHM_TYPES_H__
25 #define __ALGORITHM_TYPES_H__
27 #include "services/daal_defines.h"
28 #include "data_management/data/data_archive.h"
29 #include "data_management/data/data_serialize.h"
30 #include "data_management/data/data_collection.h"
31 #include "services/error_handling.h"
67 virtual ~Parameter() {}
69 virtual services::Status check()
const {
return services::Status(); }
76 class DAAL_EXPORT Argument
82 Argument() : idx(0) {}
88 Argument(
const size_t n);
90 virtual ~Argument() {};
97 Argument &operator <<(
const data_management::SerializationIfacePtr &val)
109 return _storage->size();
117 Argument(
const Argument& other);
124 const data_management::SerializationIfacePtr &
get(
size_t index)
const;
132 void set(
size_t index,
const data_management::SerializationIfacePtr &value);
138 void setStorage(
const data_management::DataCollectionPtr& storage);
144 static data_management::DataCollectionPtr& getStorage(Argument& a);
150 static const data_management::DataCollectionPtr& getStorage(
const Argument& a);
153 template<
typename Archive,
bool onDeserialize>
154 services::Status serialImpl(Archive *arch)
157 arch->setObj(_storage.get());
159 return services::Status();
164 data_management::DataCollectionPtr _storage;
171 class SerializableArgument :
public data_management::SerializationIface,
public Argument
177 SerializableArgument() {}
183 SerializableArgument(
const size_t n) : Argument(n) {}
185 virtual ~SerializableArgument() {};
193 class Input :
public Argument
205 Input(
const size_t n) : Argument(n) {}
214 virtual services::Status check(
const Parameter *parameter,
int method)
const {
return services::Status(); }
221 Input(
const Input& other) : Argument(other){}
229 class PartialResult :
public SerializableArgument
235 PartialResult() : _initFlag(false) {};
241 PartialResult(
const size_t n) : SerializableArgument(n), _initFlag(false) {}
243 virtual ~PartialResult() {};
248 virtual int getSerializationTag()
const {
return 0; }
254 bool getInitFlag() {
return _initFlag; }
260 void setInitFlag(
bool flag) { _initFlag = flag; }
268 virtual services::Status check(
const Input *input,
const Parameter *parameter,
int method)
const
270 return services::Status();
278 virtual services::Status check(
const Parameter *parameter,
int method)
const {
return services::Status(); }
285 template<
typename Archive,
bool onDeserialize>
286 services::Status serialImpl(Archive *arch)
288 Argument::serialImpl<Archive, onDeserialize>(arch);
290 arch->set(_initFlag);
292 return services::Status();
294 virtual services::Status serializeImpl(data_management::InputDataArchive *archive)
296 return services::Status();
298 virtual services::Status deserializeImpl(
const data_management::OutputDataArchive *archive)
300 return services::Status();
309 class Result :
public SerializableArgument
321 Result(
const size_t n) : SerializableArgument(n) {}
323 virtual ~Result() {};
328 virtual int getSerializationTag()
const {
return 0; }
336 virtual services::Status check(
const Input *input,
const Parameter *parameter,
int method)
const
338 return services::Status();
347 virtual services::Status check(
const PartialResult *partialResult,
const Parameter *parameter,
int method)
const
349 return services::Status();
355 template<
typename Archive,
bool onDeserialize>
356 services::Status serialImpl(Archive *arch)
358 Argument::serialImpl<Archive, onDeserialize>(arch);
360 return services::Status();
362 virtual services::Status serializeImpl(data_management::InputDataArchive *archive)
364 return services::Status();
366 virtual services::Status deserializeImpl(
const data_management::OutputDataArchive *archive)
368 return services::Status();
376 class DAAL_EXPORT OptionalArgument :
public SerializableArgument
379 DECLARE_SERIALIZABLE_TAG();
382 OptionalArgument() : SerializableArgument(0) {}
388 OptionalArgument(
const size_t n) : SerializableArgument(n) {}
395 const data_management::SerializationIfacePtr &
get(
size_t index)
const {
return SerializableArgument::get(index); }
403 void set(
size_t index,
const data_management::SerializationIfacePtr &value) {
return SerializableArgument::set(index, value); }
407 template<
typename Archive,
bool onDeserialize>
408 services::Status serialImpl(Archive *arch)
410 Argument::serialImpl<Archive, onDeserialize>(arch);
412 return services::Status();
415 services::Status serializeImpl(data_management::InputDataArchive *arch) DAAL_C11_OVERRIDE
417 serialImpl<data_management::InputDataArchive, false>(arch);
419 return services::Status();
422 services::Status deserializeImpl(
const data_management::OutputDataArchive *arch) DAAL_C11_OVERRIDE
424 serialImpl<const data_management::OutputDataArchive, true>(arch);
426 return services::Status();
429 typedef services::SharedPtr<Input> InputPtr;
430 typedef services::SharedPtr<PartialResult> PartialResultPtr;
431 typedef services::SharedPtr<Result> ResultPtr;
432 typedef services::SharedPtr<OptionalArgument> OptionalArgumentPtr;
436 using interface1::Parameter;
437 using interface1::Argument;
438 using interface1::Input;
439 using interface1::InputPtr;
440 using interface1::PartialResult;
441 using interface1::PartialResultPtr;
442 using interface1::Result;
443 using interface1::ResultPtr;
444 using interface1::OptionalArgument;
445 using interface1::OptionalArgumentPtr;
daal::algorithms::interface1::Result::Result
Result(const size_t n)
Definition: algorithm_types.h:321
daal::algorithms::interface1::Result::getSerializationTag
virtual int getSerializationTag() const
Definition: algorithm_types.h:328
daal::algorithms::interface1::PartialResult::check
virtual services::Status check(const Parameter *parameter, int method) const
Definition: algorithm_types.h:278
daal::algorithms::interface1::Argument
Base class to represent computation input and output arguments.
Definition: algorithm_types.h:76
daal::algorithms::interface1::OptionalArgument
Base class to represent argument with serialization methods
Definition: algorithm_types.h:376
daal::algorithms::interface1::Result::check
virtual services::Status check(const PartialResult *partialResult, const Parameter *parameter, int method) const
Definition: algorithm_types.h:347
daal::algorithms::interface1::PartialResult::check
virtual services::Status check(const Input *input, const Parameter *parameter, int method) const
Definition: algorithm_types.h:268
daal::algorithms::interface1::Input::Input
Input(const size_t n)
Definition: algorithm_types.h:205
daal::algorithms::interface1::Result
Base class to represent final results of the computation. Algorithm-specific final results are repres...
Definition: algorithm_types.h:309
daal::algorithms::interface1::SerializableArgument::SerializableArgument
SerializableArgument()
Definition: algorithm_types.h:177
daal::algorithms::interface1::OptionalArgument::OptionalArgument
OptionalArgument()
Definition: algorithm_types.h:382
daal::algorithms::interface1::Argument::get
const data_management::SerializationIfacePtr & get(size_t index) const
daal::algorithms::interface1::Argument::set
void set(size_t index, const data_management::SerializationIfacePtr &value)
daal::algorithms::interface1::Input
Base class to represent computation input arguments. Algorithm-specific input arguments are represent...
Definition: algorithm_types.h:193
daal::algorithms::interface1::PartialResult::setInitFlag
void setInitFlag(bool flag)
Definition: algorithm_types.h:260
daal::algorithms::interface1::SerializableArgument
Base class to represent argument with serialization methods
Definition: algorithm_types.h:171
daal::algorithms::interface1::OptionalArgument::OptionalArgument
OptionalArgument(const size_t n)
Definition: algorithm_types.h:388
daal::algorithms::interface1::PartialResult::getInitFlag
bool getInitFlag()
Definition: algorithm_types.h:254
daal::algorithms::interface1::Parameter
Base class to represent computation parameters. Algorithm-specific parameters are represented as deri...
Definition: algorithm_types.h:62
daal::algorithms::interface1::Input::check
virtual services::Status check(const Parameter *parameter, int method) const
Definition: algorithm_types.h:214
daal::algorithms::interface1::PartialResult::PartialResult
PartialResult()
Definition: algorithm_types.h:235
daal::algorithms::interface1::OptionalArgument::set
void set(size_t index, const data_management::SerializationIfacePtr &value)
Definition: algorithm_types.h:403
daal::algorithms::interface1::Argument::size
size_t size() const
Definition: algorithm_types.h:107
daal::algorithms::interface1::Result::Result
Result()
Definition: algorithm_types.h:315
daal::algorithms::interface1::Input::Input
Input()
Definition: algorithm_types.h:199
daal::algorithms::interface1::Argument::Argument
Argument()
Definition: algorithm_types.h:82
daal::algorithms::interface1::Result::check
virtual services::Status check(const Input *input, const Parameter *parameter, int method) const
Definition: algorithm_types.h:336
daal::algorithms::interface1::Input::Input
Input(const Input &other)
Definition: algorithm_types.h:221
daal::algorithms::interface1::PartialResult::PartialResult
PartialResult(const size_t n)
Definition: algorithm_types.h:241
daal::algorithms::math::abs::value
Definition: abs_types.h:88
daal::algorithms::interface1::SerializableArgument::SerializableArgument
SerializableArgument(const size_t n)
Definition: algorithm_types.h:183
daal::algorithms::interface1::PartialResult::getSerializationTag
virtual int getSerializationTag() const
Definition: algorithm_types.h:248
daal::algorithms::interface1::PartialResult
Base class to represent partial results of the computation. Algorithm-specific partial results are re...
Definition: algorithm_types.h:229