]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To provide more general implementation for SALOME_GenericObj.
authorapo <apo@opencascade.com>
Fri, 22 Dec 2006 15:43:05 +0000 (15:43 +0000)
committerapo <apo@opencascade.com>
Fri, 22 Dec 2006 15:43:05 +0000 (15:43 +0000)
25 files changed:
src/VISUGUI/VisuGUI_CutLinesDlg.h
src/VISUGUI/VisuGUI_CutPlanesDlg.cxx
src/VISUGUI/VisuGUI_CutPlanesDlg.h
src/VISUGUI/VisuGUI_DeformedShapeDlg.cxx
src/VISUGUI/VisuGUI_DeformedShapeDlg.h
src/VISUGUI/VisuGUI_GaussPointsDlg.cxx
src/VISUGUI/VisuGUI_GaussPointsDlg.h
src/VISUGUI/VisuGUI_IsoSurfacesDlg.cxx
src/VISUGUI/VisuGUI_IsoSurfacesDlg.h
src/VISUGUI/VisuGUI_Plot3DDlg.cxx
src/VISUGUI/VisuGUI_Plot3DDlg.h
src/VISUGUI/VisuGUI_ScalarBarDlg.cxx
src/VISUGUI/VisuGUI_ScalarBarDlg.h
src/VISUGUI/VisuGUI_ScalarMapOnDeformedShapeDlg.cxx
src/VISUGUI/VisuGUI_ScalarMapOnDeformedShapeDlg.h
src/VISUGUI/VisuGUI_StreamLinesDlg.cxx
src/VISUGUI/VisuGUI_StreamLinesDlg.h
src/VISUGUI/VisuGUI_VectorsDlg.cxx
src/VISUGUI/VisuGUI_VectorsDlg.h
src/VISU_I/SALOME_GenericObjPointer.cc
src/VISU_I/SALOME_GenericObjPointer.hh
src/VISU_I/VISU_ColoredPrs3dCache_i.cc
src/VISU_I/VISU_ColoredPrs3dCache_i.hh
src/VISU_I/VISU_Prs3d_i.cc
src/VISU_I/VISU_Prs3d_i.hh

index 40cc9ede94f31a335d459973dcceae109f5509db..dfbc28dc0166e4d0325103f013ee15d8752278d0 100644 (file)
@@ -37,7 +37,8 @@ class SUIT_ViewManager;
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
-namespace VISU{
+namespace VISU
+{
   class CutLines_i;
 }
 
index c092854f0d822c8e07bb88cf7b70262357ae2f0b..804c545e2a5174d2158f12289b3781e4356ccf04 100644 (file)
@@ -530,6 +530,9 @@ VisuGUI_CutPlanesDlg::VisuGUI_CutPlanesDlg (SalomeApp_Module* theModule)
   //        this, SLOT(onWindowActivated(SUIT_ViewWindow*)));
 }
 
+VisuGUI_CutPlanesDlg::~VisuGUI_CutPlanesDlg()
+{}
+
 void VisuGUI_CutPlanesDlg::initFromPrsObject (VISU::ColoredPrs3d_i* thePrs, bool theInit)
 {
   if( theInit )
index 872a267ac1c0d4f3fc2d45174609c3523b10efd5..e94a7bf61630bff30c629b71a165ef46c4afd279 100644 (file)
@@ -30,7 +30,6 @@
 #define VISUGUI_CUTPLANESDLG_H
 
 #include "VisuGUI_Prs3dDlg.h"
-#include "VISU_CutPlanes_i.hh"
 
 #include <SALOME_Actor.h>
 
 #include "SALOMEconfig.h"
 #include CORBA_CLIENT_HEADER(VISU_Gen)
 
+namespace VISU 
+{
+  class CutPlanes_i;
+};
+
 class SUIT_ViewWindow;
 class SUIT_ViewManager;
 class SalomeApp_Module;
@@ -109,7 +113,7 @@ class VisuGUI_CutPlanesDlg : public VisuGUI_Prs3dDlg
 
 public:
     VisuGUI_CutPlanesDlg (SalomeApp_Module* theModule);
-    ~VisuGUI_CutPlanesDlg() {};
+    ~VisuGUI_CutPlanesDlg();
 
     virtual void initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit = true);
     virtual int  storeToPrsObject(VISU::ColoredPrs3d_i* thePrs);
index 3cd3a6f24ffe82dfdc86f1c2b8affa3192dfdbfa..e60b0943d664d2f315e456e2596ed7db31b0cd0b 100644 (file)
@@ -135,6 +135,9 @@ VisuGUI_DeformedShapeDlg::VisuGUI_DeformedShapeDlg (SalomeApp_Module* theModule)
   connect(buttonHelp,   SIGNAL(clicked()), this, SLOT(onHelp()));
 }
 
+VisuGUI_DeformedShapeDlg::~VisuGUI_DeformedShapeDlg()
+{}
+
 void VisuGUI_DeformedShapeDlg::initFromPrsObject (VISU::ColoredPrs3d_i* thePrs, bool theInit)
 {
   if( theInit )
index 5d77bf71269dc3df2e774907972311db2b2334f1..a832a9db59cc1b3307aa02dc1189fcc3885826af 100644 (file)
@@ -43,7 +43,8 @@
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
-namespace VISU{
+namespace VISU
+{
   class DeformedShape_i;
 }
 
@@ -53,7 +54,7 @@ class VisuGUI_DeformedShapeDlg : public VisuGUI_Prs3dDlg
 
 public:
     VisuGUI_DeformedShapeDlg (SalomeApp_Module* theModule);
-    ~VisuGUI_DeformedShapeDlg() {};
+    ~VisuGUI_DeformedShapeDlg();
 
     double getFactor()
       { return ScalFact->value(); }
index ce78dfa5b3d952e3e65c1b140189a75504b1576e..11688a78b6e9db091f35144a195e877f9a8b48ca 100644 (file)
@@ -650,6 +650,9 @@ VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool
   connect( buttonHelp,   SIGNAL( clicked() ), this, SLOT( onHelp() ) );
 }
 
+VisuGUI_GaussPointsDlg::~VisuGUI_GaussPointsDlg()
+{}
+
 void VisuGUI_GaussPointsDlg::initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit)
 {
   if( theInit )
index 592ac66fcaec6c0dc0ab8e33f025f1fc07976b7e..bf117d7c75c7df3fcdf528ffcd2d1a83b70b7493 100644 (file)
@@ -123,7 +123,7 @@ class VisuGUI_GaussPointsDlg : public VisuGUI_Prs3dDlg
 
 public:
   VisuGUI_GaussPointsDlg (SalomeApp_Module* theModule, bool SetPref = FALSE);
-  ~VisuGUI_GaussPointsDlg() {}
+  ~VisuGUI_GaussPointsDlg();
 
   //! Initializing dialog from the Gauss Points presentation.
   virtual void    initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit = true);
index 8f21895519774c9d8b8f29d7edf2574084859b6f..c24f76a99e7b573f912eaf6d61fc448a499131f3 100644 (file)
@@ -219,6 +219,9 @@ VisuGUI_IsoSurfacesDlg::VisuGUI_IsoSurfacesDlg (SalomeApp_Module* theModule)
   connect( buttonHelp,   SIGNAL( clicked() ), this, SLOT( onHelp() ) );
 }
 
+VisuGUI_IsoSurfacesDlg::~VisuGUI_IsoSurfacesDlg()
+{}
+
 void VisuGUI_IsoSurfacesDlg::accept()
 {
   if (myIsoPane->check() && myScalarPane->check())
index 82c3710923db51c0e7080535f6b38d6783a0f3f1..efea4c1e9785b56b0904eb6f829d51bb0691b87e 100644 (file)
@@ -30,7 +30,6 @@
 #define VISUGUI_ISOSURFACESDLG_H
 
 #include "VisuGUI_Prs3dDlg.h"
-#include "VISU_IsoSurfaces_i.hh"
 
 #include <qdialog.h>
 #include <qlabel.h>
 #include <qlineedit.h>
 #include <qtabwidget.h>
 
+namespace VISU 
+{
+  class IsoSurfaces_i;
+};
+
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
@@ -77,7 +81,7 @@ class VisuGUI_IsoSurfacesDlg : public VisuGUI_Prs3dDlg
 
  public:
   VisuGUI_IsoSurfacesDlg (SalomeApp_Module* theModule);
-  ~VisuGUI_IsoSurfacesDlg() {};
+  ~VisuGUI_IsoSurfacesDlg();
 
   virtual void initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit = true);
   virtual int storeToPrsObject(VISU::ColoredPrs3d_i* thePrs);
index afc92def5697a6275b3805a453444db41ae3b864..700991079a5347232cb3c610c12ba9477c12f712 100644 (file)
@@ -254,8 +254,7 @@ VisuGUI_Plot3DPane::VisuGUI_Plot3DPane (QWidget* parent)
 //purpose  :
 //=======================================================================
 VisuGUI_Plot3DPane::~VisuGUI_Plot3DPane()
-{
-}
+{}
 
 //=======================================================================
 //function : storePrsParams
@@ -599,6 +598,9 @@ VisuGUI_Plot3DDlg::VisuGUI_Plot3DDlg (SalomeApp_Module* theModule)
   connect(buttonHelp,   SIGNAL(clicked()), this, SLOT(onHelp()));
 }
 
+VisuGUI_Plot3DDlg::~VisuGUI_Plot3DDlg()
+{}
+
 //=======================================================================
 //function : accept
 //purpose  :
index bd49e03c6e53083c95afd99ca4c3d262cb37b92c..baee658903e65d2ac6d4ca8a4064707c56ce6843 100644 (file)
 
 #include "VisuGUI_Prs3dDlg.h"
 
-#include "VISU_Plot3D_i.hh"
-
 #include <qhbuttongroup.h>
 #include <qtabwidget.h>
 
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
-namespace VISU {
+namespace VISU 
+{
   class Plot3D_i;
 };
 
@@ -103,7 +102,7 @@ class VisuGUI_Plot3DDlg : public VisuGUI_Prs3dDlg
 
  public:
   VisuGUI_Plot3DDlg (SalomeApp_Module* theModule);
-  ~VisuGUI_Plot3DDlg() {};
+  ~VisuGUI_Plot3DDlg();
 
   virtual void initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit = true);
   virtual int  storeToPrsObject(VISU::ColoredPrs3d_i* thePrs);
index fac8781014c7c7af9f0cddba10abf953b31d370c..8455b972670bf223174cd6c51c641b91ba898800 100644 (file)
@@ -115,6 +115,9 @@ VisuGUI_ScalarBarDlg::VisuGUI_ScalarBarDlg (SalomeApp_Module* theModule, bool Se
   connect( buttonHelp,   SIGNAL( clicked() ), this, SLOT( onHelp() ) );
 }
 
+VisuGUI_ScalarBarDlg::~VisuGUI_ScalarBarDlg()
+{}
+
 /*!
   Called when <OK> button is clicked, validates data and closes dialog
 */
index f05ee5892582d1ff8921857b8e12531931c677b1..56cd2849948bd3cd06009d64b7e0a2e6caab52b5 100644 (file)
 
 #include "QtxDblSpinBox.h"
 
-#include "VISU_ScalarMap_i.hh"
-
 class VisuGUI_InputPane;
 
+namespace VISU
+{
+  class ScalarMap_i;
+}
+
 class VisuGUI_ScalarBarDlg : public VisuGUI_Prs3dDlg
 {
   Q_OBJECT;
 
  public:
   VisuGUI_ScalarBarDlg (SalomeApp_Module* theModule, bool SetPref = FALSE);
-  ~VisuGUI_ScalarBarDlg() {};
+  ~VisuGUI_ScalarBarDlg();
 
   bool isToSave() {return myScalarPane->isToSave();}
 
index 17bfa7bd08552fcec4195cc0f8649b9344af65d4..8fb375efaa5889b15eb0b44fb9c23e39a0c27d86 100644 (file)
@@ -163,6 +163,9 @@ VisuGUI_ScalarMapOnDeformedShapeDlg::VisuGUI_ScalarMapOnDeformedShapeDlg (Salome
   connect(myTimeStampsCombo, SIGNAL(activated(int)), this, SLOT(onTimeStampChanged(int)));
 }
 
+VisuGUI_ScalarMapOnDeformedShapeDlg::~VisuGUI_ScalarMapOnDeformedShapeDlg()
+{}
+
 void VisuGUI_ScalarMapOnDeformedShapeDlg::initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit)
 {
   if( theInit )
index b12c706f7bc1c90bbca293d672f872fad6b59526..f891508f25f3a6f5ade6bf0439040bf66aa83ac8 100644 (file)
@@ -48,7 +48,8 @@
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
-namespace VISU{
+namespace VISU
+{
   class ScalarMapOnDeformedShape_i;
 }
 
@@ -58,7 +59,7 @@ class VisuGUI_ScalarMapOnDeformedShapeDlg : public VisuGUI_Prs3dDlg
 
 public:
     VisuGUI_ScalarMapOnDeformedShapeDlg (SalomeApp_Module* theModule);
-    ~VisuGUI_ScalarMapOnDeformedShapeDlg() {};
+    ~VisuGUI_ScalarMapOnDeformedShapeDlg();
 
     double getFactor()
       { return ScalFact->value(); }
index c63ae9d9d544a3c011918d6f5283a5d9764c09fa..6ed2d9781a1bf1930f304823ffd63c1839302abf 100644 (file)
@@ -312,6 +312,8 @@ VisuGUI_StreamLinesDlg::VisuGUI_StreamLinesDlg (SalomeApp_Module* theModule)
   enableSetColor();
 }
 
+VisuGUI_StreamLinesDlg::~VisuGUI_StreamLinesDlg()
+{}
 
 void VisuGUI_StreamLinesDlg::initFromPrsObject (VISU::ColoredPrs3d_i* thePrs, bool theInit)
 {
index 11b68a3765c46078a30561aab5a439df1a344f50..1d67efd1fc3a39d7bb0333995f96807417f95a7d 100644 (file)
@@ -38,7 +38,8 @@ class SalomeApp_Module;
 class VisuGUI_InputPane;
 class QtxDblSpinBox;
 
-namespace VISU{
+namespace VISU
+{
   class StreamLines_i;
 }
 
@@ -47,7 +48,7 @@ class VisuGUI_StreamLinesDlg: public VisuGUI_Prs3dDlg
     Q_OBJECT
 public:
     VisuGUI_StreamLinesDlg (SalomeApp_Module* theModule);
-    ~VisuGUI_StreamLinesDlg() {};
+    ~VisuGUI_StreamLinesDlg();
 
     virtual void initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit = true);
     virtual int  storeToPrsObject(VISU::ColoredPrs3d_i* thePrs);
index 03323bfffa23dd08d98a36f283e388d17b0e111b..11331d553436e790d2b40f7d8db12c4b63d44f37 100644 (file)
@@ -199,7 +199,8 @@ VisuGUI_VectorsDlg::VisuGUI_VectorsDlg (SalomeApp_Module* theModule)
   enableSetColor();
 }
 
-
+VisuGUI_VectorsDlg::~VisuGUI_VectorsDlg()
+{}
 
 void VisuGUI_VectorsDlg::initFromPrsObject(VISU::ColoredPrs3d_i* thePrs, bool theInit) {
   if( theInit )
index 916eea75d97180e6b0286c792f4a4f1c46fc8476..829747fccab062aa113934ebe5b15862ade40bb4 100644 (file)
@@ -48,7 +48,8 @@
 class SalomeApp_Module;
 class VisuGUI_InputPane;
 
-namespace VISU{
+namespace VISU
+{
   class Vectors_i;
 }
 
@@ -58,7 +59,7 @@ class VisuGUI_VectorsDlg : public VisuGUI_Prs3dDlg
 
 public:
     VisuGUI_VectorsDlg (SalomeApp_Module* theModule);
-    ~VisuGUI_VectorsDlg() {};
+    ~VisuGUI_VectorsDlg();
 
     void   setScaleFactor( double sf );
     double getScaleFactor();
index 384f648191c02018e3093dce2e7354dc78ab521d..1e774e1ee8346b6a97ed47b9169692db59b59b9f 100644 (file)
 //  Module : SALOME
 
 #include "SALOME_GenericObjPointer.hh"
-
-using namespace SALOME;
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase
-::GenericObjPtrBase() :
-  Object(0)
-{
-  // Add a reference to the object.
-  this->Register();
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase
-::GenericObjPtrBase(GenericObj_i* r):
-  Object(r)
-{
-  // Add a reference to the object.
-  this->Register();
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase
-::GenericObjPtrBase(const GenericObjPtrBase& r):
-  Object(r.Object)
-{
-  // Add a reference to the object.
-  this->Register();
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase
-::GenericObjPtrBase(GenericObj_i* r, const GenericObjPtrBase::NoReference&):
-  Object(r)
-{
-  // Do not add a reference to the object because we received the
-  // NoReference argument.
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase
-::~GenericObjPtrBase()
-{
-  // The main pointer must be set to NULL before calling UnRegister,
-  // so use a local variable to save the pointer.  This is because the
-  // garbage collection reference graph traversal may make it back to
-  // this smart pointer, and we do not want to include this reference.
-  if(GenericObj_i* object = this->Object)
-  {
-    this->Object = 0;
-    object->Destroy();
-  }
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase&
-GenericObjPtrBase
-::operator=(GenericObj_i* r)
-{
-  // This is an exception-safe assignment idiom that also gives the
-  // correct order of register/unregister calls to all objects
-  // involved.  A temporary is constructed that references the new
-  // object.  Then the main pointer and temporary are swapped and the
-  // temporary's destructor unreferences the old object.
-  GenericObjPtrBase(r).Swap(*this);
-  return *this;
-}
-
-//----------------------------------------------------------------------------
-GenericObjPtrBase&
-GenericObjPtrBase
-::operator=(const GenericObjPtrBase& r)
-{
-  // This is an exception-safe assignment idiom that also gives the
-  // correct order of register/unregister calls to all objects
-  // involved.  A temporary is constructed that references the new
-  // object.  Then the main pointer and temporary are swapped and the
-  // temporary's destructor unreferences the old object.
-  GenericObjPtrBase(r).Swap(*this);
-  return *this;
-}
-
-//----------------------------------------------------------------------------
-void GenericObjPtrBase
-::Swap(GenericObjPtrBase& r)
-{
-  // Just swap the pointers.  This is used internally by the
-  // assignment operator.
-  GenericObj_i* temp = r.Object;
-  r.Object = this->Object;
-  this->Object = temp;
-}
-
-//----------------------------------------------------------------------------
-void GenericObjPtrBase
-::Register()
-{
-  // Add a reference only if the object is not NULL.
-  if(this->Object)
-    this->Object->Register();
-}
index 4e1bf06a74b0692bd0b54085430df535f98aa695..e710a4f05c81129162cbf4bc64e9eab3e7cfec37 100644 (file)
 #ifndef SALOME_GenericObjPointer_HH
 #define SALOME_GenericObjPointer_HH
 
-#include "SALOME_GenericObj_i.hh"
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SALOME_GenericObj)
+
+#include <iosfwd>  // for std::basic_ostream
 
 namespace SALOME
 {
-  class GenericObjPtrBase
+  //----------------------------------------------------------------------------
+  template <class TGenericObj>
+  class GenericObjPtr
   {
-  public:
-    // Description:
-    // Initialize smart pointer to NULL.
-    GenericObjPtrBase();
-
-    // Description:
-    // Initialize smart pointer to given object.
-    GenericObjPtrBase( GenericObj_i* );
-
-    // Description:
-    // Initialize smart pointer with a new reference to the same object
-    // referenced by given smart pointer.
-    GenericObjPtrBase( const GenericObjPtrBase& );
-
-    // Description:
-    // Destroy smart pointer and remove the reference to its object.
-    ~GenericObjPtrBase();
-
-    // Description:
-    // Assign object to reference.  This removes any reference to an old object.
-    GenericObjPtrBase& operator=( GenericObj_i* );
-    GenericObjPtrBase& operator=( const GenericObjPtrBase& );
-
-    // Description:
-    // Get the contained pointer.
-    GenericObj_i* GetPointer() const
+    //! Pointer to the actual object.
+    TGenericObj* myPointer;
+
+    void
+    swap(GenericObjPtr& thePointer)
     {
-      return this->Object;
+      TGenericObj* aPointer = thePointer.myPointer;
+      thePointer.myPointer = this->myPointer;
+      this->myPointer = aPointer;
     }
 
-  protected:
-    // Initialize smart pointer to given object, but do not increment
-    // reference count.  The destructor will still decrement the count.
-    // This effectively makes it an auto-ptr.
-    class NoReference {};
-    GenericObjPtrBase(GenericObj_i* r, const NoReference&);
-
-    // Pointer to the actual object.
-    GenericObj_i* Object;
+    void
+    Register()
+    {
+      if(this->myPointer)
+       this->myPointer->Register();
+    }
 
-  private:
-    // Internal utility methods.
-    void Swap( GenericObjPtrBase& );
-    void Register();
-  };
+    void
+    Destroy()
+    {
+      if(this->myPointer){
+       this->myPointer->Destroy();
+       this->myPointer = NULL;
+      }
+    }
 
-  template <class T>
-  class GenericObjPtr: public GenericObjPtrBase
-  {
   public:
-    // Description:
-    // Initialize smart pointer to NULL.
-    GenericObjPtr() {}
-
-    // Description:
-    // Initialize smart pointer to given object.
-    GenericObjPtr(T* r): GenericObjPtrBase(r) {}
-
-    // Description:
-    // Initialize smart pointer with a new reference to the same object
-    // referenced by given smart pointer.
-    GenericObjPtr(const GenericObjPtrBase& r): GenericObjPtrBase(r) {}
-
-    // Description:
-    // Assign object to reference.  This removes any reference to an old
-    // object.
-    GenericObjPtr& operator=(T* r)
+    //! Initialize smart pointer to NULL.
+    GenericObjPtr():
+      myPointer(NULL)
+    {}
+
+    //! Initialize smart pointer to given object (TSGenericObj must be complete).
+    template<class TSGenericObj>
+    explicit
+    GenericObjPtr(TSGenericObj* thePointer): 
+      myPointer(thePointer) 
     {
-      this->GenericObjPtrBase::operator=(r);
-      return *this;
+      this->Register();
+    }
+
+    /*! 
+      Initialize smart pointer with a new reference to the same object
+      referenced by given smart pointer.
+     */
+    GenericObjPtr(const GenericObjPtr& thePointer):
+      myPointer(thePointer.myPointer) 
+    {
+      this->Register();
+    }
+
+    //! Destroy smart pointer and remove the reference to its object.
+    ~GenericObjPtr()
+    {
+      this->Destroy();
     }
 
-    // Description:
-    // Assign object to reference.  This removes any reference to an old
-    // object.
-    GenericObjPtr& operator=(const GenericObjPtrBase& r)
+    /*! 
+      Assign object to reference.  This removes any reference to an old
+      object.
+    */
+    GenericObjPtr&
+    operator=(TGenericObj* thePointer)
     {
-      this->GenericObjPtrBase::operator=(r);
+      GenericObjPtr(thePointer).swap(*this);
       return *this;
     }
 
-    // Description:
-    // Get the contained pointer.
-    T* GetPointer() const
+    /*! 
+      Assign object to reference.  This removes any reference to an old
+      object.
+    */
+    GenericObjPtr& 
+    operator=(const GenericObjPtr& thePointer)
     {
-      return dynamic_cast<T*>(this->Object);
+      GenericObjPtr(thePointer).swap(*this);
+      return *this;
     }
 
-    // Description:
-    // Get the contained pointer.
-    operator T* () const
+    //! Get the contained pointer.
+    virtual
+    TGenericObj* 
+    get() const
     {
-      return dynamic_cast<T*>(this->Object);
+      return this->myPointer;
     }
 
-    // Description:
-    // Dereference the pointer and return a reference to the contained
-    // object.
-    T& operator*() const
+    //! Get the contained pointer.
+    operator TGenericObj* () const
     {
-      return *dynamic_cast<T*>(this->Object);
+      return this->get();
     }
 
-    // Description:
-    // Provides normal pointer target member access using operator ->.
-    T* operator->() const
+    /*! 
+      Dereference the pointer and return a reference to the contained
+      object.
+    */
+    TGenericObj& 
+    operator*() const
     {
-      return dynamic_cast<T*>(this->Object);
+      return *this->get();
     }
 
-    // Description:
-    // Create an instance of an object.
-    static GenericObjPtr<T> New()
+    //! Provides normal pointer target member access using operator ->.
+    TGenericObj* operator->() const
     {
-      return GenericObjPtr<T>(T::New(), NoReference());
+      return this->get();
     }
 
-  protected:
-    GenericObjPtr(T* r, const NoReference& n): GenericObjPtrBase(r, n) {}
+    operator bool () const
+    {
+      return this->get() != 0;
+    }
   };
 }
 
+template<class T, class U> 
+inline
+bool 
+operator==(SALOME::GenericObjPtr<T> const & a, SALOME::GenericObjPtr<U> const & b)
+{
+  return a.get() == b.get();
+}
+
+template<class T, class U> 
+inline 
+bool 
+operator!=(SALOME::GenericObjPtr<T> const & a, SALOME::GenericObjPtr<U> const & b)
+{
+  return a.get() != b.get();
+}
+
+template<class Y> 
+std::ostream& 
+operator<< (std::ostream & os, SALOME::GenericObjPtr<Y> const & p)
+{
+  os << p.get();
+  return os;
+}
+
+
 #endif
index 3671bd2836c2c4254f95d1c89918497ec921d140..3cbde11a4747067985e167fc5c655348667e0640 100644 (file)
@@ -93,7 +93,7 @@ namespace
          return aPrs3d;
       }
     }
-    return NULL;
+    return VISU::TPrs3dPtr();
   }
   
   
@@ -105,7 +105,7 @@ namespace
                     const size_t theRawEstimatedMemorySize)
   {
     VISU::TPrs3dPtr aPrs3d = FindSameFieldPrs(theHolderMap, theInput, theType);
-    if(aPrs3d.GetPointer())
+    if(aPrs3d)
       return aPrs3d->GetMemorySize();
     return CORBA::Float(theRawEstimatedMemorySize/(1024.0*1024.0)); // convert to Mb
   }
@@ -191,7 +191,7 @@ namespace
     VISU::TLastVisitedPrsList::iterator aEndIter = thePrsList.end();
     for(; anIter != aEndIter; anIter++){
       VISU::TPrs3dPtr aPrs3d = *anIter;
-      if(aPrs3d.GetPointer() == thePrs3d.GetPointer())
+      if(aPrs3d == thePrs3d)
        thePrsList.erase(anIter);
     }
   }
@@ -430,11 +430,10 @@ VISU::ColoredPrs3dCache_i
 ::RegisterInHolder(VISU::ColoredPrs3d_i* thePrs3d,
                   const std::string& theHolderEntry)
 {
-  TPrs3dPtr aPrs3d( thePrs3d );
-  thePrs3d->Destroy();
-
-  thePrs3d->SetHolderEntry( theHolderEntry );
+  TPrs3dPtr aPrs3d(thePrs3d);
   myHolderMap[theHolderEntry].push_front(aPrs3d);  
+  thePrs3d->SetHolderEntry( theHolderEntry );
+  thePrs3d->Destroy();
   return thePrs3d;
 }
 
@@ -465,11 +464,10 @@ VISU::TPrs3dPtr
 VISU::ColoredPrs3dCache_i
 ::GetLastVisitedPrs(VISU::ColoredPrs3dHolder_i* theHolder)
 {
-  TLastVisitedPrsList aList = GetLastVisitedPrsList(theHolder);
+  const TLastVisitedPrsList& aList = GetLastVisitedPrsList(theHolder);
   if( !aList.empty() )
     return aList.front();
-
-  return NULL;
+  return VISU::TPrs3dPtr();
 }
 
 
@@ -489,7 +487,7 @@ VISU::ColoredPrs3dCache_i
       return aPrs3d;
     }
   }
-  return NULL;
+  return VISU::TPrs3dPtr();
 }
 
 
@@ -509,7 +507,7 @@ VISU::ColoredPrs3dCache_i
   std::string aHolderEntry = theHolder->GetEntry();
   VISU::VISUType aPrsType = theHolder->GetPrsType();
   CORBA::Float aRequiredMemory = 0.0;
-  if(aPrs3d.GetPointer()){
+  if(aPrs3d){
     aLastVisitedPrsList.push_front(aPrs3d);
     if(MYDEBUG) cout << "FindPrsByInput " << aPrs3d << endl;
   }else if(anIsCheckPossible && IsPossible(aPrsType, theInput, aRequiredMemory, aHolderEntry)){
@@ -631,7 +629,7 @@ VISU::ColoredPrs3dCache_i
     for(; aPrsIter != aPrsIterEnd; aPrsIter++)
       if(TPrs3dPtr aPrs3d = *aPrsIter)
       {
-       cout << aPrs3d.GetPointer() << " (" << aPrs3d->GetMemorySize() << " Mb)";
+       cout << aPrs3d << " (" << aPrs3d->GetMemorySize() << " Mb)";
        if(aPrsIter == aPrsList.begin())
          cout << " (device)";
        cout << endl;
index 41fc4b3fb18745d5dc360dc74d8022145a0c9ed1..2ba3cda71652cf8be3552074b3b908a7a13b3dc2 100644 (file)
@@ -40,32 +40,57 @@ namespace VISU
   struct TPrs3dPtr: SALOME::GenericObjPtr<ColoredPrs3d_i>
   {
     typedef SALOME::GenericObjPtr<ColoredPrs3d_i> TSuperClass;
-    //! Initialize smart pointer to given object.
-    TPrs3dPtr(ColoredPrs3d_i* r): TSuperClass(r) {}
-
-    //! Initialize smart pointer with a new reference to the same object
-    // referenced by given smart pointer.
-    TPrs3dPtr(const SALOME::GenericObjPtrBase& r): TSuperClass(r) {}
-
-    //! Get the contained pointer.
-    ColoredPrs3d_i* GetPointer() const
+    //! Initialize smart pointer to NULL.
+    TPrs3dPtr():
+      TSuperClass()
+    {}
+
+    //! Initialize smart pointer to given object (TSGenericObj must be complete).
+    TPrs3dPtr(ColoredPrs3d_i* thePointer):
+      TSuperClass(thePointer)
+    {}
+
+    /*! 
+      Initialize smart pointer with a new reference to the same object
+      referenced by given smart pointer.
+     */
+    TPrs3dPtr(const TPrs3dPtr& thePointer):
+      TSuperClass(thePointer)
+    {}
+
+
+    /*! 
+      Assign object to reference.  This removes any reference to an old
+      object.
+    */
+    TPrs3dPtr& 
+    operator=(const TPrs3dPtr& thePointer)
     {
-      ColoredPrs3d_i* aColoredPrs3d = TSuperClass::GetPointer();
-      // To implement postponed restoring of the presentation
-      aColoredPrs3d->InitFromRestoringState();
-      return aColoredPrs3d;
+      TSuperClass::operator=(thePointer);
+      return *this;
     }
 
-    //! Get the contained pointer.
-    operator ColoredPrs3d_i* () const
+    /*! 
+      Assign object to reference.  This removes any reference to an old
+      object.
+    */
+    TPrs3dPtr& 
+    operator=(ColoredPrs3d_i* thePointer)
     {
-      return this->GetPointer();
+      TSuperClass::operator=(thePointer);
+      return *this;
     }
 
-    //! Provides normal pointer target member access using operator ->.
-    ColoredPrs3d_i* operator->() const
+    //! Get the contained pointer.
+    ColoredPrs3d_i* 
+    get() const
     {
-      return this->GetPointer();
+      ColoredPrs3d_i* aColoredPrs3d = TSuperClass::get();
+      // To implement postponed restoring of the presentation
+      if(aColoredPrs3d)
+       aColoredPrs3d->InitFromRestoringState();
+      return aColoredPrs3d;
     }
   };
 
index 887a77175d510d879794f9d0c4e8701c8c117ef2..21c28e591802eeacdc5d6263e35c24ce85d6fa66 100644 (file)
@@ -102,7 +102,7 @@ void
 VISU::Prs3d_i
 ::OnRestoreInput()
 {
-  SetCResult(myPreviousResult.GetPointer());
+  SetCResult(myPreviousResult);
   myMeshName = myPreviousMeshName;
 }
 
@@ -168,7 +168,7 @@ VISU::Result_i*
 VISU::Prs3d_i
 ::GetCResult() const 
 { 
-  return myResult.GetPointer();
+  return myResult;
 }
 
 
index 11cf5dabfc591c2b77a5bdc3a65f7e30798b6fe6..45805438ba16f744759f099dab4dfddecd331ac7 100644 (file)
@@ -32,7 +32,7 @@
 #include "VISU_ActorFactory.h"
 #include "VISU_ConvertorDef.hxx"
 
-#include "SALOME_GenericObj.hh"
+#include "SALOME_GenericObj_i.hh"
 #include "SALOME_GenericObjPointer.hh"
 #include "SALOME_InteractiveObject.hxx"