48 #ifndef __STRING_DATA_SOURCE_H__ 49 #define __STRING_DATA_SOURCE_H__ 51 #include "services/daal_memory.h" 52 #include "data_management/data_source/data_source.h" 53 #include "data_management/data_source/csv_data_source.h" 54 #include "data_management/data/data_dictionary.h" 55 #include "data_management/data/numeric_table.h" 56 #include "data_management/data/homogen_numeric_table.h" 60 namespace data_management
74 template<
typename _featureManager,
typename _summaryStatisticsType = DAAL_SUMMARY_STATISTICS_TYPE >
75 class StringDataSource :
public CsvDataSource< _featureManager, _summaryStatisticsType >
78 using CsvDataSource<_featureManager,_summaryStatisticsType>::checkDictionary;
79 using CsvDataSource<_featureManager,_summaryStatisticsType>::checkNumericTable;
80 using CsvDataSource<_featureManager,_summaryStatisticsType>::freeNumericTable;
81 using CsvDataSource<_featureManager,_summaryStatisticsType>::_dict;
82 using CsvDataSource<_featureManager,_summaryStatisticsType>::_initialMaxRows;
83 using CsvDataSource<_featureManager,_summaryStatisticsType>::loadDataBlock;
85 using CsvDataSource<_featureManager,_summaryStatisticsType>::featureManager;
87 using CsvDataSource<_featureManager,_summaryStatisticsType>::createDictionaryFromContext;
92 typedef _featureManager FeatureManager;
95 typedef data_management::HomogenNumericTable<DAAL_DATA_TYPE> DefaultNumericTableType;
97 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineBuffer;
98 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineBufferLen;
99 using CsvDataSource<_featureManager,_summaryStatisticsType>::_rawLineLength;
100 using CsvDataSource<_featureManager,_summaryStatisticsType>::enlargeBuffer;
112 StringDataSource(
const byte *data,
113 DataSourceIface::NumericTableAllocationFlag doAllocateNumericTable = DataSource::notAllocateNumericTable,
114 DataSourceIface::DictionaryCreationFlag doCreateDictionaryFromContext = DataSource::notDictionaryFromContext,
115 size_t initialMaxRows = 10):
116 CsvDataSource<_featureManager,_summaryStatisticsType>(doAllocateNumericTable, doCreateDictionaryFromContext, initialMaxRows), _contextDictFlag(false)
121 ~StringDataSource() {}
127 void setData(
const byte *data )
131 this->_status.add(services::throwIfPossible(services::Status(services::ErrorNullPtr)));
134 _stringBufferPos = 0;
135 _stringBuffer = (
char *)data;
142 const byte *getData()
144 return (
const byte *)(_stringBuffer);
152 _stringBufferPos = 0;
156 services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
158 services::Status s = CsvDataSource<_featureManager,_summaryStatisticsType>::createDictionaryFromContext();
159 _stringBufferPos = 0;
163 DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
165 return (iseof() ? DataSourceIface::endOfData : DataSourceIface::readyForLoad);
169 bool iseof()
const DAAL_C11_OVERRIDE
171 return (_stringBuffer[_stringBufferPos] ==
'\0');
174 int readLine(
char *buffer,
int count)
177 for(;pos<count-1;pos++)
179 buffer[pos] = _stringBuffer[_stringBufferPos+pos];
181 if( buffer[pos]==
'\0' || buffer[pos]==
'\n' )
186 if(buffer[pos]==
'\n')
190 _stringBufferPos += pos;
195 services::Status readLine() DAAL_C11_OVERRIDE
200 const int readLen = readLine (_rawLineBuffer + _rawLineLength, (
int)(_rawLineBufferLen - _rawLineLength));
204 return services::Status();
206 _rawLineLength += readLen;
207 if (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r')
209 while (_rawLineLength > 0 && (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r'))
213 _rawLineBuffer[_rawLineLength] =
'\0';
214 return services::Status();
217 return services::Status(services::ErrorMemoryAllocationFailed);
219 return services::Status();
224 size_t _stringBufferPos;
226 bool _contextDictFlag;
230 using interface1::StringDataSource;
daal::data_management::interface1::StringDataSource::resetData
void resetData()
Definition: string_data_source.h:150
daal::data_management::interface1::StringDataSource::FeatureManager
_featureManager FeatureManager
Definition: string_data_source.h:92
daal::data_management::interface1::DataSourceIface::readyForLoad
Definition: data_source.h:85
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::data_management::interface1::DataSourceIface::endOfData
Definition: data_source.h:87
daal
Definition: algorithm_base_common.h:57
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:112
daal::data_management::interface1::DataSourceIface::doAllocateNumericTable
Definition: data_source.h:108
daal::data_management::interface1::StringDataSource
Specifies methods to access data stored in byte arrays in the C-string format.
Definition: string_data_source.h:75
daal::data_management::interface1::DataSourceIface::NumericTableAllocationFlag
NumericTableAllocationFlag
Specifies whether a Numeric Table is allocated inside of the Data Source object.
Definition: data_source.h:105
daal::data_management::interface1::CsvDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: csv_data_source.h:275
daal::services::interface1::Status::add
Status & add(ErrorID id)
daal::data_management::interface1::StringDataSource::setData
void setData(const byte *data)
Definition: string_data_source.h:127
daal::data_management::interface1::DataSourceIface::notDictionaryFromContext
Definition: data_source.h:97
daal::data_management::interface1::StringDataSource::getStatus
DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
Definition: string_data_source.h:163
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:172
daal::data_management::interface1::DataSourceIface::DataSourceStatus
DataSourceStatus
Specifies the status of the Data Source.
Definition: data_source.h:83
daal::services::ErrorNullPtr
Definition: error_indexes.h:165
daal::data_management::interface1::DataSourceIface::notAllocateNumericTable
Definition: data_source.h:107
daal::data_management::interface1::StringDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: string_data_source.h:156
daal::data_management::interface1::CsvDataSource
Specifies methods to access data stored in files.
Definition: csv_data_source.h:74
daal::algorithms::association_rules::data
Definition: apriori_types.h:107
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:95
daal::data_management::interface1::StringDataSource::getData
const byte * getData()
Definition: string_data_source.h:142
daal::data_management::interface1::HomogenNumericTable
Class that provides methods to access data stored as a contiguous array of homogeneous feature vector...
Definition: homogen_numeric_table.h:76