3 #include <boost/algorithm/string.hpp>
14 sddsFileName_m = input;
18 typedef std::string::const_iterator
iterator_t;
19 typedef SDDS::parser::file_parser<iterator_t> file_parser_t;
24 paramNameToID_m.clear();
25 columnNameToID_m.clear();
29 iterator_t contentsIter = contents.begin();
30 iterator_t contentsEnd = contents.end();
32 file_parser_t parser(error_handler);
34 bool success = phrase_parse(contentsIter, contentsEnd, parser, skipper, sddsData_m);
38 for (; piter != pend && success; ++ piter) {
39 success = piter->parse(contentsIter, contentsEnd, skipper);
41 while (success && contentsIter != contentsEnd) {
44 for (; citer != cend && success; ++ citer) {
45 success = citer->parse(contentsIter, contentsEnd, skipper);
50 if (!success || contentsIter != contentsEnd)
53 "could not parse SDDS file");
56 unsigned int param_order = 0;
59 fixCaseSensitivity(name);
60 paramNameToID_m.insert(std::make_pair(name,
65 unsigned int col_order = 0;
66 for (
const SDDS::column &col: sddsData_m.sddsColumns_m) {
68 fixCaseSensitivity(name);
69 columnNameToID_m.insert(std::make_pair(name,
78 std::ifstream in(sddsFileName_m.c_str());
82 in.seekg(0, std::ios::end);
83 contents.resize(in.tellg());
84 in.seekg(0, std::ios::beg);
86 in.read(&contents[0], contents.size());
94 "could not open file '" + sddsFileName_m +
"'");
96 return std::string(
"");
100 int idx = getColumnIndex(columnName);
102 return sddsData_m.sddsColumns_m[idx].values_m;
107 fixCaseSensitivity(col_name);
108 auto it = columnNameToID_m.find(col_name);
109 if (it != columnNameToID_m.end()) {
114 "could not find column '" + col_name +
"'");
121 boost::to_lower(for_string);
boost::optional< std::string > name_m
ast::columnData_t getColumnData(const std::string &columnName)
int getColumnIndex(std::string col_name) const
static void fixCaseSensitivity(std::string &for_string)
FILECONTENTS * readFile(const char filename[])
void setInput(const std::string &input)
SDDS::parser::skipper< iterator_t > skipper_t
std::vector< variant_t > columnData_t
std::string::const_iterator iterator_t
std::string::iterator iterator
boost::optional< std::string > name_m