18 #ifndef __DATA_COLLECTION_H__
19 #define __DATA_COLLECTION_H__
21 #include "services/daal_defines.h"
22 #include "data_management/data/data_serialize.h"
23 #include "data_management/data/data_archive.h"
24 #include "services/daal_shared_ptr.h"
25 #include "services/collection.h"
29 namespace data_management
40 typedef services::SharedPtr<SerializationIface> SerializationIfacePtr;
47 class DAAL_EXPORT DataCollection :
public SerializationIface,
private services::Collection<SerializationIfacePtr >
50 DECLARE_SERIALIZABLE_TAG();
52 typedef services::Collection<SerializationIfacePtr> super;
54 DAAL_CAST_OPERATOR(DataCollection);
60 DataCollection(
const DataCollection &other);
66 DataCollection(
size_t n);
68 virtual ~DataCollection() {};
75 const SerializationIfacePtr &operator[](
size_t index)
const;
82 SerializationIfacePtr &operator[](
size_t index);
89 SerializationIfacePtr &
get(
size_t index);
96 const SerializationIfacePtr &
get(
size_t index)
const;
102 DataCollection &push_back(
const SerializationIfacePtr &x);
108 DataCollection &operator << (
const SerializationIfacePtr &x);
125 void erase(
size_t pos);
131 bool resize(
size_t newCapacity);
133 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
135 return serialImpl<interface1::InputDataArchive, false>( arch );
138 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
140 return serialImpl<const interface1::OutputDataArchive, true>( arch );
143 template<
typename Archive,
bool onDeserialize>
144 services::Status serialImpl(Archive *arch)
157 for(
size_t i = 0; i < _size; i++)
159 arch->setSharedPtrObj(_array[i]);
162 return services::Status();
165 typedef services::SharedPtr<DataCollection> DataCollectionPtr;
173 class DAAL_EXPORT KeyValueCollection
176 DAAL_CAST_OPERATOR(KeyValueCollection);
179 KeyValueCollection() {}
181 KeyValueCollection(
const KeyValueCollection &other) : _keys(other._keys), _values(other._values) {}
183 KeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values)
185 for(
size_t i = 0; i < keys.size(); i++)
187 _keys.push_back(keys[i]);
188 _values.push_back(values[i]);
192 virtual ~KeyValueCollection()
200 const services::SharedPtr<T> &operator[] (
size_t k)
const
203 for( i = 0; i < _keys.size(); i++ )
218 services::SharedPtr<T> &operator[] (
size_t k);
225 size_t getKeyByIndex(
int idx)
const
235 services::SharedPtr<T> &getValueByIndex(
int idx)
245 const services::SharedPtr<T> getValueByIndex(
int idx)
const
269 services::Collection<size_t> _keys;
270 services::Collection<services::SharedPtr<T> > _values;
271 services::SharedPtr<T> _nullPtr;
280 class DAAL_EXPORT SerializableKeyValueCollection :
public SerializationIface,
public KeyValueCollection<T>
283 DECLARE_SERIALIZABLE_TAG();
285 DAAL_CAST_OPERATOR(SerializableKeyValueCollection);
288 SerializableKeyValueCollection() : KeyValueCollection<T>() {}
290 SerializableKeyValueCollection(
const SerializableKeyValueCollection &other) : KeyValueCollection<T>(other) {}
292 SerializableKeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values) : KeyValueCollection<T>(keys, values) {}
294 virtual ~SerializableKeyValueCollection() {}
297 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
299 return serialImpl<interface1::InputDataArchive, false>( arch );
303 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
305 return serialImpl<const interface1::OutputDataArchive, true>( arch );
309 template<
typename Archive,
bool onDeserialize>
310 services::Status serialImpl( Archive *arch )
312 size_t size = this->_values.size();
318 this->_values.resize(size);
319 this->_keys.resize(size);
322 for(
size_t i = 0; i < size; i++)
326 this->_values.push_back(this->_nullPtr);
327 this->_keys.push_back(0);
329 arch->setSharedPtrObj(this->_values[i]);
330 arch->set(this->_keys[i]);
333 return services::Status();
337 typedef SerializableKeyValueCollection<SerializationIface> KeyValueDataCollection;
338 typedef services::SharedPtr<KeyValueDataCollection> KeyValueDataCollectionPtr;
339 typedef services::SharedPtr<const KeyValueDataCollection> KeyValueDataCollectionConstPtr;
342 using interface1::DataCollection;
343 using interface1::DataCollectionPtr;
344 using interface1::KeyValueCollection;
345 using interface1::SerializableKeyValueCollection;
346 using interface1::KeyValueDataCollection;
347 using interface1::KeyValueDataCollectionPtr;
348 using interface1::KeyValueDataCollectionConstPtr;
349 using interface1::SerializationIfacePtr;
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection(const SerializableKeyValueCollection &other)
Definition: data_collection.h:290
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection()
Definition: data_collection.h:179
daal::data_management::interface1::SerializableKeyValueCollection
Class that provides functionality of a key-value container for objects derived from the Serialization...
Definition: data_collection.h:280
daal::data_management::interface1::KeyValueCollection::clear
void clear()
Definition: data_collection.h:262
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:52
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection()
Definition: data_collection.h:288
daal::algorithms::kernel_function::values
Definition: kernel_function_types.h:72
daal::data_management::interface1::DataCollection::deserializeImpl
services::Status deserializeImpl(const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:138
daal::data_management::interface1::DataCollection::serializeImpl
services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:133
daal::data_management::interface1::KeyValueCollection::getKeyByIndex
size_t getKeyByIndex(int idx) const
Definition: data_collection.h:225
daal::data_management::interface1::OutputDataArchive
Provides methods to restore an object from its serialized counterpart and access the restored object...
Definition: data_archive.h:988
daal::data_management::interface1::KeyValueCollection::getValueByIndex
services::SharedPtr< T > & getValueByIndex(int idx)
Definition: data_collection.h:235
daal::data_management::interface1::InputDataArchive
Provides methods to create an archive data object (serialized) and access this object.
Definition: data_archive.h:725
daal::data_management::interface1::KeyValueCollection::getValueByIndex
const services::SharedPtr< T > getValueByIndex(int idx) const
Definition: data_collection.h:245
daal::data_management::interface1::KeyValueCollection::size
size_t size() const
Definition: data_collection.h:254
daal::data_management::interface1::DataCollection
Class that provides functionality of Collection container for objects derived from SerializationIface...
Definition: data_collection.h:47
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection(const KeyValueCollection &other)
Definition: data_collection.h:181
daal::data_management::interface1::KeyValueCollection
Class that provides functionality of a key-value container for objects derived from the T with a key ...
Definition: data_collection.h:173