# HG changeset patch # User Chris Cannam # Date 1425039632 0 # Node ID 006fd4cb95b33f03d5f117857c7c2abb435060c0 # Parent 3662865740daca23ec0c0996bb71e12607f29267 Make getRowRange/getColRange operate on first matcher only diff -r 3662865740da -r 006fd4cb95b3 src/Matcher.cpp --- a/src/Matcher.cpp Fri Feb 27 12:09:43 2015 +0000 +++ b/src/Matcher.cpp Fri Feb 27 12:20:32 2015 +0000 @@ -140,19 +140,44 @@ pair Matcher::getColRange(int i) { - if (i < 0 || i >= int(m_first.size())) { - cerr << "ERROR: Matcher::getColRange(" << i << "): Index out of range" - << endl; - throw "Index out of range"; + if (m_firstPM) { + if (i < 0 || i >= int(m_first.size())) { + cerr << "ERROR: Matcher::getColRange(" << i << "): Index out of range" + << endl; + throw "Index out of range"; + } else { + return pair(m_first[i], m_last[i]); + } } else { - return pair(m_first[i], m_last[i]); + return m_otherMatcher->getRowRange(i); } } pair -Matcher::getRowRange(int i) +Matcher::getRowRange(int j) { - return m_otherMatcher->getColRange(i); + if (m_firstPM) { + + //!!! tedious, examine uses (& consider restoring use of + //!!! first/last in "other" matcher) + int a = -1, b = -1; + for (int i = 0; i < int(m_first.size()); ++i) { + if (j >= m_first[i] && j < m_last[i]) { + if (a == -1) a = i; + b = i; + } + } + if (a == -1) { + cerr << "ERROR: Matcher::getRowRange(" << j << "): Index out of range" + << endl; + throw "Index out of range"; + } else { + return pair(a, b + 1); + } + + } else { + return m_otherMatcher->getColRange(j); + } } distance_t