Skip to content
Snippets Groups Projects
Commit 13a4eca5 authored by juergen's avatar juergen
Browse files

adding reverse iterator for AlignedRegion

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2022 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent a606b90d
No related branches found
No related tags found
No related merge requests found
......@@ -89,6 +89,26 @@ AlignedRegion slice_aln(const AlignmentHandle& aln, slice sl) {
}
struct RevRegionRangeIter {
RevRegionRangeIter(AlignedColumnIterator b,
AlignedColumnIterator e):
b_(b), e_(e)
{ }
AlignedColumn next()
{
if (b_==e_) {
boost::python::objects::stop_iteration_error();
}
AlignedColumn col=*e_;
--e_;
return col;
}
private:
AlignedColumnIterator b_;
AlignedColumnIterator e_;
};
struct RegionRangeIter {
RegionRangeIter(AlignedColumnIterator b,
AlignedColumnIterator e):
......@@ -120,6 +140,11 @@ RegionRangeIter iter_range2(AlignedRegion& aln_region)
return RegionRangeIter(aln_region.begin(), aln_region.end());
}
RevRegionRangeIter iter_range3(AlignedRegion& aln_region)
{
return RevRegionRangeIter(aln_region.begin(), aln_region.end());
}
}
void export_sequence()
......@@ -182,6 +207,9 @@ void export_sequence()
;*/
class_<RegionRangeIter>("RegionRangeIter", no_init)
.def("next", &RegionRangeIter::next)
;
class_<RevRegionRangeIter>("RevRegionRangeIter", no_init)
.def("next", &RevRegionRangeIter::next)
;
class_<AlignmentHandle>("AlignmentHandle", init<>())
.def("GetCount", &AlignmentHandle::GetCount)
......@@ -199,6 +227,7 @@ void export_sequence()
.def("AttachView", attach_view_a)
.def("AttachView", attach_view_b)
.def("Cut", &AlignmentHandle::Cut)
.def("MakeRegion", &AlignmentHandle::MakeRegion)
.def("Replace",&AlignmentHandle::Replace)
.def("__getitem__", &slice_aln)
.def("__getitem__", &AlignmentHandle::operator[])
......@@ -229,6 +258,7 @@ void export_sequence()
.def("__getitem__", &AlignedRegion::operator[])
.def("__len__", &AlignedRegion::GetLength)
.def("__iter__", iter_range2)
//~ .def("__iter__", iter_range3)
.add_property("start", &AlignedRegion::GetStart)
.add_property("end", &AlignedRegion::GetEnd)
;
......
......@@ -49,6 +49,13 @@ public:
return *this;
}
AlignedColumnIterator& operator--()
{
--curr_;
this->UpdateVal();
return *this;
}
AlignedColumnIterator operator++(int)
{
AlignedColumnIterator ans(*this);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment