14 #ifndef vtkSpyPlotHistoryReaderPrivate_h 15 #define vtkSpyPlotHistoryReaderPrivate_h 17 #include <vtksys/SystemTools.hxx> 39 bool convert(
const std::string& num, T& t)
41 std::istringstream i(num);
47 void trim(std::string&
string,
const std::string& whitespace =
" \t\"")
49 const size_t begin =
string.find_first_not_of(whitespace);
50 if (begin == std::string::npos)
55 const size_t end =
string.find_last_not_of(whitespace);
56 const size_t range = end - begin + 1;
57 string =
string.substr(begin, range);
64 const size_t begin = str.rfind(
".");
65 if (begin == std::string::npos)
71 bool valid =
convert(str.substr(begin + 1), row);
72 return (valid) ? row : -1;
78 const size_t begin = str.rfind(
".");
79 if (begin == std::string::npos)
84 std::string t(str.substr(0, begin));
90 void split(
const std::string& s,
const char& delim, std::vector<std::string>& elems)
92 std::stringstream ss(s);
94 while (std::getline(ss, item, delim))
97 elems.push_back(item);
103 void getMetaHeaderInfo(
const std::string& s,
const char& delim, std::map<std::string, int>& fields,
104 std::map<int, std::string>& lookup)
106 std::stringstream ss(s);
110 while (std::getline(ss, item, delim))
116 if (vtksys::SystemTools::LowerCase(item) ==
"time")
120 if (fields.find(item) != fields.end())
123 fields[item] = index;
124 lookup[index] = item;
126 if (count == fields.size())
136 void getTimeStepInfo(
const std::string& s,
const char& delim, std::map<int, std::string>& lookup,
137 std::map<std::string, std::string>& info)
139 std::stringstream ss(s);
143 while (std::getline(ss, item, delim))
146 if (lookup.find(index) != lookup.end())
150 info[lookup[index]] = item;
153 if (count == lookup.size())
164 std::map<int, int>& columnIndexToRowId, std::map<int, std::string>& fieldCols)
168 std::vector<std::string> cols;
169 cols.reserve(header.size());
170 split(header, delim, cols);
171 std::vector<std::string>::const_iterator it;
174 std::vector<std::string> newHeader;
175 newHeader.reserve(cols.size());
178 bool foundStart =
false;
182 for (it = cols.begin(); it != cols.end(); ++it)
184 if ((*it).find(
".") != std::string::npos)
189 columnIndexToRowId.insert(std::pair<int, int>(index, rowNumber));
209 int numberOfCols = 1;
219 columnIndexToRowId.insert(std::pair<int, int>(index, rowNumber));
220 index += numberOfCols;
223 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)