34 std::string::iterator it =
35 std::remove_if(str.begin(), str.end(), [](
char a) { return a ==
' '; });
36 str = std::string(str.begin(), it);
39 for (std::string bl : tok) {
50 if (toks.size() > 3 || toks.size() < 1) {
51 throw std::runtime_error(
"invalid range");
54 block.
begin_ = block.
end_ = std::stoi(toks[0]);
56 if (toks.size() == 2) {
57 block.
end_ = std::stoi(toks[1]);
60 if (toks.size() == 3) {
61 block.
stride_ = std::stoi(toks[1]);
62 block.
end_ = std::stoi(toks[2]);
66 throw std::runtime_error(
67 std::string(
"invalid range " + str +
68 ": begin, end and stride do not form a closed interval"));
base class for all analysis tools