diff --git a/modules/mol/base/src/atom_base.cc b/modules/mol/base/src/atom_base.cc index c0e1f94b22fa4f81fc5c05bd118fc1450ff78b3f..95141733ff27a4ab798e67d9aa814b1d7201aa58 100644 --- a/modules/mol/base/src/atom_base.cc +++ b/modules/mol/base/src/atom_base.cc @@ -126,10 +126,13 @@ long AtomBase::GetHashCode() const return reinterpret_cast<long>(Impl().get()); } -std::ostream& operator<<(std::ostream& os, - const AtomBase& atom) +std::ostream& operator<<(std::ostream& os, const AtomBase& atom) { - os << atom.GetQualifiedName(); + if (atom.IsValid()) { + os << atom.GetQualifiedName(); + } else { + os << "invalid atom"; + } return os; } diff --git a/modules/mol/base/src/chain_base.cc b/modules/mol/base/src/chain_base.cc index 53385715c8b98b0d5161eaf4afd5376570eff509..29a40f3a2b1801309432c409a546b79c40b9e0df 100644 --- a/modules/mol/base/src/chain_base.cc +++ b/modules/mol/base/src/chain_base.cc @@ -49,7 +49,7 @@ ChainBase::operator bool() const { } bool ChainBase::IsValid() const { - return impl_; + return impl_.get()!=0; } void ChainBase::CheckValidity() const { @@ -57,9 +57,13 @@ void ChainBase::CheckValidity() const { throw InvalidHandle(); } -DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, - const ChainBase& chain) { - os << chain.GetName(); +std::ostream& operator<<(std::ostream& os, const ChainBase& chain) +{ + if (chain.IsValid()) { + os << chain.GetName(); + } else { + os << "invalid chain"; + } return os; } diff --git a/modules/mol/base/src/entity_base.cc b/modules/mol/base/src/entity_base.cc index 546db3743c7ff3c8636687784639e5c3d07fd6af..df3fc636ebcec737de5f4f0d28ff73a323da3806 100644 --- a/modules/mol/base/src/entity_base.cc +++ b/modules/mol/base/src/entity_base.cc @@ -47,11 +47,11 @@ const GenericPropertyContainerImpl* EntityBase::GpImpl() const } bool EntityBase::IsValid() const { - return Impl(); + return impl_.get()!=0; } EntityBase::operator bool() const { - return impl_; + return impl_.get()!=0; } void EntityBase::CheckValidity() const { @@ -69,9 +69,14 @@ void EntityBase::SetName(const String& ent_name) { impl_->SetName(ent_name); } -DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, - const EntityBase& ent) { +DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, + const EntityBase& ent) { + if (ent.IsValid()) { os << "entity"; + } else { + os << "invalid"; + } + return os; } }} //ns diff --git a/modules/mol/base/src/residue_base.cc b/modules/mol/base/src/residue_base.cc index e53801668e53d7f4b6745669369589a5f037b1a6..60e684806ef8b5cb34ac5a1b89a39d111977eefd 100644 --- a/modules/mol/base/src/residue_base.cc +++ b/modules/mol/base/src/residue_base.cc @@ -70,7 +70,7 @@ ResidueBase::operator bool() const { } bool ResidueBase::IsValid() const { - return impl_; + return impl_.get()!=0; } bool ResidueBase::IsPeptideLinking() const @@ -141,9 +141,12 @@ void ResidueBase::CheckValidity() const throw InvalidHandle(); } -DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, - const ResidueBase& residue) { - os << residue.GetQualifiedName(); +std::ostream& operator<<(std::ostream& os, const ResidueBase& residue) { + if (residue.IsValid()) { + os << residue.GetQualifiedName(); + } else { + os << "invalid residue"; + } return os; } diff --git a/modules/seq/base/src/sequence_handle.cc b/modules/seq/base/src/sequence_handle.cc index 903b4edd4cca8324496879c8998f17d0e4c0a035..d24fff1ae4cf4543f7b5bbe81e1e1505e833f4c9 100644 --- a/modules/seq/base/src/sequence_handle.cc +++ b/modules/seq/base/src/sequence_handle.cc @@ -219,7 +219,12 @@ SequenceHandle SequenceFromInfo(info::InfoGroup& group) std::ostream& operator<<(std::ostream& os, const ConstSequenceHandle& sequence) { - os << sequence.GetName() << ": " << sequence.GetString(); + if (sequence.IsValid()) { + os << sequence.GetName() << ": " << sequence.GetString(); + } else { + os << "invalid"; + } + return os; }