]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
0021165: [CEA] Unit test crashes salome session
authoreap <eap@opencascade.com>
Wed, 2 Feb 2011 12:04:05 +0000 (12:04 +0000)
committereap <eap@opencascade.com>
Wed, 2 Feb 2011 12:04:05 +0000 (12:04 +0000)
interface SObject
{
+
+/*! Returns true if the %SObject does not belong to any %Study
+*/
+    boolean IsNull();

idl/SALOMEDS.idl
src/SALOMEDS/SALOMEDS_SObject.cxx
src/SALOMEDS/SALOMEDS_SObject.hxx
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_SObject_i.hxx
src/SALOMEDSClient/SALOMEDSClient_SObject.hxx

index 85efbab4c3d2a36ff6db7ce9c0ec6dde508afe03..3ad806384c3b622485d86264fa483965750b84c1 100644 (file)
@@ -22,7 +22,6 @@
 
 //  File   : SALOMEDS.idl
 //  Author : Yves FRICAUD
-//  $Header$
 //
 /*!  \file SALOMEDS.idl  \brief This file contains a set of interfaces used for creation, management
   and modification of the %Study
@@ -1005,6 +1004,11 @@ Gets the list of open studies
 /*! Name of the %SObject
 */
     attribute string Name; // equivalent to setName() & getName()
+
+/*! Returns true if the %SObject does not belong to any %Study
+*/
+    boolean IsNull();
+
 /*! Gets an object %ID
 
    \return ID of the %SObject.
index 8d513b031ef4dd46301de513eb97192e62b2615e..1c87909faccc8e21c0282bf8107a323045d19cd9 100644 (file)
@@ -103,6 +103,11 @@ SALOMEDS_SObject::~SALOMEDS_SObject()
   }
 }
 
+bool SALOMEDS_SObject::IsNull() const
+{
+  return _isLocal ? ( !_local_impl || _local_impl->IsNull() ) : _corba_impl->IsNull();
+}
+
 std::string SALOMEDS_SObject::GetID()
 {
   std::string aValue;
index e7d4b3aeeab9d6b285ec00774fe4af5f3b9d4680..0c9af736245dd57ed83d02951ab8f9cd3f3c6916 100644 (file)
@@ -53,6 +53,7 @@ public:
   SALOMEDS_SObject(const SALOMEDSImpl_SObject& theSObject);       
   virtual ~SALOMEDS_SObject();
 
+  virtual bool IsNull() const;
   virtual std::string GetID();
   virtual _PTR(SComponent) GetFatherComponent();
   virtual _PTR(SObject)    GetFather();
index 8de5670dd63dea327ebb24f726cb8a436a7ee81d..fea239f5e737bc86b1a7a6bfaab329c520139c9b 100644 (file)
@@ -60,6 +60,7 @@ SALOMEDS::SObject_ptr SALOMEDS_SObject_i::New(const SALOMEDSImpl_SObject& theImp
 //============================================================================
 SALOMEDS_SObject_i::SALOMEDS_SObject_i(const SALOMEDSImpl_SObject& impl, CORBA::ORB_ptr orb)
 {
+  _impl = 0;
   if(!impl.IsNull()) {
      if(impl.IsComponent()) {
          SALOMEDSImpl_SComponent sco = impl;
@@ -84,6 +85,17 @@ SALOMEDS_SObject_i::~SALOMEDS_SObject_i()
    if(_impl) delete _impl;    
 }
 
+//================================================================================
+/*!
+ * \brief Returns true if the %SObject does not belong to any %Study
+ */
+//================================================================================
+
+CORBA::Boolean SALOMEDS_SObject_i::IsNull()
+{
+  SALOMEDS::Locker lock;
+  return !_impl || _impl->IsNull();
+}
 
 //============================================================================
 /*! Function :GetID
index d5637230832aed13776e794cf6ec2c449d6f607c..6f9de862f44ec52c13944c02e913ef33c092806a 100644 (file)
@@ -54,6 +54,7 @@ public:
   
   virtual ~SALOMEDS_SObject_i();
   
+  virtual CORBA::Boolean IsNull();
   virtual char* GetID();
   virtual SALOMEDS::SComponent_ptr GetFatherComponent();
   virtual SALOMEDS::SObject_ptr    GetFather() ;
index 8fa2d5ac7a6b4d346cbbb3e9ba24a1fb58c2903d..9c2ea08034895a79a6e4322a58418d2454f5b7cd 100644 (file)
@@ -42,6 +42,7 @@ class SALOMEDSClient_SObject
 public:
   virtual ~SALOMEDSClient_SObject() {}
 
+  virtual bool IsNull() const = 0;
   virtual std::string GetID()  = 0;
   virtual _PTR(SComponent) GetFatherComponent() = 0;
   virtual _PTR(SObject)    GetFather() = 0;