48 #ifndef __DATA_DICTIONARY_H__ 49 #define __DATA_DICTIONARY_H__ 51 #include "services/daal_defines.h" 52 #include "services/daal_memory.h" 53 #include "data_management/data/data_serialize.h" 54 #include "data_management/data/data_archive.h" 55 #include "data_management/data/data_utils.h" 59 namespace data_management
74 class NumericTableFeature :
public SerializationIface
77 data_feature_utils::IndexNumType indexType;
78 data_feature_utils::PMMLNumType pmmlType;
79 data_feature_utils::FeatureType featureType;
81 size_t categoryNumber;
89 indexType = data_feature_utils::DAAL_OTHER_T;
90 pmmlType = data_feature_utils::DAAL_GEN_UNKNOWN;
91 featureType = data_feature_utils::DAAL_CONTINUOUS;
99 NumericTableFeature &operator= (
const NumericTableFeature &f)
101 indexType = f.indexType ;
102 pmmlType = f.pmmlType ;
103 featureType = f.featureType ;
104 typeSize = f.typeSize ;
105 categoryNumber = f.categoryNumber;
110 virtual ~NumericTableFeature() {}
119 typeSize =
sizeof(T);
120 indexType = data_feature_utils::getIndexNumType<T>();
121 pmmlType = data_feature_utils::getPMMLNumType<T>();
125 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
127 serialImpl<InputDataArchive, false>( arch );
129 return services::Status();
133 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
135 serialImpl<const OutputDataArchive, true>( arch );
137 return services::Status();
141 template<
typename Archive,
bool onDeserialize>
142 services::Status serialImpl( Archive *arch )
144 arch->set( pmmlType );
145 arch->set( featureType );
146 arch->set( typeSize );
147 arch->set( categoryNumber );
148 arch->set( indexType );
150 return services::Status();
153 virtual int getSerializationTag() const DAAL_C11_OVERRIDE
155 return SERIALIZATION_DATAFEATURE_NT_ID;
158 data_feature_utils::IndexNumType getIndexType()
const 165 class DictionaryIface {
183 template<
typename Feature,
int SerializationTag>
184 class DAAL_EXPORT Dictionary :
public SerializationIface,
public DictionaryIface
187 static int serializationTag() {
return SerializationTag; }
188 virtual int getSerializationTag() const DAAL_C11_OVERRIDE {
return serializationTag(); }
196 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual = notEqual ):
197 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
199 if(nfeat) { setNumberOfFeatures(nfeat); }
209 static services::SharedPtr<Dictionary> create(
size_t nfeat, FeaturesEqual featuresEqual = notEqual, services::Status *stat = NULL )
211 DAAL_DEFAULT_CREATE_IMPL_EX(Dictionary, nfeat, featuresEqual);
218 Dictionary(): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
225 static services::SharedPtr<Dictionary> create( services::Status *stat = NULL )
227 DAAL_DEFAULT_CREATE_IMPL(Dictionary);
231 virtual ~Dictionary()
239 services::Status resetDictionary()
247 return services::Status();
254 virtual services::Status setAllFeatures(
const Feature &defaultFeature)
256 if (_featuresEqual == DictionaryIface::equal)
260 _dict[0] = defaultFeature;
265 for(
size_t i = 0 ; i < _nfeat ; i++ )
267 _dict[i] = defaultFeature;
270 return services::Status();
277 template<
typename featureType>
278 services::Status setAllFeatures()
280 Feature defaultFeature;
281 defaultFeature.template setType<featureType>();
282 return setAllFeatures(defaultFeature);
289 virtual services::Status setNumberOfFeatures(
size_t numberOfFeatures)
292 _nfeat = numberOfFeatures;
293 if (_featuresEqual == DictionaryIface::equal)
295 _dict =
new Feature[1];
299 _dict =
new Feature[_nfeat];
301 return services::Status();
308 size_t getNumberOfFeatures()
const 317 FeaturesEqual getFeaturesEqual()
const 319 return _featuresEqual;
327 Feature &operator[](
const size_t idx)
329 if (_featuresEqual == DictionaryIface::equal)
346 services::Status setFeature(
const Feature &feature,
size_t idx)
349 return services::Status(services::ErrorIncorrectNumberOfFeatures);
351 if (_featuresEqual == DictionaryIface::equal)
357 _dict[idx] = feature;
359 return services::Status();
367 services::Status setFeature(
size_t idx)
370 df.template setType<T>();
371 return setFeature(df, idx);
374 services::Status checkDictionary()
const 376 size_t nFeat = _nfeat;
377 if (_featuresEqual == DictionaryIface::equal) nFeat = 1;
379 for (
size_t i = 0; i < nFeat; ++i)
381 if (_dict[i].getIndexType() == data_feature_utils::DAAL_OTHER_T)
383 return services::Status(services::ErrorUndefinedFeature);
386 return services::Status();
394 DAAL_DEPRECATED services::SharedPtr<services::KernelErrorCollection> getErrors()
400 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
402 serialImpl<InputDataArchive, false>( arch );
404 return services::Status();
408 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
410 serialImpl<const OutputDataArchive, true>( arch );
412 return services::Status();
417 template<
typename Archive,
bool onDeserialize>
418 services::Status serialImpl( Archive *arch )
420 arch->segmentHeader();
423 arch->set( _featuresEqual );
427 size_t nfeat = _nfeat;
429 setNumberOfFeatures(nfeat);
434 arch->setObj( _dict, 1 );
438 arch->setObj( _dict, _nfeat );
441 arch->segmentFooter();
443 return services::Status();
448 FeaturesEqual _featuresEqual;
450 services::SharedPtr<services::KernelErrorCollection> _errors;
452 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual, services::Status &st ):
453 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(
new services::KernelErrorCollection())
455 if(nfeat) { st |= setNumberOfFeatures(nfeat); }
458 Dictionary(services::Status &st): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(
new services::KernelErrorCollection()) {}
460 typedef Dictionary<NumericTableFeature, SERIALIZATION_DATADICTIONARY_NT_ID> NumericTableDictionary;
461 typedef services::SharedPtr<NumericTableDictionary> NumericTableDictionaryPtr;
462 typedef services::SharedPtr<NumericTableFeature> NumericTableFeaturePtr;
466 using interface1::NumericTableFeature;
467 using interface1::NumericTableFeaturePtr;
468 using interface1::DictionaryIface;
469 using interface1::Dictionary;
470 using interface1::NumericTableDictionary;
471 using interface1::NumericTableDictionaryPtr;
daal::data_management::interface1::Dictionary::resetDictionary
services::Status resetDictionary()
Definition: data_dictionary.h:239
daal::data_management::interface1::Dictionary::getNumberOfFeatures
size_t getNumberOfFeatures() const
Definition: data_dictionary.h:308
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::Dictionary::getFeaturesEqual
FeaturesEqual getFeaturesEqual() const
Definition: data_dictionary.h:317
daal::data_management::interface1::NumericTableFeature::NumericTableFeature
NumericTableFeature()
Definition: data_dictionary.h:87
daal::data_management::interface1::Dictionary::operator[]
Feature & operator[](const size_t idx)
Definition: data_dictionary.h:327
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(services::Status *stat=NULL)
Definition: data_dictionary.h:225
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:96
daal::services::SerializationTag
Definition: error_indexes.h:83
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::Dictionary::setFeature
services::Status setFeature(size_t idx)
Definition: data_dictionary.h:367
daal::data_management::interface1::NumericTableFeature::operator=
NumericTableFeature & operator=(const NumericTableFeature &f)
Definition: data_dictionary.h:99
daal::data_management::interface1::Dictionary::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:188
daal::data_management::interface1::NumericTableFeature::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:153
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::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:289
daal::data_management::interface1::Dictionary::setAllFeatures
services::Status setAllFeatures()
Definition: data_dictionary.h:278
daal::data_management::interface1::Dictionary::Dictionary
Dictionary(size_t nfeat, FeaturesEqual featuresEqual=notEqual)
Definition: data_dictionary.h:196
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(const Feature &feature, size_t idx)
Adds a feature to a data dictionary.
Definition: data_dictionary.h:346
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:117
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(size_t nfeat, FeaturesEqual featuresEqual=notEqual, services::Status *stat=NULL)
Definition: data_dictionary.h:209
daal::services::ErrorUndefinedFeature
Definition: error_indexes.h:166
daal::data_management::interface1::Dictionary::setAllFeatures
virtual services::Status setAllFeatures(const Feature &defaultFeature)
Definition: data_dictionary.h:254
daal::data_management::interface1::Dictionary::Dictionary
Dictionary()
Definition: data_dictionary.h:218
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:76
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:74
daal::services::interface1::KernelErrorCollection
Class that represents a kernel error collection (collection that cannot throw exceptions) ...
Definition: error_handling.h:235
daal::data_management::interface1::Dictionary
Class that represents a dictionary of a data set and provides methods to work with the data dictionar...
Definition: data_dictionary.h:184