]> Creatis software - clitk.git/blobdiff - common/clitkCommon.h
move clitkConfiguration.h out of clitkCommon to avoid costly recompilations
[clitk.git] / common / clitkCommon.h
index 5831d7b8ec08b514dd59e5ae2a8e8e09b3afa294..52264cd0258d8f1131a17e3b247b707f624e52d2 100644 (file)
@@ -1,47 +1,52 @@
-#ifndef CLITKCOMMON_H
-#define CLITKCOMMON_H
+/*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-/**
-   -------------------------------------------------------------------
-   * @file   clitkCommon.h
-   * @author David Sarrut <David.Sarrut@creatis.insa-lyon.fr>
-   * @date   17 May 2006 07:57:56
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
-   * @brief  
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
 
-   -------------------------------------------------------------------*/
+  It is distributed under dual licence
 
-// std include
-#include <config.h>
-#include <cstdlib>
-#include <algorithm>
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include <vector>
-#include <math.h>
-#include <typeinfo>
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+======================================================================-====*/
 
-#include "itkMacro.h"
+#ifndef CLITKCOMMON_H
+#define CLITKCOMMON_H
+
+// clitk include
+//#include "clitkConfiguration.h"
+#include "clitkPortability.h"
+#include "clitkExceptionObject.h"
+
+// itk include (include std)
 #include <itkContinuousIndex.h>
+#include <itkMacro.h>
 #include <itkImageRegionConstIterator.h>
 #include <itkImageRegionIterator.h>
 
+#include <fstream>
+
 //--------------------------------------------------------------------
 namespace clitk {
-  
-#if defined(WIN32)
-#define lrint(x) (floor(x+(x>0) ? 0.5 : -0.5))
-#endif
-  
+
   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 DD(a) std::cout << #a " = [ " << a << " ]" << std::endl;std::cout.flush();
+#define DDV(a,n) { std::cout << #a " = [ "; for(unsigned int _i_=0; _i_<n; _i_++) { std::cout << a[_i_] << " "; }; std::cout << " ]" << std::endl;std::cout.flush();}
+template<class T>
+void _print_container(T const& a)
+    { for(typename T::const_iterator i=a.begin();i!=a.end();++i) { std::cout << *i << " "; };}
+#define DDS(a) { std::cout << #a " = [ "; _print_container(a) ; std::cout << " ]" << std::endl;std::cout.flush():}
 
   //--------------------------------------------------------------------
   // when everything goes wrong
@@ -50,25 +55,13 @@ namespace clitk {
   
   //--------------------------------------------------------------------
   // GGO with modified struct name
-#define GGO(ggo_filename, args_info)                                             \
-  gengetopt_args_info_##ggo_filename args_info;                                        \
-    cmdline_parser2(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);
-  
-
-  /*   //--------------------------------------------------------------------
-  // GGO default
 #define GGO(ggo_filename, args_info)                                    \
-  gengetopt_args_info_##ggo_filename args_info;                         \
-  cmdline_parser2(argc, argv, &args_info, 1, 1, 0);                    \
+  args_info_##ggo_filename args_info;                                  \
+  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 #
   void skipComment(std::istream & is);
@@ -194,6 +187,9 @@ namespace clitk {
   void openFileForReading(std::ifstream & is, const std::string & filename);
   void openFileForWriting(std::ofstream & os, const std::string & filename);
 
+  //--------------------------------------------------------------------
+  void readDoubleFromFile(const std::string & filename, std::vector<double> & list);
+
   //--------------------------------------------------------------------
   double cotan(double i);
   double invcotan(double i);