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