Skip to content
Snippets Groups Projects
Commit 7a3dcf3d authored by marco's avatar marco
Browse files

fix iterator for sequence handle

This bug actually lead to the discovery of an interesting
phenotype of the "for" statement. If a class has the
__getitem__() defined and doesn't have a __iter__(),
Python uses __getitem__() to iterate over the items,
stopping when a IndexError is thrown. Previously we were
throwing a normal RuntimeError which Python didn't recognize
as the end of the list.

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2467 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 5fdd5472
Branches
Tags
No related merge requests found
......@@ -108,7 +108,7 @@ void SequenceImpl::ShiftsFromSequence()
int SequenceImpl::GetResidueIndex(int pos) const
{
if (pos<0 || pos>=static_cast<int>(seq_string_.length()))
throw Error("Position is not covered in sequence");
throw std::out_of_range("Position is not covered in sequence");
if (seq_string_[pos]=='-')
throw Error("Requested position contains a gap");
std::list<Shift>::const_iterator i;
......@@ -136,7 +136,7 @@ int SequenceImpl::GetPos(int index) const
int shifted_index=index-sequence_offset_;
int pos=this->GetPosNoBounds(shifted_index);
if (pos<0 || pos>=static_cast<int>(seq_string_.length()))
throw Error("number not covered in sequence");
throw std::out_of_range("number not covered in sequence");
return pos;
}
......@@ -171,7 +171,7 @@ int SequenceImpl::GetLength() const {
char SequenceImpl::GetOneLetterCode(int position) const
{
if (position<0 || position>=static_cast<int>(seq_string_.length()))
throw Error("Position is not covered in sequence");
throw std::out_of_range("Position is not covered in sequence");
return seq_string_[position];
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment