Add SelectedFrames::reversed() function

This commit is contained in:
David Capello 2016-06-14 11:14:24 -03:00
parent e58d54600a
commit ad518b7fb2
2 changed files with 23 additions and 0 deletions

View File

@ -97,6 +97,21 @@ namespace doc {
mutable frame_t m_frame; mutable frame_t m_frame;
}; };
class Reversed {
public:
typedef const_reverse_iterator const_iterator;
const_iterator begin() const { return m_selectedFrames.rbegin(); }
const_iterator end() const { return m_selectedFrames.rend(); }
Reversed(const SelectedFrames& selectedFrames)
: m_selectedFrames(selectedFrames) {
}
private:
const SelectedFrames& m_selectedFrames;
};
const_iterator begin() const { return const_iterator(m_ranges.begin()); } const_iterator begin() const { return const_iterator(m_ranges.begin()); }
const_iterator end() const { return const_iterator(m_ranges.end()); } const_iterator end() const { return const_iterator(m_ranges.end()); }
const_reverse_iterator rbegin() const { return const_reverse_iterator(m_ranges.rbegin()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(m_ranges.rbegin()); }
@ -114,6 +129,8 @@ namespace doc {
frame_t firstFrame() const { return (!m_ranges.empty() ? m_ranges.front().fromFrame: -1); } frame_t firstFrame() const { return (!m_ranges.empty() ? m_ranges.front().fromFrame: -1); }
frame_t lastFrame() const { return (!m_ranges.empty() ? m_ranges.back().toFrame: -1); } frame_t lastFrame() const { return (!m_ranges.empty() ? m_ranges.back().toFrame: -1); }
Reversed reversed() const { return Reversed(*this); }
private: private:
Ranges m_ranges; Ranges m_ranges;
}; };

View File

@ -115,6 +115,12 @@ TEST(SelectedFrames, ReverseIterators)
EXPECT_EQ(6, res[1]); EXPECT_EQ(6, res[1]);
EXPECT_EQ(5, res[2]); EXPECT_EQ(5, res[2]);
EXPECT_EQ(1, res[3]); EXPECT_EQ(1, res[3]);
std::vector<frame_t> res2;
for (frame_t frame : f.reversed())
res2.push_back(frame);
EXPECT_EQ(res, res2);
} }
int main(int argc, char** argv) int main(int argc, char** argv)