24 #ifndef __STRING_DATA_SOURCE_H__
25 #define __STRING_DATA_SOURCE_H__
27 #include "services/daal_memory.h"
28 #include "data_management/data_source/data_source.h"
29 #include "data_management/data_source/csv_data_source.h"
30 #include "data_management/data/data_dictionary.h"
31 #include "data_management/data/numeric_table.h"
32 #include "data_management/data/homogen_numeric_table.h"
36 namespace data_management
50 template<
typename FeatureManager,
typename SummaryStatisticsType = DAAL_SUMMARY_STATISTICS_TYPE>
51 class StringDataSource :
public CsvDataSource<FeatureManager, SummaryStatisticsType>
54 typedef CsvDataSource<FeatureManager, SummaryStatisticsType> super;
55 typedef data_management::HomogenNumericTable<DAAL_DATA_TYPE> DefaultNumericTableType;
58 using super::_rawLineBuffer;
59 using super::_rawLineBufferLen;
60 using super::_rawLineLength;
73 StringDataSource(
const byte *data,
74 DataSourceIface::NumericTableAllocationFlag doAllocateNumericTable = DataSource::notAllocateNumericTable,
75 DataSourceIface::DictionaryCreationFlag doCreateDictionaryFromContext = DataSource::notDictionaryFromContext,
76 size_t initialMaxRows = 10):
77 super(doAllocateNumericTable, doCreateDictionaryFromContext, initialMaxRows),
78 _contextDictFlag(false)
87 void setData(
const byte *data )
91 _status.add(services::throwIfPossible(services::Status(services::ErrorNullPtr)));
95 _stringBuffer = (
char *)data;
102 const byte *getData()
104 return (
const byte *)(_stringBuffer);
112 _stringBufferPos = 0;
116 services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
118 services::Status s = super::createDictionaryFromContext();
119 _stringBufferPos = 0;
123 DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
125 return (iseof() ? DataSourceIface::endOfData : DataSourceIface::readyForLoad);
129 bool iseof() const DAAL_C11_OVERRIDE
131 return (_stringBuffer[_stringBufferPos] ==
'\0');
134 int readLine(
char *buffer,
int count)
137 for(;pos<count-1;pos++)
139 buffer[pos] = _stringBuffer[_stringBufferPos+pos];
141 if( buffer[pos]==
'\0' || buffer[pos]==
'\n' )
146 if(buffer[pos]==
'\n')
150 _stringBufferPos += pos;
155 services::Status readLine() DAAL_C11_OVERRIDE
160 const int readLen = readLine (_rawLineBuffer + _rawLineLength, (
int)(_rawLineBufferLen - _rawLineLength));
164 return services::Status();
166 _rawLineLength += readLen;
167 if (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r')
169 while (_rawLineLength > 0 && (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r'))
173 _rawLineBuffer[_rawLineLength] =
'\0';
174 return services::Status();
176 if(!super::enlargeBuffer())
177 return services::Status(services::ErrorMemoryAllocationFailed);
179 return services::Status();
184 size_t _stringBufferPos;
186 bool _contextDictFlag;
190 using interface1::StringDataSource;
daal::data_management::interface1::DataSourceIface::NumericTableAllocationFlag
NumericTableAllocationFlag
Specifies whether a Numeric Table is allocated inside of the Data Source object.
Definition: data_source.h:80
daal::data_management::interface1::CsvDataSource
Specifies methods to access data stored in files.
Definition: csv_data_source.h:100
daal::data_management::interface1::CsvDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: csv_data_source.h:327
daal::algorithms::association_rules::data
Definition: apriori_types.h:83
daal::data_management::interface1::DataSourceIface::notAllocateNumericTable
Definition: data_source.h:82
daal::data_management::interface1::DataSourceIface::notDictionaryFromContext
Definition: data_source.h:72
daal::data_management::interface1::StringDataSource::getStatus
DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
Definition: string_data_source.h:123
daal::services::ErrorNullPtr
Definition: error_indexes.h:141
daal::data_management::interface1::DataSourceIface::readyForLoad
Definition: data_source.h:60
daal::data_management::interface1::StringDataSource
Specifies methods to access data stored in byte arrays in the C-string format.
Definition: string_data_source.h:51
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:73
daal::data_management::interface1::StringDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: string_data_source.h:116
daal::data_management::interface1::DataSourceIface::DataSourceStatus
DataSourceStatus
Specifies the status of the Data Source.
Definition: data_source.h:58
daal::data_management::interface1::DataSourceIface::endOfData
Definition: data_source.h:62
daal::data_management::interface1::DataSourceIface::doAllocateNumericTable
Definition: data_source.h:83
daal::data_management::interface1::StringDataSource::resetData
void resetData()
Definition: string_data_source.h:110
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:70
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::data_management::interface1::StringDataSource::getData
const byte * getData()
Definition: string_data_source.h:102
daal::data_management::interface1::StringDataSource::setData
void setData(const byte *data)
Definition: string_data_source.h:87
daal::data_management::interface1::DataSourceTemplate
Implements the abstract DataSourceIface interface.
Definition: data_source.h:464