11 #include <framework/utilities/NumberSequence.h>
25 std::vector<std::string> tokens;
26 unsigned int lastdelimiter = 0;
27 for (
unsigned int i = 0; i < str.size(); ++i) {
29 tokens.push_back(str.substr(lastdelimiter, i - lastdelimiter));
30 lastdelimiter = i + 1;
33 std::string last = str.substr(lastdelimiter);
34 if (last.size() != 0) {
35 tokens.push_back(last);
39 std::vector<std::pair<int64_t, int64_t>> intervals;
40 intervals.reserve(tokens.size());
41 for (
const auto& token : tokens) {
42 size_t interval_marker_position = token.find(
':');
44 if (interval_marker_position == std::string::npos) {
45 int64_t number = std::stol(token);
46 intervals.emplace_back(number, number);
48 int64_t interval_begin = std::stol(token.substr(0, interval_marker_position));
49 int64_t interval_end = std::stol(token.substr(interval_marker_position + 1));
50 intervals.emplace_back(interval_begin, interval_end);
55 std::set<int64_t> sequence;
56 for (
const auto& interval : intervals) {
57 for (int64_t number = interval.first; number <= interval.second; ++number)
58 sequence.insert(number);