]> Creatis software - clitk.git/blobdiff - common/clitkCommon.h
Revert "itkv4 migration use itk::ThreadIdType"
[clitk.git] / common / clitkCommon.h
index f36894652b45a002d61103b677c72cd4e69b613a..769ca63f0bf4400cbb783cf53d3bd7b44b3fc293 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 
 #ifndef CLITKCOMMON_H
 #define CLITKCOMMON_H
 
 // clitk include
-#include "clitkConfiguration.h"
 #include "clitkPortability.h"
+#include "clitkDD.h"
+#include "clitkExceptionObject.h"
 
 // itk include (include std)
 #include <itkContinuousIndex.h>
 #include <itkImageRegionConstIterator.h>
 #include <itkImageRegionIterator.h>
 
+// std include
+#include <fstream>
+
+// Include for "rusage"
+#include <ctime> 
+#if defined(unix) || defined(__APPLE__)
+#  include <sys/time.h>
+#  include <sys/resource.h>
+#elif defined(WIN32)
+#  include <windows.h>
+#endif
+
 //--------------------------------------------------------------------
 namespace clitk {
 
   typedef unsigned char uchar;
   typedef unsigned short ushort;
   typedef unsigned int uint;
-
-  //--------------------------------------------------------------------
-  // display 
-#define DD(a) std::cout << #a " = [ " << a << " ]" << std::endl;
-#define DDV(a,n) { std::cout << #a " = [ "; for(unsigned int _i_=0; _i_<n; _i_++) { std::cout << a[_i_] << " "; }; std::cout << " ]" << std::endl;}
+  
+#define CLITK_TRY_CATCH_EXIT(func) \
+  try { \
+    func; \
+  } \
+  catch (const itk::ExceptionObject& e) { \
+    e.Print(std::cout); \
+    exit(-1);\
+  } \
+  catch (const std::exception& e) { \
+    std::cout << e.what() << std::endl; \
+    exit(-2);\
+  } \
+  catch (...) { \
+    std::cout << "Unknown excpetion" << std::endl; \
+    exit(-3); \
+  }
+    
 
   //--------------------------------------------------------------------
   // when everything goes wrong
@@ -50,10 +76,10 @@ namespace clitk {
   // GGO with modified struct name
 #define GGO(ggo_filename, args_info)                                    \
   args_info_##ggo_filename args_info;                                  \
-  cmdline_parser2(argc, argv, &args_info, 1, 1, 0);                    \
+  cmdline_parser_##ggo_filename##2(argc, argv, &args_info, 1, 1, 0);                   \
   if (args_info.config_given)                                          \
-    cmdline_parser_configfile (args_info.config_arg, &args_info, 0, 0, 1); \
-  else cmdline_parser(argc, argv, &args_info);  
+    cmdline_parser_##ggo_filename##_configfile (args_info.config_arg, &args_info, 0, 0, 1); \
+  else cmdline_parser_##ggo_filename(argc, argv, &args_info);  
 
   //--------------------------------------------------------------------
   // skip line with #
@@ -73,6 +99,9 @@ namespace clitk {
   template<class T> std::string toStringVector(const T * t, const int n);
   template<class T> std::string toStringVector(const T & t, const int n);
   template<class T> std::string toStringVector(const std::vector<T> & t);
+  template <class T> bool fromString(T& t, 
+                                     const std::string& s, 
+                                     std::ios_base& (*f)(std::ios_base&)=std::dec);
 
   //--------------------------------------------------------------------
   // Display a progress %
@@ -195,6 +224,16 @@ namespace clitk {
   template<class ImageType>
   void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output);
 
+  //--------------------------------------------------------------------
+  void PrintMemoryUsed();
+
+  //--------------------------------------------------------------------
+  // Convert a map to a vector
+  template <typename M, typename V> 
+  void MapToVecFirst(const M & m, V & v);
+  template <typename M, typename V> 
+  void MapToVecSecond(const M & m, V & v);
+
 #include "clitkCommon.txx"
 
 } // end namespace