2#ifndef INTARNA_INDEXRANGE_H_
3#define INTARNA_INDEXRANGE_H_
11#include <boost/regex.hpp>
38 static constexpr const char*
regexString = R
"((0|-?[123456789]\d*)-(0|-?[123456789]\d*))";
41 static const boost::regex
regex;
109 if (
to < std::abs(shift)) {
165 return (out <<range.
from<<
"-"<<range.
to);
176 if( ! boost::regex_match(stringEncoding,
regex, boost::match_perl) ) {
177 throw std::runtime_error(
"IndexRange::fromString("+stringEncoding+
") uses no valid index range string encoding");
180 size_t splitPos = stringEncoding.find(
"--");
181 if (splitPos == std::string::npos) {
183 splitPos = stringEncoding.find_last_of(
'-');
187 from = boost::lexical_cast<size_t>(stringEncoding.substr(0,splitPos));
188 to = boost::lexical_cast<size_t>(stringEncoding.substr(splitPos+1));
191 from = seq->
getIndex(boost::lexical_cast<long>(stringEncoding.substr(0,splitPos)));
192 to = seq->
getIndex(boost::lexical_cast<long>(stringEncoding.substr(splitPos+1)));
202 std::vector<IndexRange>
Definition IndexRange.h:20
bool isAscending() const
Definition IndexRange.h:80
const bool operator!=(const IndexRange &r) const
Definition IndexRange.h:151
IndexRange operator+(const int shift) const
Definition IndexRange.h:102
bool isDescending() const
Definition IndexRange.h:89
std::vector< IndexRange > overlappingWindows(const size_t windowWidth, const size_t windowOverlap) const
IndexRange operator-(const int shift) const
Definition IndexRange.h:123
IndexRange(const std::string &stringEncoding, const RnaSequence *seq)
Definition IndexRange.h:65
size_t from
the start of the index range
Definition IndexRange.h:32
void fromString(const std::string &stringEncoding, const RnaSequence *seq)
Definition IndexRange.h:174
size_t to
the end of the index range
Definition IndexRange.h:35
const bool operator==(const IndexRange &r) const
Definition IndexRange.h:142
IndexRange(const size_t from=0, const size_t to=NA_INDEX)
Definition IndexRange.h:50
virtual ~IndexRange()
Definition IndexRange.h:74
friend std::ostream & operator<<(std::ostream &out, const IndexRange &range)
Definition IndexRange.h:162
const bool operator<(const IndexRange &r) const
Definition IndexRange.h:133
static constexpr const char * regexString
regular expression that matches valid IndexRange string encodings
Definition IndexRange.h:38
static const size_t LAST_INDEX
Definition IndexRange.h:26
static const boost::regex regex
regular expression that matches valid IndexRange string encodings
Definition IndexRange.h:41
static const size_t NA_INDEX
placeholder for not-defined values
Definition IndexRange.h:29
Definition RnaSequence.h:29
size_t getIndex(const long i) const
Definition RnaSequence.h:398
Definition Accessibility.h:13