diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc index 3f8636fe5ff64b7378ccbfa5d2eda6b2cde27170..87f9d3a6f9dde794a00586cb7aecba81541f8cf1 100644 --- a/modules/seq/base/pymod/export_sequence.cc +++ b/modules/seq/base/pymod/export_sequence.cc @@ -102,8 +102,9 @@ struct RevRegionRangeIter { if (b_==e_) { boost::python::objects::stop_iteration_error(); } - AlignedColumn col=*e_; --e_; + AlignedColumn col=*e_; + return col; } private: @@ -142,7 +143,7 @@ RegionRangeIter iter_range2(AlignedRegion& aln_region) return RegionRangeIter(aln_region.begin(), aln_region.end()); } -RevRegionRangeIter iter_range3(AlignedRegion& aln_region) +RevRegionRangeIter iter_range_rev(AlignedRegion& aln_region) { return RevRegionRangeIter(aln_region.begin(), aln_region.end()); } @@ -274,7 +275,7 @@ void export_sequence() .def("__getitem__", &AlignedRegion::operator[]) .def("__len__", &AlignedRegion::GetLength) .def("__iter__", iter_range2) - //~ .def("__iter__", iter_range3) + //~ .def("__reversed__", iter_range_rev) .add_property("start", &AlignedRegion::GetStart) .add_property("end", &AlignedRegion::GetEnd) ; diff --git a/modules/seq/base/src/alignment_handle.cc b/modules/seq/base/src/alignment_handle.cc index 3ad612da9c7a61b17d3294d7afcfc5733ff7ad08..cf19f5a13fb6528469707f029d13150424af76f4 100644 --- a/modules/seq/base/src/alignment_handle.cc +++ b/modules/seq/base/src/alignment_handle.cc @@ -203,7 +203,7 @@ void AlignmentHandle::ShiftRegion(int start, int end, int amount, AlignedRegion AlignmentHandle::MakeRegion(int start, int n, int master) const { this->CheckValidity(); - if(start<0 || n < 0 || start >= n || start + n >= this->GetLength()){ + if(start<0 || n < 0 || start >= n || start + n > this->GetLength()){ throw std::out_of_range("Region not valid"); } return AlignedRegion(*this, start, start+n, master);