29 #include <boost/regex.hpp>
30 #include <boost/current_function.hpp>
32 #include <pni/core/arrays.hpp>
33 #include "../spreadsheet_reader.hpp"
94 static pni::core::type_id_t
_typestr2id(
const pni::core::string &tstr);
116 static std::vector<pni::core::string>
_read_data_line(
const pni::core::string &line);
152 template<
typename CTYPE>
208 T
parameter(
const pni::core::string &name)
const;
221 template<
typename CTYPE>
222 CTYPE
column(
const pni::core::string &n)
const;
237 template<
typename CTYPE>
238 void column(
const pni::core::string &n,CTYPE &c)
const;
254 std::streampos opos = stream.tellg();
257 stream.seekg(this->
_param_map.find(name)->second,std::ios::beg);
265 stream.seekg(opos,std::ios::beg);
271 template<
typename CTYPE>
281 catch(key_error &error)
284 error.append(EXCEPTION_RECORD);
292 catch(file_error &error)
294 error.append(EXCEPTION_RECORD);
301 template<
typename CTYPE>
306 std::vector<size_t> s{this->
nrecords()};
315 template<
typename CTYPE>
320 std::streampos orig_pos = stream.tellg();
324 pni::core::string linebuffer;
326 for(
auto iter = c.begin();iter!=c.end();++iter)
328 typename CTYPE::value_type &v = *iter;
330 for(
typename CTYPE::value_type &v: c)
336 std::getline(stream,linebuffer);
341 stream.seekg(orig_pos,std::ios::beg);
343 throw file_error(EXCEPTION_RECORD,
"Error reading data from file!");
346 std::vector<pni::core::string> string_data = this->
_read_data_line(linebuffer);
348 std::stringstream ss(string_data[index]);
356 stream.seekg(orig_pos,std::ios::beg);
void _parse_file(std::ifstream &stream)
initial file parseing
Definition: fio_reader.cpp:33
size_t column_index(const pni::core::string &name) const
get column index
Definition: spreadsheet_reader.cpp:86
void _read_column(size_t index, CTYPE &array) const
read column data
Definition: fio_reader.hpp:316
void _parse_parameters(std::ifstream &stream)
parse parameter section
Definition: fio_reader.cpp:64
CTYPE column(const pni::core::string &n) const
get single column
Definition: fio_reader.hpp:302
static std::vector< pni::core::string > _read_data_line(const pni::core::string &line)
read data line
Definition: fio_reader.cpp:198
FIO data reader.
Definition: fio_reader.hpp:46
std::ifstream & _get_stream() const
get stream
Definition: data_reader.hpp:84
std::vector< pni::core::string > parameter_names() const
get parameter names
Definition: fio_reader.cpp:263
size_t nrecords() const
get record number
Definition: spreadsheet_reader.hpp:171
static column_info _read_column_info(const pni::core::string &line)
get ColumnInfo from line
Definition: fio_reader.cpp:186
Definition: cbf_reader.hpp:41
base class for spreadsheet reader
Definition: spreadsheet_reader.hpp:44
void _get_parameter_data(std::ifstream &stream, T &value) const
read parameter data
Definition: fio_reader.hpp:244
std::map< pni::core::string, std::streampos > _param_map
parameter stream positions
Definition: fio_reader.hpp:50
fio_reader()
default constructor
Definition: fio_reader.cpp:217
size_t nparameters() const
get number of parameters
Definition: fio_reader.cpp:256
void _parse_data(std::ifstream &stream)
parse the data section
Definition: fio_reader.cpp:112
Spreadsheet column information.
Definition: column_info.hpp:43
~fio_reader()
destructor
Definition: fio_reader.cpp:239
fio_reader & operator=(const fio_reader &r)=delete
copy assignment is deleted
static pni::core::type_id_t _typestr2id(const pni::core::string &tstr)
type id from type string
Definition: fio_reader.cpp:175
T parameter(const pni::core::string &name) const
get parameter by name
Definition: fio_reader.hpp:251
std::streampos _data_offset
offset where real data starts
Definition: fio_reader.hpp:52