From 3a67511d8a444a44a0689323793d29ddd9593e23 Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavalias-github@xavier.robin.name>
Date: Thu, 27 Jul 2023 11:39:14 +0200
Subject: [PATCH] fix: SCHWED-4345 fix validity of views too

---
 modules/mol/base/src/atom_view.cc    | 5 +++++
 modules/mol/base/src/atom_view.hh    | 2 +-
 modules/mol/base/src/chain_view.cc   | 6 ++++++
 modules/mol/base/src/chain_view.hh   | 2 +-
 modules/mol/base/src/residue_view.cc | 5 +++++
 modules/mol/base/src/residue_view.hh | 2 +-
 6 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/modules/mol/base/src/atom_view.cc b/modules/mol/base/src/atom_view.cc
index 5fcb7010a..084741a59 100644
--- a/modules/mol/base/src/atom_view.cc
+++ b/modules/mol/base/src/atom_view.cc
@@ -167,6 +167,11 @@ unsigned long AtomView::GetHashCode() const
   return reinterpret_cast<unsigned long>(data_.get());
 } 
 
+bool AtomView::IsValid() const
+{
+  return Impl().get()!=0 && Impl()->GetEntity();
+}
+
 }} // ns
 
 
diff --git a/modules/mol/base/src/atom_view.hh b/modules/mol/base/src/atom_view.hh
index 217245393..4dc505c47 100644
--- a/modules/mol/base/src/atom_view.hh
+++ b/modules/mol/base/src/atom_view.hh
@@ -47,7 +47,7 @@ public:
   operator bool() const { return this->IsValid(); }
   /// \brief check validity of handle
   /// \sa #operator bool()
-  bool IsValid() const { return data_.get()!=0; }
+  bool IsValid() const;
   //@}
   // constructors  
   AtomView();
diff --git a/modules/mol/base/src/chain_view.cc b/modules/mol/base/src/chain_view.cc
index c8498b1d3..f6fad0265 100644
--- a/modules/mol/base/src/chain_view.cc
+++ b/modules/mol/base/src/chain_view.cc
@@ -483,5 +483,11 @@ unsigned long ChainView::GetHashCode() const
   return reinterpret_cast<unsigned long>(data_.get());
 }
 
+bool ChainView::IsValid() const
+{
+  return Impl().get()!=0 && Impl()->GetEntity();
+}
+
+
 }} // ns
 
diff --git a/modules/mol/base/src/chain_view.hh b/modules/mol/base/src/chain_view.hh
index 6f2c1a337..3adc60e94 100644
--- a/modules/mol/base/src/chain_view.hh
+++ b/modules/mol/base/src/chain_view.hh
@@ -56,7 +56,7 @@ public:
   operator bool() const { return this->IsValid(); }
   /// \brief check validity of handle
   /// \sa #operator bool()
-  bool IsValid() const { return data_.get()!=0; }
+  bool IsValid() const;
   //@}
   
   /// \brief Get parent entity view
diff --git a/modules/mol/base/src/residue_view.cc b/modules/mol/base/src/residue_view.cc
index 5948a38a4..2674714a1 100644
--- a/modules/mol/base/src/residue_view.cc
+++ b/modules/mol/base/src/residue_view.cc
@@ -291,4 +291,9 @@ unsigned long ResidueView::GetHashCode() const
   return reinterpret_cast<unsigned long>(data_.get());
 }
 
+bool ResidueView::IsValid() const
+{
+  return Impl().get()!=0 && Impl()->GetEntity();
+}
+
 }} //ns
diff --git a/modules/mol/base/src/residue_view.hh b/modules/mol/base/src/residue_view.hh
index 8268143fa..1517622ed 100644
--- a/modules/mol/base/src/residue_view.hh
+++ b/modules/mol/base/src/residue_view.hh
@@ -65,7 +65,7 @@ public:
   operator bool() const { return this->IsValid(); }
   /// \brief check validity of handle
   /// \sa #operator bool()
-  bool IsValid() const { return data_.get()!=0; }
+  bool IsValid() const;
   //@}
   
   /// \name internal
-- 
GitLab