diff --git a/modules/mol/base/src/chain_handle.cc b/modules/mol/base/src/chain_handle.cc index 156eca176a4d4b8b54a120e56f1f384bb87e78f2..4581eb7806890f1a12da761cfd6ac18ba906857e 100644 --- a/modules/mol/base/src/chain_handle.cc +++ b/modules/mol/base/src/chain_handle.cc @@ -125,17 +125,18 @@ bool ChainHandle::operator!=(const ChainHandle& ref) const ResidueHandleIter ChainHandle::ResiduesBegin() const { this->CheckValidity(); impl::ChainImplPtr c=Impl(); - impl::ChainImplMap::iterator cc=c->GetEntity()->GetChainMap().find(c->GetName()); - return ResidueHandleIter(cc, c->GetResidueList().begin(), c->GetEntity()); + impl::ChainImplList::iterator cc=c->GetEntity()->GetChain(this->GetName()); + return ResidueHandleIter(cc, c->GetResidueList().begin(), + c->GetEntity()); } ResidueHandleIter ChainHandle::ResiduesEnd() const { this->CheckValidity(); impl::ChainImplPtr c=Impl(); - impl::ChainImplMap::iterator cc=c->GetEntity()->GetChainMap().find(c->GetName()); - impl::ChainImplMap::iterator nc=cc; ++nc; - if (nc!=c->GetEntity()->GetChainMap().end()) { - return ResidueHandleIter(nc, nc->second->GetResidueList().begin(), + impl::ChainImplList::iterator cc=c->GetEntity()->GetChain(this->GetName()); + impl::ChainImplList::iterator nc=cc; ++nc; + if (nc!=c->GetEntity()->GetChainList().end()) { + return ResidueHandleIter(nc, (*nc)->GetResidueList().begin(), c->GetEntity()); } else { return ResidueHandleIter(cc, c->GetResidueList().end(), @@ -151,7 +152,7 @@ AtomHandleIter ChainHandle::AtomsBegin() const return AtomHandleIter(); } - impl::ChainImplMap::iterator cc=c->GetEntity()->GetChainMap().find(c->GetName()); + impl::ChainImplList::iterator cc=c->GetEntity()->GetChain(this->GetName()); return AtomHandleIter(cc, c->GetResidueList().begin(), c->GetResidueList().front()->GetAtomList().begin(), c->GetEntity(), true); @@ -164,10 +165,10 @@ AtomHandleIter ChainHandle::AtomsEnd() const { if (c->GetResidueList().empty()) { return AtomHandleIter(); } - impl::ChainImplMap::iterator cc=c->GetEntity()->GetChainMap().find(c->GetName()); - impl::ChainImplMap::iterator nc=cc; ++nc; - impl::ResidueImplList& rc=nc->second->GetResidueList(); - if (nc!=c->GetEntity()->GetChainMap().end()) { + impl::ChainImplList::iterator cc=c->GetEntity()->GetChain(this->GetName()); + impl::ChainImplList::iterator nc=cc; ++nc; + impl::ResidueImplList& rc=(*nc)->GetResidueList(); + if (nc!=c->GetEntity()->GetChainList().end()) { return AtomHandleIter(nc, rc.begin(), rc.front()->GetAtomList().begin(), c->GetEntity(), false); } else { diff --git a/modules/mol/base/src/entity_handle.cc b/modules/mol/base/src/entity_handle.cc index b0ac01f09e135c5110bf970af372b13ebbf14590..8686df88c286c726648bad9abec259514414a9c2 100644 --- a/modules/mol/base/src/entity_handle.cc +++ b/modules/mol/base/src/entity_handle.cc @@ -257,48 +257,48 @@ AtomHandle EntityHandle::FindAtom(const String& chain_name, ResidueHandleIter EntityHandle::ResiduesBegin() const { this->CheckValidity(); - if (Impl()->GetChainMap().empty()) { + if (Impl()->GetChainList().empty()) { return ResidueHandleIter(); } impl::EntityImplPtr i=Impl(); - impl::ChainImplPtr chain=i->GetChainMap().begin()->second; - return ResidueHandleIter(i->GetChainMap().begin(), + impl::ChainImplPtr chain=i->GetChainList().front(); + return ResidueHandleIter(i->GetChainList().begin(), chain->GetResidueList().begin(), i); } ResidueHandleIter EntityHandle::ResiduesEnd() const { this->CheckValidity(); - if (Impl()->GetChainMap().empty()) { + if (Impl()->GetChainList().empty()) { return ResidueHandleIter(); } impl::EntityImplPtr i=Impl(); - impl::ChainImplPtr chain=i->GetChainMap().rbegin()->second; - return ResidueHandleIter(i->GetChainMap().end(), + impl::ChainImplPtr chain=i->GetChainList().back(); + return ResidueHandleIter(i->GetChainList().end(), chain->GetResidueList().end(), i); } ChainHandleIter EntityHandle::ChainsBegin() const { this->CheckValidity(); - return ChainHandleIter(Impl()->GetChainMap().begin()); + return ChainHandleIter(Impl()->GetChainList().begin()); } ChainHandleIter EntityHandle::ChainsEnd() const { - return ChainHandleIter(Impl()->GetChainMap().end()); + return ChainHandleIter(Impl()->GetChainList().end()); } AtomHandleIter EntityHandle::AtomsBegin() const { this->CheckValidity(); impl::EntityImplPtr ent=Impl(); - if (ent->GetChainMap().empty()) { + if (ent->GetChainList().empty()) { return AtomHandleIter(); } - impl::ResidueImplList& r=ent->GetChainMap().begin()->second->GetResidueList(); + impl::ResidueImplList& r=ent->GetChainList().front()->GetResidueList(); if (r.empty()) { return AtomHandleIter(); } - return AtomHandleIter(ent->GetChainMap().begin(), r.begin(), + return AtomHandleIter(ent->GetChainList().begin(), r.begin(), r.front()->GetAtomList().begin(), ent, true); } @@ -306,14 +306,14 @@ AtomHandleIter EntityHandle::AtomsEnd() const { this->CheckValidity(); impl::EntityImplPtr ent=Impl(); - if (ent->GetChainMap().empty()) { + if (ent->GetChainList().empty()) { return AtomHandleIter(); } - impl::ResidueImplList& r=ent->GetChainMap().rbegin()->second->GetResidueList(); + impl::ResidueImplList& r=ent->GetChainList().back()->GetResidueList(); if (r.empty()) { return AtomHandleIter(); } - return AtomHandleIter(ent->GetChainMap().end(), r.end(), + return AtomHandleIter(ent->GetChainList().end(), r.end(), r.back()->GetAtomList().end(), ent, false); } diff --git a/modules/mol/base/src/entity_view.cc b/modules/mol/base/src/entity_view.cc index 34f7d506421cef9b32aeaec3c46a0470d89c3f2c..a3819e1020d4c8dd975f9b2e799d4bf248092a34 100644 --- a/modules/mol/base/src/entity_view.cc +++ b/modules/mol/base/src/entity_view.cc @@ -76,9 +76,9 @@ EntityView::EntityView(const EntityHandle& entity, ViewAddFlags flags) : EntityBase(entity.Impl()), data_(new EntityViewData()) { if (flags & ViewAddFlag::INCLUDE_CHAINS) { - impl::ChainImplMap::const_iterator i=entity.Impl()->GetChainMap().begin(); - for (; i!=entity.Impl()->GetChainMap().end(); ++i) { - this->AddChain(ChainHandle(i->second), flags); + impl::ChainImplList::const_iterator i=entity.Impl()->GetChainList().begin(); + for (; i!=entity.Impl()->GetChainList().end(); ++i) { + this->AddChain(ChainHandle(*i), flags); } } } diff --git a/modules/mol/base/src/impl/chain_impl_fw.hh b/modules/mol/base/src/impl/chain_impl_fw.hh index 00f22561b72845bea621bd31f90c1587e886631d..2ba9c725dbf40038cf67f76b6749bdd5f0293fa2 100644 --- a/modules/mol/base/src/impl/chain_impl_fw.hh +++ b/modules/mol/base/src/impl/chain_impl_fw.hh @@ -28,7 +28,6 @@ namespace ost { namespace mol { namespace impl { class ChainImpl; typedef boost::shared_ptr<ChainImpl> ChainImplPtr; typedef boost::weak_ptr<ChainImpl> ChainImplW; -typedef std::list<ChainImplPtr> ChainImplList; }}} // ns diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc index 29fdad970ebddf5f8a8a49e54a436182bbc1c068..8b13c433fdfc368904fc663ccf79f410e879d933 100644 --- a/modules/mol/base/src/impl/entity_impl.cc +++ b/modules/mol/base/src/impl/entity_impl.cc @@ -64,7 +64,7 @@ namespace ost { namespace mol { namespace impl { EntityImpl::EntityImpl(): atom_map_(), - chain_map_(), + chain_list_(), connector_map_(), torsion_map_(), transformation_matrix_(), @@ -104,9 +104,9 @@ mol::BondHandleList EntityImpl::GetBondList() const int EntityImpl::GetResidueCount() const { int count=0; - for (ChainImplMap::const_iterator i=chain_map_.begin(), - e=chain_map_.end(); i!=e; ++i) { - count+=i->second->GetResidueCount(); + for (ChainImplList::const_iterator i=chain_list_.begin(), + e=chain_list_.end(); i!=e; ++i) { + count+=(*i)->GetResidueCount(); } return count; } @@ -133,9 +133,9 @@ ChainImplPtr EntityImpl::InsertChain(const ChainImplPtr& chain) void EntityImpl::ReplicateHierarchy(EntityImplPtr dest) { - for (ChainImplMap::const_iterator i=chain_map_.begin(), - e1=chain_map_.end(); i!=e1; ++i) { - ChainImplPtr src_chain=i->second; + for (ChainImplList::const_iterator i=chain_list_.begin(), + e1=chain_list_.end(); i!=e1; ++i) { + ChainImplPtr src_chain=*i; ChainImplPtr dst_chain=dest->InsertChain(src_chain); // copy generic properties dst_chain->Assign(*src_chain.get()); @@ -176,10 +176,10 @@ AtomImplPtr lookup_atom(const AtomImplPtr& atom, EntityImplPtr dest, void EntityImpl::DoCopyBondsAndTorsions(EntityImplPtr dest) { - for (ChainImplMap::const_iterator i=chain_map_.begin(), - i2=dest->chain_map_.begin(), e1=chain_map_.end(); i!=e1; ++i, ++i2) { - ChainImplPtr src_chain=i->second; - ChainImplPtr dst_chain=i2->second; + for (ChainImplList::const_iterator i=chain_list_.begin(), + i2=dest->chain_list_.begin(), e1=chain_list_.end(); i!=e1; ++i, ++i2) { + ChainImplPtr src_chain=*i; + ChainImplPtr dst_chain=*i2; for (ResidueImplList::iterator j=src_chain->GetResidueList().begin(), j2=dst_chain->GetResidueList().begin(), e2=src_chain->GetResidueList().end(); j!=e2; ++j, ++j2) { @@ -236,7 +236,7 @@ void EntityImpl::DoCopy(EntityImplPtr dest) int EntityImpl::GetChainCount() const { - return static_cast<int>(chain_map_.size()); + return static_cast<int>(chain_list_.size()); } const geom::Mat4& EntityImpl::GetTransfMatrix() const @@ -384,17 +384,19 @@ ResidueImplPtr EntityImpl::CreateResidue(const ChainImplPtr& cp, ChainImplPtr EntityImpl::InsertChain(const String& cname) { - ChainImplMap::iterator i=chain_map_.find(cname); - if (i!=chain_map_.end()) { - throw IntegrityError("Can't insert chain. A chain with name '"+cname+ - "' already exists"); + for (ChainImplList::iterator + i=chain_list_.begin(), e=chain_list_.end(); i!=e; ++i) { + if ((*i)->GetName()==cname) { + throw IntegrityError("Can't insert chain. A chain with name '"+cname+ + "' already exists"); + } } #if MAKE_SHARED_AVAILABLE ChainImplPtr cp=boost::make_shared<ChainImpl>(shared_from_this(), cname); #else ChainImplPtr cp(new ChainImpl(shared_from_this(), cname)); #endif - chain_map_.insert(ChainImplMap::value_type(cp->GetName(),cp)); + chain_list_.push_back(cp); return cp; } @@ -767,8 +769,9 @@ void EntityImpl::Apply(EntityVisitor& v) { LOG_TRACE("visitor @" << &v << " visiting entity impl @" << this << std::endl); v.OnEntry(); - for(ChainImplMap::iterator it = chain_map_.begin();it!=chain_map_.end();++it) { - it->second->Apply(v); + for(ChainImplList::iterator + it = chain_list_.begin();it!=chain_list_.end();++it) { + (*it)->Apply(v); } for(ConnectorImplMap::iterator it = connector_map_.begin();it!=connector_map_.end();++it) { @@ -821,7 +824,7 @@ void EntityImpl::NotifyObserver() void EntityImpl::Swap(EntityImpl& impl) { atom_map_.swap(impl.atom_map_); - chain_map_.swap(impl.chain_map_); + chain_list_.swap(impl.chain_list_); connector_map_.swap(impl.connector_map_); torsion_map_.swap(impl.torsion_map_); std::swap(transformation_matrix_,impl.transformation_matrix_); @@ -830,15 +833,6 @@ void EntityImpl::Swap(EntityImpl& impl) observer_map_.swap(impl.observer_map_); } -ChainImplList EntityImpl::GetChainList() const { - ChainImplList cl; - ChainImplMap::const_iterator i; - for (i=chain_map_.begin(); i!=chain_map_.end(); ++i) { - cl.push_back(i->second); - } - return cl; -} - TorsionImplP EntityImpl::FindTorsion(const AtomImplPtr& a1, const AtomImplPtr& a2, @@ -895,19 +889,15 @@ EntityView EntityImpl::do_selection(const EntityHandle& eh, EntityHandle myself(const_cast<impl::EntityImpl*>(this)->shared_from_this()); QueryState qs(query.CreateQueryState(myself)); LOGN_DUMP("entering chain loop"); - for (ChainImplMap::const_iterator ch_it = chain_map_.begin(); - ch_it!=chain_map_.end();++ch_it) { - if(!ch_it->second) { - LOGN_DUMP("found invalid chain shared_ptr"); - continue; - } - LOGN_DUMP("checking chain " << ch_it->second->GetName()); + for (ChainImplList::const_iterator + ch_it=chain_list_.begin(); ch_it!=chain_list_.end();++ch_it) { + LOGN_DUMP("checking chain " << ch_it->GetName()); c_added = false; - tribool c = always_true ? tribool(true) : qs.EvalChain(ch_it->second); + tribool c = always_true ? tribool(true) : qs.EvalChain(*ch_it); if (c == true) { LOGN_DUMP("chain is selected"); // Include all residues - const ChainImplPtr& ci=ch_it->second; + const ChainImplPtr& ci=*ch_it; ++chain_count; ChainView chain=view.AddChain(ci); ResidueImplList::const_iterator re_it = ci->GetResidueList().begin(); @@ -930,7 +920,7 @@ EntityView EntityImpl::do_selection(const EntityHandle& eh, } else if (indeterminate(c)) { // Test residues r_added = false; - const ChainImplPtr& ci = ch_it->second; + const ChainImplPtr& ci = *ch_it; ChainView chain; ResidueImplList::const_iterator re_it = ci->GetResidueList().begin(); @@ -1042,10 +1032,10 @@ EntityView EntityImpl::CreateFullView(const EntityHandle& h) const } ChainImplPtr EntityImpl::FindChain(const String& name) const { - ChainImplMap::const_iterator i; - for(i=chain_map_.begin(); i!=chain_map_.end();++i) { - if (i->second->GetName()==name) - return i->second; + ChainImplList::const_iterator i; + for(i=chain_list_.begin(); i!=chain_list_.end();++i) { + if ((*i)->GetName()==name) + return *i; } return ChainImplPtr(); } @@ -1078,7 +1068,7 @@ TorsionImplMap& EntityImpl::GetTorsionMap() { void EntityImpl::DeleteChain(const ChainImplPtr& chain) { if (chain && chain->GetEntity().get()==this) { chain->DeleteAllResidues(); - chain_map_.erase(chain->GetName()); + chain_list_.erase(this->GetChain(chain->GetName())); } } @@ -1191,24 +1181,26 @@ void EntityImpl::DecICSEditorCount() } } +impl::ChainImplList::iterator EntityImpl::GetChain(const String& name) +{ + impl::ChainImplList& cc=this->GetChainList(); + for (impl::ChainImplList::iterator i=cc.begin(), e=cc.end(); i!=e; ++i) { + if ((*i)->GetName()==name) { + return i; + } + } + return cc.end(); +} void EntityImpl::RenameChain(ChainImplPtr chain, const String& new_name) { - ChainImplMap::iterator i, j; - j=chain_map_.find(new_name); - - if (j!=chain_map_.end() && j->second!=chain) { + ChainImplList::iterator i; + ChainImplPtr ch=this->FindChain(new_name); + if (ch) { throw IntegrityError("unable to rename chain '"+chain->GetName()+ "' to '"+new_name+"', since there is already a chain " "with that name"); } - for(i=chain_map_.begin(); i!=chain_map_.end();++i) { - if (i->second==chain) { - chain_map_.erase(i); - chain_map_.insert(std::make_pair(new_name, chain)); - chain->SetName(new_name); - break; - } - } + chain->SetName(new_name); } void EntityImpl::UpdateTransformedPos(){ diff --git a/modules/mol/base/src/impl/entity_impl.hh b/modules/mol/base/src/impl/entity_impl.hh index 63504c74987765914620394ab72515b64031090c..81f533bf0a9f3c696276b7e5e487e14a7125bfaa 100644 --- a/modules/mol/base/src/impl/entity_impl.hh +++ b/modules/mol/base/src/impl/entity_impl.hh @@ -56,7 +56,7 @@ typedef std::map<AtomImpl*,AtomImplPtr> AtomImplMap; /// \internal typedef std::map<ResidueImpl*,ResidueImplPtr> ResidueImplMap; /// \internal -typedef std::map<String,ChainImplPtr> ChainImplMap; +typedef std::vector<ChainImplPtr> ChainImplList; /// \internal typedef std::map<ConnectorImpl*,ConnectorImplP> ConnectorImplMap; /// \internal @@ -201,10 +201,9 @@ public: bool IsTransfIdentity() const; - ChainImplList GetChainList() const; + const ChainImplList& GetChainList() const { return chain_list_; } - ChainImplMap& GetChainMap() {return chain_map_; } - const ChainImplMap& GetChainMap() const {return chain_map_; } + ChainImplList& GetChainList() { return chain_list_; } void DeleteFromConnMap(const ConnectorImplP& conn); @@ -241,6 +240,8 @@ public: const String& GetName() const; + impl::ChainImplList::iterator GetChain(const String& name); + void SetName(const String& ent_name); private: @@ -251,7 +252,7 @@ private: void DoCopyBondsAndTorsions(EntityImplPtr dest); AtomImplMap atom_map_; - ChainImplMap chain_map_; + ChainImplList chain_list_; ConnectorImplMap connector_map_; TorsionImplMap torsion_map_; diff --git a/modules/mol/base/src/iterator.cc b/modules/mol/base/src/iterator.cc index 26fc516444fcfc4000b66f75da3e4d2021dd5ff8..74ff90c6514b1fd86517d68aba1ceddfd604694c 100644 --- a/modules/mol/base/src/iterator.cc +++ b/modules/mol/base/src/iterator.cc @@ -28,21 +28,21 @@ namespace ost { namespace mol { ResidueHandleIter& ResidueHandleIter::operator++() { ++cur_res_; - if (cur_res_==cur_chain_->second->GetResidueList().end()) { + if (cur_res_==(*cur_chain_)->GetResidueList().end()) { // we have to skip over empty chains otherwise we end up pointing to an // invalid residue. do { ++cur_chain_; - if (ent_->GetChainMap().end()==cur_chain_) { + if (ent_->GetChainList().end()==cur_chain_) { break; } - cur_res_=cur_chain_->second->GetResidueList().begin(); - } while (cur_chain_->second->GetResidueList().empty()); + cur_res_=(*cur_chain_)->GetResidueList().begin(); + } while ((*cur_chain_)->GetResidueList().empty()); } return *this; } -ResidueHandleIter::ResidueHandleIter(impl::ChainImplMap::iterator chain_it, +ResidueHandleIter::ResidueHandleIter(impl::ChainImplList::iterator chain_it, impl::ResidueImplList::iterator res_it, impl::EntityImplPtr ent) : cur_chain_(chain_it), cur_res_(res_it), @@ -99,7 +99,7 @@ AtomHandleIter::AtomHandleIter() #endif {} -AtomHandleIter::AtomHandleIter(impl::ChainImplMap::iterator chain_it, +AtomHandleIter::AtomHandleIter(impl::ChainImplList::iterator chain_it, impl::ResidueImplList::iterator res_it, impl::AtomImplList::iterator atom_it, impl::EntityImplPtr ent, bool skip_empty) @@ -122,19 +122,19 @@ void AtomHandleIter::SkipEmpty() // pointing to an invalid atom. do { ++cur_res_; - if (cur_chain_->second->GetResidueList().end()==cur_res_) { + if ((*cur_chain_)->GetResidueList().end()==cur_res_) { do { ++cur_chain_; - if (ent_->GetChainMap().end()==cur_chain_) { + if (ent_->GetChainList().end()==cur_chain_) { return; } - cur_res_=cur_chain_->second->GetResidueList().begin(); - if (!cur_chain_->second->GetResidueList().empty()) + cur_res_=(*cur_chain_)->GetResidueList().begin(); + if (!(*cur_chain_)->GetResidueList().empty()) cur_atom_=(*cur_res_)->GetAtomList().begin(); else cur_atom_=impl::AtomImplList::iterator(); - } while (cur_chain_->second->GetResidueList().empty()); + } while ((*cur_chain_)->GetResidueList().empty()); } else { cur_atom_=(*cur_res_)->GetAtomList().begin(); } diff --git a/modules/mol/base/src/iterator.hh b/modules/mol/base/src/iterator.hh index 4d75aec8b05e7245a2d382ee96ae51e5f5406c7e..7bbbe48396591eea4ba1af3f8fc991976b754dec 100644 --- a/modules/mol/base/src/iterator.hh +++ b/modules/mol/base/src/iterator.hh @@ -80,17 +80,17 @@ private: namespace impl { // forward declearation of chain impl map. - typedef std::map<String, ChainImplPtr> ChainImplMap; + typedef std::vector<ChainImplPtr> ChainImplList; } class DLLEXPORT_OST_MOL ChainHandleIter : public std::iterator<std::forward_iterator_tag, ChainHandle> { public: // internally used constructors - ChainHandleIter(impl::ChainImplMap::iterator chain_it) + ChainHandleIter(impl::ChainImplList::iterator chain_it) : cur_(chain_it) { } public: ChainHandle operator*() { - return ChainHandle(cur_->second); + return ChainHandle(*cur_); } ChainHandleIter& operator++() { @@ -106,7 +106,7 @@ public: return !this->operator==(rhs); } private: - impl::ChainImplMap::iterator cur_; + impl::ChainImplList::iterator cur_; }; class DLLEXPORT_OST_MOL ResidueHandleIter : public std::iterator<std::forward_iterator_tag, @@ -114,7 +114,7 @@ class DLLEXPORT_OST_MOL ResidueHandleIter : public std::iterator<std::forward_it public: ResidueHandleIter() { } - ResidueHandleIter(impl::ChainImplMap::iterator chain_it, + ResidueHandleIter(impl::ChainImplList::iterator chain_it, impl::ResidueImplList::iterator res_it, impl::EntityImplPtr ent); bool operator==(const ResidueHandleIter& rhs) const { @@ -133,7 +133,7 @@ public: ResidueHandle operator*(); private: - impl::ChainImplMap::iterator cur_chain_; + impl::ChainImplList::iterator cur_chain_; impl::ResidueImplList::iterator cur_res_; impl::EntityImplPtr ent_; }; @@ -174,7 +174,7 @@ class DLLEXPORT_OST_MOL AtomHandleIter : public std::iterator<std::forward_itera public: AtomHandleIter(); - AtomHandleIter(impl::ChainImplMap::iterator chain_it, + AtomHandleIter(impl::ChainImplList::iterator chain_it, impl::ResidueImplList::iterator res_it, impl::AtomImplList::iterator atom_it, impl::EntityImplPtr ent, bool skip_empty); @@ -195,7 +195,7 @@ public: AtomHandle operator*(); private: void SkipEmpty(); - impl::ChainImplMap::iterator cur_chain_; + impl::ChainImplList::iterator cur_chain_; impl::ResidueImplList::iterator cur_res_; impl::AtomImplList::iterator cur_atom_; impl::EntityImplPtr ent_; diff --git a/modules/mol/base/src/residue_handle.cc b/modules/mol/base/src/residue_handle.cc index b66c83250276d6301b4c9699c1f72483e1a70c8f..bfc57c1949c209f753e0592730669f82f179c020 100644 --- a/modules/mol/base/src/residue_handle.cc +++ b/modules/mol/base/src/residue_handle.cc @@ -181,7 +181,7 @@ AtomHandleIter ResidueHandle::AtomsBegin() const impl::ResidueImplPtr r=Impl(); int index=this->GetIndex(); impl::ChainImplPtr c=r->GetChain(); - impl::ChainImplMap::iterator cc=r->GetEntity()->GetChainMap().find(c->GetName()); + impl::ChainImplList::iterator cc=r->GetEntity()->GetChain(c->GetName()); return AtomHandleIter(cc, c->GetResidueList().begin()+index, r->GetAtomList().begin(), r->GetEntity(), true); } @@ -192,7 +192,7 @@ AtomHandleIter ResidueHandle::AtomsEnd() const impl::ResidueImplPtr r=Impl(); int index=this->GetIndex(); impl::ChainImplPtr c=r->GetChain(); - impl::ChainImplMap::iterator cc=r->GetEntity()->GetChainMap().find(c->GetName()); + impl::ChainImplList::iterator cc=r->GetEntity()->GetChain(c->GetName()); if (c->GetResidueList().begin()+index+1==c->GetResidueList().end()) { return AtomHandleIter(cc, c->GetResidueList().begin()+index, r->GetAtomList().end(), r->GetEntity(), false);