22 #ifndef __STRING_DATA_SOURCE_H__
23 #define __STRING_DATA_SOURCE_H__
25 #include "services/daal_memory.h"
26 #include "data_management/data_source/data_source.h"
27 #include "data_management/data_source/csv_data_source.h"
28 #include "data_management/data/data_dictionary.h"
29 #include "data_management/data/numeric_table.h"
30 #include "data_management/data/homogen_numeric_table.h"
34 namespace data_management
48 template<
typename _featureManager,
typename _summaryStatisticsType = DAAL_SUMMARY_STATISTICS_TYPE >
49 class StringDataSource :
public CsvDataSource< _featureManager, _summaryStatisticsType >
52 using CsvDataSource<_featureManager,_summaryStatisticsType>::checkDictionary;
53 using CsvDataSource<_featureManager,_summaryStatisticsType>::checkNumericTable;
54 using CsvDataSource<_featureManager,_summaryStatisticsType>::freeNumericTable;
55 using CsvDataSource<_featureManager,_summaryStatisticsType>::_dict;
56 using CsvDataSource<_featureManager,_summaryStatisticsType>::_initialMaxRows;
57 using CsvDataSource<_featureManager,_summaryStatisticsType>::loadDataBlock;
59 using CsvDataSource<_featureManager,_summaryStatisticsType>::featureManager;
61 using CsvDataSource<_featureManager,_summaryStatisticsType>::createDictionaryFromContext;
66 typedef _featureManager FeatureManager;
69 typedef data_management::HomogenNumericTable<DAAL_DATA_TYPE> DefaultNumericTableType;
71 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineBuffer;
72 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineBufferLen;
73 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineLength;
74 using CsvDataSource<_featureManager,_summaryStatisticsType>::enlargeBuffer;
86 StringDataSource(
const byte *data,
87 DataSourceIface::NumericTableAllocationFlag doAllocateNumericTable = DataSource::notAllocateNumericTable,
88 DataSourceIface::DictionaryCreationFlag doCreateDictionaryFromContext = DataSource::notDictionaryFromContext,
89 size_t initialMaxRows = 10):
90 CsvDataSource<_featureManager,_summaryStatisticsType>(doAllocateNumericTable, doCreateDictionaryFromContext, initialMaxRows), _contextDictFlag(false)
95 ~StringDataSource() {}
101 void setData(
const byte *data )
105 this->_status.add(services::throwIfPossible(services::Status(services::ErrorNullPtr)));
108 _stringBufferPos = 0;
109 _stringBuffer = (
char *)data;
116 const byte *getData()
118 return (
const byte *)(_stringBuffer);
126 _stringBufferPos = 0;
130 services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
132 services::Status s = CsvDataSource<_featureManager,_summaryStatisticsType>::createDictionaryFromContext();
133 _stringBufferPos = 0;
137 DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
139 return (iseof() ? DataSourceIface::endOfData : DataSourceIface::readyForLoad);
143 bool iseof() const DAAL_C11_OVERRIDE
145 return (_stringBuffer[_stringBufferPos] ==
'\0');
148 int readLine(
char *buffer,
int count)
151 for(;pos<count-1;pos++)
153 buffer[pos] = _stringBuffer[_stringBufferPos+pos];
155 if( buffer[pos]==
'\0' || buffer[pos]==
'\n' )
160 if(buffer[pos]==
'\n')
164 _stringBufferPos += pos;
169 services::Status readLine() DAAL_C11_OVERRIDE
174 const int readLen = readLine (_rawLineBuffer + _rawLineLength, (
int)(_rawLineBufferLen - _rawLineLength));
178 return services::Status();
180 _rawLineLength += readLen;
181 if (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r')
183 while (_rawLineLength > 0 && (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r'))
187 _rawLineBuffer[_rawLineLength] =
'\0';
188 return services::Status();
191 return services::Status(services::ErrorMemoryAllocationFailed);
193 return services::Status();
198 size_t _stringBufferPos;
200 bool _contextDictFlag;
204 using interface1::StringDataSource;
daal::data_management::interface1::StringDataSource::resetData
void resetData()
Definition: string_data_source.h:124
daal::data_management::interface1::StringDataSource::FeatureManager
_featureManager FeatureManager
Definition: string_data_source.h:66
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::StringDataSource::StringDataSource
StringDataSource(const byte *data, DataSourceIface::NumericTableAllocationFlag doAllocateNumericTable=DataSource::notAllocateNumericTable, DataSourceIface::DictionaryCreationFlag doCreateDictionaryFromContext=DataSource::notDictionaryFromContext, size_t initialMaxRows=10)
Definition: string_data_source.h:86
daal::data_management::interface1::StringDataSource
Specifies methods to access data stored in byte arrays in the C-string format.
Definition: string_data_source.h:49
daal::data_management::interface1::CsvDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: csv_data_source.h:249
daal::data_management::interface1::DataSourceIface::DictionaryCreationFlag
DictionaryCreationFlag
Specifies whether a Data Dictionary is created from the context of a Data Source. ...
Definition: data_source.h:69
daal::data_management::interface1::StringDataSource::setData
void setData(const byte *data)
Definition: string_data_source.h:101
daal::data_management::interface1::StringDataSource::getStatus
DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
Definition: string_data_source.h:137
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:146
daal::data_management::interface1::DataSourceIface::notAllocateNumericTable
Definition: data_source.h:81
daal::services::ErrorNullPtr
Definition: error_indexes.h:139
daal::data_management::interface1::DataSourceIface::doAllocateNumericTable
Definition: data_source.h:82
daal::data_management::interface1::StringDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: string_data_source.h:130
daal::data_management::interface1::CsvDataSource
Specifies methods to access data stored in files.
Definition: csv_data_source.h:48
daal::algorithms::association_rules::data
Definition: apriori_types.h:81
daal::data_management::interface1::DataSourceIface::DataSourceStatus
DataSourceStatus
Specifies the status of the Data Source.
Definition: data_source.h:57
daal::data_management::interface1::DataSourceIface::readyForLoad
Definition: data_source.h:59
daal::data_management::interface1::StringDataSource::getData
const byte * getData()
Definition: string_data_source.h:116
daal::data_management::interface1::DataSourceIface::notDictionaryFromContext
Definition: data_source.h:71
daal::data_management::interface1::DataSourceIface::endOfData
Definition: data_source.h:61
daal::data_management::interface1::DataSourceIface::NumericTableAllocationFlag
NumericTableAllocationFlag
Specifies whether a Numeric Table is allocated inside of the Data Source object.
Definition: data_source.h:79