20#include <boost/algorithm/string.hpp>
31 sddsFileName_m = input;
35 typedef std::string::const_iterator
iterator_t;
36 typedef SDDS::parser::file_parser<iterator_t> file_parser_t;
41 paramNameToID_m.clear();
42 columnNameToID_m.clear();
51 bool success = phrase_parse(contentsIter, contentsEnd, parser, skipper, sddsData_m);
55 for (; piter != pend && success; ++ piter) {
56 success = piter->parse(contentsIter, contentsEnd, skipper);
58 while (success && contentsIter != contentsEnd) {
61 for (; citer != cend && success; ++ citer) {
62 success = citer->parse(contentsIter, contentsEnd, skipper);
67 if (!success || contentsIter != contentsEnd)
70 "could not parse SDDS file");
73 unsigned int param_order = 0;
76 fixCaseSensitivity(
name);
77 paramNameToID_m.insert(std::make_pair(
name,
82 unsigned int col_order = 0;
83 for (
const SDDS::column &col: sddsData_m.sddsColumns_m) {
85 fixCaseSensitivity(
name);
86 columnNameToID_m.insert(std::make_pair(
name,
95 std::ifstream in(sddsFileName_m.c_str());
100 contents.resize(in.tellg());
101 in.seekg(0, std::ios::beg);
103 in.read(&contents[0], contents.size());
111 "could not open file '" + sddsFileName_m +
"'");
113 return std::string(
"");
117 int idx = getColumnIndex(columnName);
119 return sddsData_m.sddsColumns_m[idx].values_m;
124 fixCaseSensitivity(col_name);
125 auto it = columnNameToID_m.find(col_name);
126 if (it != columnNameToID_m.end()) {
131 "could not find column '" + col_name +
"'");
138 boost::to_lower(for_string);
PartBunchBase< T, Dim >::ConstIterator end(PartBunchBase< T, Dim > const &bunch)
FILECONTENTS * readFile(const char filename[])
SDDS::parser::skipper< iterator_t > skipper_t
std::string::const_iterator iterator_t
std::string::iterator iterator
std::vector< variant_t > columnData_t
ast::columnData_t getColumnData(const std::string &columnName)
static void fixCaseSensitivity(std::string &for_string)
void setInput(const std::string &input)
int getColumnIndex(std::string col_name) const
boost::optional< std::string > name_m
boost::optional< std::string > name_m