42 #ifndef __DATA_COLLECTION_H__ 43 #define __DATA_COLLECTION_H__ 45 #include "services/daal_defines.h" 46 #include "data_management/data/data_serialize.h" 47 #include "data_management/data/data_archive.h" 48 #include "services/daal_shared_ptr.h" 49 #include "services/collection.h" 53 namespace data_management
64 typedef services::SharedPtr<SerializationIface> SerializationIfacePtr;
71 class DAAL_EXPORT DataCollection :
public SerializationIface,
private services::Collection<SerializationIfacePtr >
74 DECLARE_SERIALIZABLE_TAG();
76 typedef services::Collection<SerializationIfacePtr> super;
78 DAAL_CAST_OPERATOR(DataCollection);
84 DataCollection(
const DataCollection &other);
90 DataCollection(
size_t n);
92 virtual ~DataCollection() {};
99 const SerializationIfacePtr &operator[](
size_t index)
const;
106 SerializationIfacePtr &operator[](
size_t index);
113 SerializationIfacePtr &
get(
size_t index);
120 const SerializationIfacePtr &
get(
size_t index)
const;
126 DataCollection &push_back(
const SerializationIfacePtr &x);
132 DataCollection &operator << (
const SerializationIfacePtr &x);
149 void erase(
size_t pos);
155 bool resize(
size_t newCapacity);
157 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
159 return serialImpl<interface1::InputDataArchive, false>( arch );
162 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
164 return serialImpl<const interface1::OutputDataArchive, true>( arch );
167 template<
typename Archive,
bool onDeserialize>
168 services::Status serialImpl(Archive *arch)
181 for(
size_t i = 0; i < _size; i++)
183 arch->setSharedPtrObj(_array[i]);
186 return services::Status();
189 typedef services::SharedPtr<DataCollection> DataCollectionPtr;
197 class DAAL_EXPORT KeyValueCollection
200 DAAL_CAST_OPERATOR(KeyValueCollection);
203 KeyValueCollection() {}
205 KeyValueCollection(
const KeyValueCollection &other) : _keys(other._keys), _values(other._values) {}
207 KeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values)
209 for(
size_t i = 0; i < keys.size(); i++)
211 _keys.push_back(keys[i]);
212 _values.push_back(values[i]);
216 virtual ~KeyValueCollection()
224 const services::SharedPtr<T> &operator[] (
size_t k)
const 227 for( i = 0; i < _keys.size(); i++ )
242 services::SharedPtr<T> &operator[] (
size_t k);
249 size_t getKeyByIndex(
int idx)
const 259 services::SharedPtr<T> &getValueByIndex(
int idx)
269 const services::SharedPtr<T> getValueByIndex(
int idx)
const 293 services::Collection<size_t> _keys;
294 services::Collection<services::SharedPtr<T> > _values;
295 services::SharedPtr<T> _nullPtr;
304 class DAAL_EXPORT SerializableKeyValueCollection :
public SerializationIface,
public KeyValueCollection<T>
307 DECLARE_SERIALIZABLE_TAG();
309 DAAL_CAST_OPERATOR(SerializableKeyValueCollection);
312 SerializableKeyValueCollection() : KeyValueCollection<T>() {}
314 SerializableKeyValueCollection(
const SerializableKeyValueCollection &other) : KeyValueCollection<T>(other) {}
316 SerializableKeyValueCollection(
const services::Collection<size_t> &keys,
const services::Collection<services::SharedPtr<T> > &values) : KeyValueCollection<T>(keys, values) {}
318 virtual ~SerializableKeyValueCollection() {}
321 services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
323 return serialImpl<interface1::InputDataArchive, false>( arch );
327 services::Status deserializeImpl(
const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
329 return serialImpl<const interface1::OutputDataArchive, true>( arch );
333 template<
typename Archive,
bool onDeserialize>
334 services::Status serialImpl( Archive *arch )
336 size_t size = this->_values.size();
342 this->_values.resize(size);
343 this->_keys.resize(size);
346 for(
size_t i = 0; i < size; i++)
350 this->_values.push_back(this->_nullPtr);
351 this->_keys.push_back(0);
353 arch->setSharedPtrObj(this->_values[i]);
354 arch->set(this->_keys[i]);
357 return services::Status();
361 typedef SerializableKeyValueCollection<SerializationIface> KeyValueDataCollection;
362 typedef services::SharedPtr<KeyValueDataCollection> KeyValueDataCollectionPtr;
363 typedef services::SharedPtr<const KeyValueDataCollection> KeyValueDataCollectionConstPtr;
366 using interface1::DataCollection;
367 using interface1::DataCollectionPtr;
368 using interface1::KeyValueCollection;
369 using interface1::SerializableKeyValueCollection;
370 using interface1::KeyValueDataCollection;
371 using interface1::KeyValueDataCollectionPtr;
372 using interface1::KeyValueDataCollectionConstPtr;
373 using interface1::SerializationIfacePtr;
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection()
Definition: data_collection.h:203
daal::data_management::interface1::DataCollection::deserializeImpl
services::Status deserializeImpl(const interface1::OutputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:162
daal::data_management::interface1::KeyValueCollection::getValueByIndex
services::SharedPtr< T > & getValueByIndex(int idx)
Definition: data_collection.h:259
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::data_management::interface1::SerializableKeyValueCollection
Class that provides functionality of a key-value container for objects derived from the Serialization...
Definition: data_collection.h:304
daal::data_management::interface1::DataCollection
Class that provides functionality of Collection container for objects derived from SerializationIface...
Definition: data_collection.h:71
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:197
daal::data_management::interface1::KeyValueCollection::clear
void clear()
Definition: data_collection.h:286
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection(const SerializableKeyValueCollection &other)
Definition: data_collection.h:314
daal::data_management::interface1::KeyValueCollection::getKeyByIndex
size_t getKeyByIndex(int idx) const
Definition: data_collection.h:249
daal::services::interface1::SharedPtr
Shared pointer that retains shared ownership of an object through a pointer. Several SharedPtr object...
Definition: daal_shared_ptr.h:187
daal::data_management::interface1::OutputDataArchive
Provides methods to restore an object from its serialized counterpart and access the restored object...
Definition: data_archive.h:978
daal::data_management::interface1::KeyValueCollection::getValueByIndex
const services::SharedPtr< T > getValueByIndex(int idx) const
Definition: data_collection.h:269
daal::data_management::interface1::SerializableKeyValueCollection::SerializableKeyValueCollection
SerializableKeyValueCollection()
Definition: data_collection.h:312
daal::services::interface1::Collection::size
size_t size() const
Definition: collection.h:144
daal::data_management::interface1::DataCollection::serializeImpl
services::Status serializeImpl(interface1::InputDataArchive *arch) DAAL_C11_OVERRIDE
Definition: data_collection.h:157
daal::data_management::interface1::KeyValueCollection::KeyValueCollection
KeyValueCollection(const KeyValueCollection &other)
Definition: data_collection.h:205
daal::data_management::interface1::KeyValueCollection::size
size_t size() const
Definition: data_collection.h:278
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:76
daal::algorithms::kernel_function::values
Definition: kernel_function_types.h:96
daal::services::interface1::Collection
Class that implements functionality of the Collection container.
Definition: collection.h:69