16 #ifndef __DATA_COLLECTION_H__
17 #define __DATA_COLLECTION_H__
19 #include "services/daal_defines.h"
20 #include "data_management/data/data_serialize.h"
21 #include "data_management/data/data_archive.h"
22 #include "services/daal_shared_ptr.h"
23 #include "services/collection.h"
27 namespace data_management
38 typedef services::SharedPtr<SerializationIface> SerializationIfacePtr;
45 class DAAL_EXPORT DataCollection :
public SerializationIface,
private services::Collection<SerializationIfacePtr >
48 DECLARE_SERIALIZABLE_TAG();
50 typedef services::Collection<SerializationIfacePtr> super;
52 DAAL_CAST_OPERATOR(DataCollection);
58 DataCollection(
const DataCollection &other);
64 DataCollection(
size_t n);
66 virtual ~DataCollection() {};
73 const SerializationIfacePtr &operator[](
size_t index)
const;
80 SerializationIfacePtr &operator[](
size_t index);
87 SerializationIfacePtr &
get(
size_t index);
94 const SerializationIfacePtr &
get(
size_t index)
const;
100 DataCollection &push_back(
const SerializationIfacePtr &x);
106 DataCollection &operator << (
const SerializationIfacePtr &x);
123 void erase(
size_t pos);
129 bool resize(
size_t newCapacity);
131 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
133 return serialImpl<interface1::InputDataArchive, false>( arch );
136 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
138 return serialImpl<const interface1::OutputDataArchive, true>( arch );
141 template<
typename Archive,
bool onDeserialize>
142 services::Status serialImpl(Archive *arch)
155 for(
size_t i = 0; i < _size; i++)
157 arch->setSharedPtrObj(_array[i]);
160 return services::Status();
163 typedef services::SharedPtr<DataCollection> DataCollectionPtr;
171 class DAAL_EXPORT KeyValueCollection
174 DAAL_CAST_OPERATOR(KeyValueCollection);
177 KeyValueCollection() {}
179 KeyValueCollection(
const KeyValueCollection &other) : _keys(other._keys), _values(other._values) {}
181 KeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values)
183 for(
size_t i = 0; i < keys.size(); i++)
185 _keys.push_back(keys[i]);
186 _values.push_back(values[i]);
190 virtual ~KeyValueCollection()
198 const services::SharedPtr<T> &operator[] (
size_t k)
const
201 for( i = 0; i < _keys.size(); i++ )
216 services::SharedPtr<T> &operator[] (
size_t k);
223 size_t getKeyByIndex(
int idx)
const
233 services::SharedPtr<T> &getValueByIndex(
int idx)
243 const services::SharedPtr<T> getValueByIndex(
int idx)
const
267 services::Collection<size_t> _keys;
268 services::Collection<services::SharedPtr<T> > _values;
269 services::SharedPtr<T> _nullPtr;
278 class DAAL_EXPORT SerializableKeyValueCollection :
public SerializationIface,
public KeyValueCollection<T>
281 DECLARE_SERIALIZABLE_TAG();
283 DAAL_CAST_OPERATOR(SerializableKeyValueCollection);
286 SerializableKeyValueCollection() : KeyValueCollection<T>() {}
288 SerializableKeyValueCollection(
const SerializableKeyValueCollection &other) : KeyValueCollection<T>(other) {}
290 SerializableKeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values) : KeyValueCollection<T>(keys, values) {}
292 virtual ~SerializableKeyValueCollection() {}
295 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
297 return serialImpl<interface1::InputDataArchive, false>( arch );
301 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
303 return serialImpl<const interface1::OutputDataArchive, true>( arch );
307 template<
typename Archive,
bool onDeserialize>
308 services::Status serialImpl( Archive *arch )
310 size_t size = this->_values.size();
316 this->_values.resize(size);
317 this->_keys.resize(size);
320 for(
size_t i = 0; i < size; i++)
324 this->_values.push_back(this->_nullPtr);
325 this->_keys.push_back(0);
327 arch->setSharedPtrObj(this->_values[i]);
328 arch->set(this->_keys[i]);
331 return services::Status();
335 typedef SerializableKeyValueCollection<SerializationIface> KeyValueDataCollection;
336 typedef services::SharedPtr<KeyValueDataCollection> KeyValueDataCollectionPtr;
337 typedef services::SharedPtr<const KeyValueDataCollection> KeyValueDataCollectionConstPtr;
340 using interface1::DataCollection;
341 using interface1::DataCollectionPtr;
342 using interface1::KeyValueCollection;
343 using interface1::SerializableKeyValueCollection;
344 using interface1::KeyValueDataCollection;
345 using interface1::KeyValueDataCollectionPtr;
346 using interface1::KeyValueDataCollectionConstPtr;
347 using interface1::SerializationIfacePtr;
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection()
Definition: data_collection.h:177
daal::data_management::interface1::DataCollection::deserializeImpl
services::Status deserializeImpl(const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:136
daal::data_management::interface1::KeyValueCollection::getValueByIndex
services::SharedPtr< T > & getValueByIndex(int idx)
Definition: data_collection.h:233
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::SerializableKeyValueCollection
Class that provides functionality of a key-value container for objects derived from the Serialization...
Definition: data_collection.h:278
daal::data_management::interface1::DataCollection
Class that provides functionality of Collection container for objects derived from SerializationIface...
Definition: data_collection.h:45
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:171
daal::data_management::interface1::KeyValueCollection::getValueByIndex
const services::SharedPtr< T > getValueByIndex(int idx) const
Definition: data_collection.h:243
daal::data_management::interface1::KeyValueCollection::clear
void clear()
Definition: data_collection.h:260
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection(const SerializableKeyValueCollection &other)
Definition: data_collection.h:288
daal::data_management::interface1::OutputDataArchive
Provides methods to restore an object from its serialized counterpart and access the restored object...
Definition: data_archive.h:952
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection()
Definition: data_collection.h:286
daal::data_management::interface1::DataCollection::serializeImpl
services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:131
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection(const KeyValueCollection &other)
Definition: data_collection.h:179
daal::data_management::interface1::KeyValueCollection::getKeyByIndex
size_t getKeyByIndex(int idx) const
Definition: data_collection.h:223
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:50
daal::algorithms::kernel_function::values
Definition: kernel_function_types.h:70
daal::data_management::interface1::KeyValueCollection::size
size_t size() const
Definition: data_collection.h:252