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 typedef CsvDataSource<FeatureManager, SummaryStatisticsType> super;
53 typedef data_management::HomogenNumericTable<DAAL_DATA_TYPE> DefaultNumericTableType;
56 using super::_rawLineBuffer;
57 using super::_rawLineBufferLen;
58 using super::_rawLineLength;
71 StringDataSource(
const byte *data,
72 DataSourceIface::NumericTableAllocationFlag doAllocateNumericTable = DataSource::notAllocateNumericTable,
73 DataSourceIface::DictionaryCreationFlag doCreateDictionaryFromContext = DataSource::notDictionaryFromContext,
74 size_t initialMaxRows = 10):
75 super(doAllocateNumericTable, doCreateDictionaryFromContext, initialMaxRows),
76 _contextDictFlag(false)
85 void setData(
const byte *data )
89 _status.add(services::throwIfPossible(services::Status(services::ErrorNullPtr)));
93 _stringBuffer = (
char *)data;
100 const byte *getData()
102 return (
const byte *)(_stringBuffer);
110 _stringBufferPos = 0;
114 services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
116 services::Status s = super::createDictionaryFromContext();
117 _stringBufferPos = 0;
121 DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
123 return (iseof() ? DataSourceIface::endOfData : DataSourceIface::readyForLoad);
127 bool iseof() const DAAL_C11_OVERRIDE
129 return (_stringBuffer[_stringBufferPos] ==
'\0');
132 int readLine(
char *buffer,
int count)
135 for(;pos<count-1;pos++)
137 buffer[pos] = _stringBuffer[_stringBufferPos+pos];
139 if( buffer[pos]==
'\0' || buffer[pos]==
'\n' )
144 if(buffer[pos]==
'\n')
148 _stringBufferPos += pos;
153 services::Status readLine() DAAL_C11_OVERRIDE
158 const int readLen = readLine (_rawLineBuffer + _rawLineLength, (
int)(_rawLineBufferLen - _rawLineLength));
162 return services::Status();
164 _rawLineLength += readLen;
165 if (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r')
167 while (_rawLineLength > 0 && (_rawLineBuffer[_rawLineLength - 1] ==
'\n' || _rawLineBuffer[_rawLineLength - 1] ==
'\r'))
171 _rawLineBuffer[_rawLineLength] =
'\0';
172 return services::Status();
174 if(!super::enlargeBuffer())
175 return services::Status(services::ErrorMemoryAllocationFailed);
177 return services::Status();
182 size_t _stringBufferPos;
184 bool _contextDictFlag;
188 using interface1::StringDataSource;
daal::data_management::interface1::StringDataSource::resetData
void resetData()
Definition: string_data_source.h:108
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:71
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:305
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:85
daal::data_management::interface1::StringDataSource::getStatus
DataSourceIface::DataSourceStatus getStatus() DAAL_C11_OVERRIDE
Definition: string_data_source.h:121
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::DataSourceTemplate
Implements the abstract DataSourceIface interface.
Definition: data_source.h:463
daal::data_management::interface1::StringDataSource::createDictionaryFromContext
services::Status createDictionaryFromContext() DAAL_C11_OVERRIDE
Definition: string_data_source.h:114
daal::data_management::interface1::CsvDataSource
Specifies methods to access data stored in files.
Definition: csv_data_source.h:97
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:100
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