]> Creatis software - creaImageIO.git/commitdiff
set vectors of pointers (with many memory leak) as vectors of shared_ptr
authorFrederic Cervenansky <Frederic.Cervenansky@creatis.insa-lyon.fr>
Thu, 15 Oct 2009 07:52:47 +0000 (07:52 +0000)
committerFrederic Cervenansky <Frederic.Cervenansky@creatis.insa-lyon.fr>
Thu, 15 Oct 2009 07:52:47 +0000 (07:52 +0000)
19 files changed:
src2/creaImageIOGimmick.cpp
src2/creaImageIOGimmickView.cpp
src2/creaImageIOGimmickView.h
src2/creaImageIOMultiThreadImageReader.cpp
src2/creaImageIOMultiThreadImageReader.h
src2/creaImageIOSQLiteTreeHandler.cpp
src2/creaImageIOTreeDescriptor.h
src2/creaImageIOTreeHandlerImageAdder.cpp
src2/creaImageIOTreeNode.cpp
src2/creaImageIOTreeView.cpp
src2/creaImageIOVtkImageReader.cpp
src2/creaImageIOWxGimmickFrame.cpp
src2/creaImageIOWxGimmickFrame.h
src2/creaImageIOWxGimmickPanel.cpp
src2/creaImageIOWxGimmickPanel.h
src2/creaImageIOWxGimmickReaderDialog.cpp
src2/creaImageIOWxGimmickReaderDialog.h
src2/creaImageIOWxGimmickView.cpp
src2/creaImageIOWxGimmickView.h

index 7d7cca091431421cd4d909a9ed58910207f2c1e9..877a21ee65460b1b993981cb8d1722329d145383 100644 (file)
@@ -133,14 +133,16 @@ namespace creaImageIO
   //==============================================================
   void Gimmick::Finalize()
   {
-        
-         // delete SQLiteTreeHandler Object
-          for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
-                                                   it!= mTreeHandlerMap.end(); 
-                                                  ++it)
-          {
-                  delete it->second;
-          }
+         if(mTreeHandlerMap.size() >0)
+         {
+               // delete SQLiteTreeHandler Object
+               for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+                                                                                                       it!= mTreeHandlerMap.end(); 
+                                                       ++it)
+               {
+                       delete it->second;
+               }
+         }
   }
   //==============================================================
 
index e8fdb5595eb5da4c9bc245842dba254b34a0dd89..c8064d5f4312a8b946bef33e2182936e7456a288 100644 (file)
@@ -57,7 +57,7 @@ namespace creaImageIO
 
   //======================================================================
   // CTor
-  GimmickView::GimmickView(Gimmick* gimmick, int threads)
+  GimmickView::GimmickView(boost::shared_ptr<Gimmick> gimmick, int threads)
     : mGimmick(gimmick),
          mReader(threads)
   {
@@ -85,7 +85,6 @@ namespace creaImageIO
   /// 
   void GimmickView::Initialize()
   {
-       mImageExtent=0;
        mReaderStarted=false;
   }
   //======================================================================
@@ -142,7 +141,7 @@ namespace creaImageIO
   {
          if(mImageExtent!=0)
          {
-         mImageExtent=0;
+       //  mImageExtent=0;
          }
          valid=true;
   }
@@ -176,6 +175,19 @@ namespace creaImageIO
          }
   }
 
+  //======================================================================
+  /// No selected image
+  bool GimmickView::NoValidateSelected ()
+  {
+       GimmickDebugMessage(2,"Validating selected"<<std::endl);
+       std::string mMessage;
+       mMessage="Cannot have 0 images selected!";
+       valid=false;
+       modifyValidationSignal(valid);
+       SetMessage(mMessage);
+       return valid;
+  }
+
   //======================================================================
   ///Validates the dimension compliance of the images with the maximum and 
   ///minimum given, and between their sizes
@@ -191,10 +203,10 @@ namespace creaImageIO
        }
        else
        {
-       ImageExtent* ie=new ImageExtent((*sel).GetAttribute("D0028_0010"),
+               boost::shared_ptr<ImageExtent> ie=boost::shared_ptr<ImageExtent>(new ImageExtent((*sel).GetAttribute("D0028_0010"),
                                                 (*sel).GetAttribute("D0028_0011"),
                                                                         (*sel).GetAttribute("D0028_0012"), 
-                                                                        "");
+                                                                        ""));
        if(mImageExtent==0)
        {
                mImageExtent=ie;
index 6fca80290652d87ee96c74b3a55f86aeb6702254..389fd07029bd25fc38e75eb61b1837be5afb1442 100644 (file)
@@ -39,7 +39,7 @@ namespace creaImageIO
     {
     public:
       /// Ctor
-      GimmickView(Gimmick*, int number_of_threads = 0 );
+      GimmickView(boost::shared_ptr<Gimmick>, int number_of_threads = 0 );
       /// Virtual destructor
       virtual ~GimmickView();
       /// Initializes the view : 
@@ -96,6 +96,8 @@ namespace creaImageIO
          { GimmickError("INTERNAL ERROR : SaveAs not implemented"); }
 
 
+         /// No selected image
+         bool NoValidateSelected();
       ///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes
       bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim);
       
@@ -191,7 +193,7 @@ namespace creaImageIO
       //ImageEventQueueType mImageEventQueue;
 
          ///The current image extent
-         ImageExtent* mImageExtent;
+         boost::shared_ptr<ImageExtent> mImageExtent;
          ///The validation signal
          ValidationSignalType mValidationSignal;
          ///Boolean that determines if the selection is valid
index 7daf7403c9429406558d9fe1955ec48a4ee320c6..7dae59112f77e1726d0ead210863a8936f6a403a 100644 (file)
@@ -3,6 +3,7 @@
 #include <wx/utils.h>
 #include <creaImageIOSystem.h>
 
+
 namespace creaImageIO
 {
 
@@ -31,12 +32,23 @@ namespace creaImageIO
 
     vtkImageData* Read(const std::string& filename);
     
+       struct deleter
+       {
+               void operator()(ThreadedImageReader* p)
+               {
+                       p->Delete();
+               }
+       };
+       friend struct deleter;
+
 
   private:
     ImageReader mReader;
     MultiThreadImageReader* mMultiThreadImageReader;
        
   };
+
   //=====================================================================
 
   
@@ -53,8 +65,8 @@ namespace creaImageIO
     // Create the threads
     for (int i=0; i<number_of_threads; i++) 
       {
-       //ThreadedImageReader* t = new ThreadedImageReader(this);
-       boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this));
+                 //ThreadedImageReader* t = new ThreadedImageReader(this);
+                 boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this), ThreadedImageReader::deleter());
        mThreadedImageReaderList.push_back(t);
         std::cout << "  ===> Thread "<<i
                              <<" successfully added"<< std::endl;
@@ -122,10 +134,10 @@ namespace creaImageIO
                              <<" successfully stopped"<< std::endl;
                  if((*i)->IsAlive())
                  {
-                       (*i)->Delete();
+                        //(*i)->Delete();
                  }
       }
   mThreadedImageReaderList.clear();
//  mThreadedImageReaderList.clear();
     // Wait a little to be sure that all threads have stopped
     // A better way to do this ?
     //    wxMilliSleep(1000);
index bd79d04feb0c1a27cb785ca416f680930282765f..ac1817783a5bf5ee97a002e4a68d138f3c3bb1c8 100644 (file)
@@ -210,6 +210,7 @@ namespace creaImageIO
 
     /// The type of list of threaded readers
        typedef std::vector<boost::shared_ptr<ThreadedImageReader> > ThreadedImageReaderListType;
+       //typedef std::vector<ThreadedImageReader* > ThreadedImageReaderListType;
     ThreadedImageReaderListType mThreadedImageReaderList;
     /// The number of currently running threaded readers
     int mNumberOfThreadedReadersRunning;
index f29a8ce7ef4b7ced02410167684d1b1405cfef16..7f63e39bc80f579ecec330ed000e7dbf1766f977 100644 (file)
@@ -1,26 +1,17 @@
 #include <creaImageIOSQLiteTreeHandler.h>
 #include <creaImageIOSystem.h>
+#include <creaImageIOTree.h>
 
 #include "CppSQLite3.h"
 
 #include <sys/stat.h>
 
-//#include <creaImageIOSQLiteTreeHandlerStructure.h>
-
-//#include <creaImageIOUtilities.h>
-
-//#include <icons/database.xpm>
-
 #include <deque>
 
-//#include <icons/close.xpm>
-
 #include <creaWx.h>
+#include <boost/algorithm/string.hpp>
 using namespace crea;
 
-#include <boost/filesystem.hpp>
-#include <boost/algorithm/string/replace.hpp>
-
 namespace creaImageIO
 {
   using namespace tree;
@@ -362,8 +353,7 @@ namespace creaImageIO
        command += "Flags int\n";           
        command += "\n)";
        UPDATEDB(command);
-       
-       
+
        // Fill the table *_ATTRIBUTES
        LevelDescriptor::AttributeDescriptorListType::const_iterator i;
        for (i  = GetTree().GetAttributeDescriptorList(l).begin();
index e6863b14545cdcd6cf36e10274212fe8539fcf10..a7e5b94da131cdc6f04676d475ddc02bf64d0c33 100644 (file)
@@ -44,6 +44,7 @@ namespace creaImageIO
       GetAttributeDescriptorList(int level) const
       { return mLevelDescriptorList[level].GetAttributeDescriptorList(); }
   
+
       /// Adds a LevelDescriptor at the end of the list
       void Add(const LevelDescriptor&);
       
index 290da65474741d59812ad591a705f3445e1601e6..e4eeaf4b69d44ed7a83f519d93ef194b687f4e54 100644 (file)
@@ -4,7 +4,10 @@
 #include <boost/filesystem/operations.hpp>
 #include <boost/utility.hpp>
 
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 namespace fs = boost::filesystem;
 using boost::filesystem::path;
 using boost::next;
index 8b2a29b1ff23f622f05b4551788092ea73080ccc..e14bc8450b8fe6dd5514f5283e921e4f679c6a5b 100644 (file)
@@ -2,7 +2,10 @@
 #include <creaImageIOTree.h>
 #include <creaImageIOSystem.h>
 #include <algorithm>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 namespace creaImageIO
 {
   namespace tree
index 2fa1475a0e2fe41160b9cdc787fdab97b0027d49..d66c8ce11e3e30e50bf09c040c7c518ef4c65380 100644 (file)
@@ -1,6 +1,7 @@
 #include <creaImageIOTreeView.h>
 #include <creaImageIOSystem.h>
 
+
 namespace creaImageIO
 {
   // CTor
index cd93e86f9a7c6ffa68042bb35d1f698d9c7b6ad0..c4dd1bfd798c74dfaab63d7a4db323389e78c67b 100644 (file)
@@ -2,7 +2,10 @@
 #include <vtkImageReader2.h>
 #include <creaImageIOSystem.h>
 #include "boost/filesystem/path.hpp"
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 namespace creaImageIO
 {
 
@@ -14,7 +17,12 @@ namespace creaImageIO
   {
     if (name.size() == 0) 
       {
-       SetName ( mReader->GetDescriptiveName() );
+                 const char *test =mReader->GetDescriptiveName();
+                 if(test != "")
+                 {
+                       SetName ( "toto");// mReader->GetDescriptiveName());
+                 }
+               
       }
     else 
       {
@@ -38,7 +46,16 @@ namespace creaImageIO
   //=====================================================================
   bool VtkImageReader::CanRead(const std::string& filename)
   { 
+
     return (mReader->CanReadFile(filename.c_str())!=0);
+/*       if(filename != "")
+         {
+               return (mReader->CanReadFile(filename.c_str())!=0);
+         }
+         else
+         {
+                 return false;
+         }*/
   }
   //=====================================================================
   
index a14a7eeeec0004b398358b1bbb369c1118110ddd..bbdf22668a9e51fde3fddfdc9f696506b11acaed 100644 (file)
@@ -22,7 +22,7 @@ namespace creaImageIO
                  wxMINIMIZE_BOX | 
                  wxCAPTION  
               ),
-     mGimmick(0),
+    // mGimmick(0),
      mView(0)
   {
     GimmickDebugMessage(1,"WxGimmickFrame::WxGimmickFrame"
@@ -31,7 +31,7 @@ namespace creaImageIO
     
     try {
       
-      mGimmick = new Gimmick();
+   //   mGimmick = new Gimmick();
       mGimmick->Initialize();
      
       int min_dim = GIMMICK_2D_IMAGE_SELECTION;
@@ -70,7 +70,7 @@ namespace creaImageIO
     if (mGimmick) 
       {
        mGimmick->Finalize();
-       delete mGimmick;
+//     delete mGimmick;
       }
   }
   
index ae99a100e4d5f3c4f0ddfa4e1534cbc17531cb1d..b5e004f6f0201959c62749fa2846ee4eef60492d 100644 (file)
@@ -42,7 +42,7 @@ namespace creaImageIO
     //    DECLARE_EVENT_TABLE();
   private :
     
-    Gimmick*       mGimmick;
+         boost::shared_ptr<Gimmick>       mGimmick;
     WxGimmickView* mView;
 
   }; // class WxGimmickFrame
index f72284023970625c8979a6fec8d032e4f13f6916..f01f0bff457e7c1354270c1302e00e68865fe9c3 100644 (file)
@@ -20,7 +20,7 @@ namespace creaImageIO
                  wxMINIMIZE_BOX | 
                  wxCAPTION  
               ),
-     mGimmick(0),
+  //   mGimmick(0),
      mView(0)
   {
     GimmickDebugMessage(1,"WxGimmickPanel::WxGimmickPanel"
@@ -29,7 +29,7 @@ namespace creaImageIO
     
     try {
       
-      mGimmick = new Gimmick();
+               mGimmick = boost::shared_ptr<Gimmick>(new Gimmick());
       mGimmick->Initialize();
      
       int min_dim = GIMMICK_2D_IMAGE_SELECTION;
@@ -70,7 +70,7 @@ namespace creaImageIO
     if (mGimmick) 
       {
        mGimmick->Finalize();
-       delete mGimmick;
+//     delete mGimmick;
       }
   }
   
index 43a93614504201d2412eb1cad6e7a7047a899d33..6df7f5c602d13bf77e95ab879bbf7277870d1056 100644 (file)
@@ -61,7 +61,7 @@ namespace creaImageIO
     //    DECLARE_EVENT_TABLE();
   private :
     
-    Gimmick*       mGimmick;
+         boost::shared_ptr<Gimmick>       mGimmick;
     WxGimmickView* mView;
 
        ///The sendImage signal
index fe84eff3fbbd18d570b93375ddc5db6e17ede9e1..933a72312d11b5a1a185835d6fa0a74de39dbce1 100644 (file)
@@ -1,6 +1,9 @@
 #include <creaImageIOWxGimmickReaderDialog.h>
 #include <creaImageIOSystem.h>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
 
 namespace creaImageIO
 {
@@ -26,7 +29,7 @@ namespace creaImageIO
                  wxMINIMIZE_BOX | 
                  wxCAPTION  
               ),
-    mGimmick(0),
+  //  mGimmick(0),
      mView(0)
   {
     GimmickDebugMessage(1,"WxGimmickReaderDialog::WxGimmickReaderDialog"
@@ -35,7 +38,7 @@ namespace creaImageIO
     
     try {
       
-      mGimmick = new Gimmick();
+               mGimmick = boost::shared_ptr<Gimmick>(new Gimmick());
       mGimmick->Initialize();
     
       
@@ -79,12 +82,14 @@ namespace creaImageIO
                        <<std::endl);
     if (mView) 
       {
+       
                delete mView;
       }
     if (mGimmick) 
       {
-       mGimmick->Finalize();
-       delete mGimmick;
+                        mGimmick->Finalize();
+       //mGimmick->Finalize();
+//     delete mGimmick;
       }
 
   }
index fd393eaf4e9c7e7b149244534ad4aa6439ea3cbe..8137a73b7d2af91e6e117ed32a102d0b42aad7c4 100644 (file)
@@ -28,7 +28,7 @@ namespace creaImageIO
                          int output_dim = NATIVE,
                          int threads = 0);
 
-    Gimmick* GetGimmick() { return mGimmick; }
+       boost::shared_ptr<Gimmick> GetGimmick() { return mGimmick; }
     //    typedef WxGimmick ViewType;
     typedef WxGimmickView::EventType EventType;
 
@@ -56,7 +56,7 @@ namespace creaImageIO
 
   private :
     
-         Gimmick*      mGimmick;
+         boost::shared_ptr<Gimmick>      mGimmick;
     WxGimmickView* mView;
 
     wxButton* mOkButton;
index f187decb48c5390a4f478b819300b3fda1609714..3b8d507ff11a0e286cd3e6de1433c246f337bacb 100644 (file)
@@ -87,7 +87,7 @@ namespace creaImageIO
 
   //======================================================================
   // CTor
-  WxGimmickView::WxGimmickView(Gimmick* gimmick,
+       WxGimmickView::WxGimmickView(boost::shared_ptr<Gimmick> gimmick,
                               wxWindow *parent, 
                               const wxWindowID id,
                               const wxPoint& pos, 
@@ -197,6 +197,7 @@ namespace creaImageIO
     mViewer->StopPlayer();
     GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView"
                        <<std::endl);
+       delete mIcon;
     if(mListener->IsAlive())
     {
         mListener->Delete();
index 53dcf77c5e540a36f07a5baf1f71cae2e3f38a34..1325306da3eddd7468ff85e729d78ad1335496a0 100644 (file)
@@ -34,7 +34,7 @@ namespace creaImageIO
     typedef int EventType;
     
     /// Ctor
-    WxGimmickView(Gimmick*
+    WxGimmickView(boost::shared_ptr<Gimmick> 
                  wxWindow *parent, 
                  const wxWindowID id,
                  const wxPoint& pos, const wxSize& size,
@@ -138,7 +138,7 @@ namespace creaImageIO
     wxImageList *    mIcon;
     void CreateIconList();
     
-    Gimmick * mGimmick;
+    boost::shared_ptr<Gimmick> mGimmick;
        
        Listener* mListener;
     /// Callback for adding files