From 4bcc1de615aa111af8ad5a51ea11a5e5c0c25010 Mon Sep 17 00:00:00 2001 From: juergen <juergen@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Sun, 9 May 2010 06:41:40 +0000 Subject: [PATCH] seq:preparing export for reversed iterator+bugfix;fixing bug in alignment where last col would not be accessible git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2208 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/seq/base/pymod/export_sequence.cc | 7 ++++--- modules/seq/base/src/alignment_handle.cc | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc index 3f8636fe5..87f9d3a6f 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 3ad612da9..cf19f5a13 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); -- GitLab