25 #ifndef vtkSpyPlotHistoryReaderPrivate_h 26 #define vtkSpyPlotHistoryReaderPrivate_h 28 #include <vtksys/SystemTools.hxx> 50 bool convert(
const std::string& num, T& t)
52 std::istringstream i(num);
58 void trim(std::string&
string,
const std::string& whitespace =
" \t\"")
60 const size_t begin =
string.find_first_not_of(whitespace);
61 if (begin == std::string::npos)
66 const size_t end =
string.find_last_not_of(whitespace);
67 const size_t range = end - begin + 1;
68 string =
string.substr(begin, range);
75 const size_t begin = str.rfind(
".");
76 if (begin == std::string::npos)
82 bool valid =
convert(str.substr(begin + 1), row);
83 return (valid) ? row : -1;
89 const size_t begin = str.rfind(
".");
90 if (begin == std::string::npos)
95 std::string t(str.substr(0, begin));
101 void split(
const std::string& s,
const char& delim, std::vector<std::string>& elems)
103 std::stringstream ss(s);
105 while (std::getline(ss, item, delim))
108 elems.push_back(item);
114 void getMetaHeaderInfo(
const std::string& s,
const char& delim, std::map<std::string, int>& fields,
115 std::map<int, std::string>& lookup)
117 std::stringstream ss(s);
121 while (std::getline(ss, item, delim))
127 if (vtksys::SystemTools::LowerCase(item) ==
"time")
131 if (fields.find(item) != fields.end())
134 fields[item] = index;
135 lookup[index] = item;
137 if (count == fields.size())
147 void getTimeStepInfo(
const std::string& s,
const char& delim, std::map<int, std::string>& lookup,
148 std::map<std::string, std::string>& info)
150 std::stringstream ss(s);
154 while (std::getline(ss, item, delim))
157 if (lookup.find(index) != lookup.end())
161 info[lookup[index]] = item;
164 if (count == lookup.size())
175 std::map<int, int>& columnIndexToRowId, std::map<int, std::string>& fieldCols)
179 std::vector<std::string> cols;
180 cols.reserve(header.size());
181 split(header, delim, cols);
182 std::vector<std::string>::const_iterator it;
185 std::vector<std::string> newHeader;
186 newHeader.reserve(cols.size());
189 bool foundStart =
false;
193 for (it = cols.begin(); it != cols.end(); ++it)
195 if ((*it).find(
".") != std::string::npos)
200 columnIndexToRowId.insert(std::pair<int, int>(index, rowNumber));
220 int numberOfCols = 1;
230 columnIndexToRowId.insert(std::pair<int, int>(index, rowNumber));
231 index += numberOfCols;
234 while (it != cols.end())
std::string nameFromHeaderCol(const std::string &str)
void getTimeStepInfo(const std::string &s, const char &delim, std::map< int, std::string > &lookup, std::map< std::string, std::string > &info)
void getMetaHeaderInfo(const std::string &s, const char &delim, std::map< std::string, int > &fields, std::map< int, std::string > &lookup)
void split(const std::string &s, const char &delim, std::vector< std::string > &elems)
int rowFromHeaderCol(const std::string &str)
std::vector< std::string > createTableLayoutFromHeader(std::string &header, const char &delim, std::map< int, int > &columnIndexToRowId, std::map< int, std::string > &fieldCols)
void trim(std::string &string, const std::string &whitespace=" \")
bool convert(const std::string &num, T &t)