X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.h;h=3729584686bdd1d2510d4603000336fe307a0443;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=9eb36522004c172b9cfa6d8bb209f45821cb02f5;hpb=9c3459c14912a6e59482407d40a7b626143ebc46;p=clitk.git diff --git a/common/clitkCommon.h b/common/clitkCommon.h index 9eb3652..3729584 100644 --- a/common/clitkCommon.h +++ b/common/clitkCommon.h @@ -1,7 +1,7 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr @@ -34,21 +34,24 @@ #include // Include for "rusage" -#include +#include #if defined(unix) || defined(__APPLE__) # include # include #elif defined(_WIN32) # include +# include #endif +#define VTK_EXCLUDE_STRSTREAM_HEADERS + //-------------------------------------------------------------------- namespace clitk { typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; - + #define CLITK_TRY_CATCH_EXIT(func) \ try { \ func; \ @@ -65,13 +68,16 @@ namespace clitk { std::cout << "Unknown excpetion" << std::endl; \ exit(-3); \ } - + +#ifndef ITK_OVERRIDE +# define ITK_OVERRIDE +#endif //-------------------------------------------------------------------- // when everything goes wrong #define WHEREAMI "[ " << __FILE__ << " ] line " << __LINE__ -#define FATAL(a) std::cerr << "ERROR in " << WHEREAMI << ": " << a; exit(0); - +#define FATAL(a) { std::cerr << "ERROR in " << WHEREAMI << ": " << a; exit(0); } + //-------------------------------------------------------------------- // GGO with modified struct name #define GGO(ggo_filename, args_info) \ @@ -79,7 +85,7 @@ namespace clitk { cmdline_parser_##ggo_filename##2(argc, argv, &args_info, 1, 1, 0); \ if (args_info.config_given) \ cmdline_parser_##ggo_filename##_configfile (args_info.config_arg, &args_info, 0, 0, 1); \ - else cmdline_parser_##ggo_filename(argc, argv, &args_info); + else cmdline_parser_##ggo_filename(argc, argv, &args_info); //-------------------------------------------------------------------- // skip line with # @@ -92,15 +98,18 @@ namespace clitk { //-------------------------------------------------------------------- // Return filename extension std::string GetExtension(const std::string& filename); - + + // Return filename splitting in 1 or 2 parts : directory name (if exists) & filename + std::vector SplitFilename(const std::string& filename); + //-------------------------------------------------------------------- // Convert float, double ... to string template std::string toString(const T & t); template std::string toStringVector(const T * t, const int n); template std::string toStringVector(const T & t, const int n); template std::string toStringVector(const std::vector & t); - template bool fromString(T& t, - const std::string& s, + template bool fromString(T& t, + const std::string& s, std::ios_base& (*f)(std::ios_base&)=std::dec); //-------------------------------------------------------------------- @@ -114,6 +123,8 @@ namespace clitk { TPixelDown PixelTypeDownCast(const TPixelUp & x); template<> float PixelTypeDownCast(const double & x); + template<> + double PixelTypeDownCast(const double & x); //-------------------------------------------------------------------- // Return the indexes of sorted values in a vector @@ -126,7 +137,7 @@ namespace clitk { // Return the name of a type as a string template std::string GetTypeAsString(); - + //-------------------------------------------------------------------- // Convert radian / degree double rad2deg(double anglerad); @@ -149,13 +160,13 @@ namespace clitk { std::string CreateListOfTypes(bool last=true) { return GetTypeAsString(); } - + template std::string CreateListOfTypes(bool last=true) { if (last) return CreateListOfTypes()+" and "+CreateListOfTypes(); else return CreateListOfTypes()+", "+CreateListOfTypes(); } - + template std::string CreateListOfTypes(bool last=true) { if (last) return CreateListOfTypes(false)+" and "+CreateListOfTypes(); @@ -192,7 +203,7 @@ namespace clitk { else return CreateListOfTypes(false)+", "+CreateListOfTypes(); } //-------------------------------------------------------------------- - + //-------------------------------------------------------------------- void FindAndReplace(std::string & line, const std::string & tofind, const std::string & replacement); void FindAndReplace(std::string & line, const std::vector & tofind, const std::vector & toreplace); @@ -200,8 +211,8 @@ namespace clitk { //-------------------------------------------------------------------- //-------------------------------------------------------------------- - double ComputeEuclideanDistanceFromPointToPlane(const itk::ContinuousIndex point, - const itk::ContinuousIndex pointInPlane, + double ComputeEuclideanDistanceFromPointToPlane(const itk::ContinuousIndex point, + const itk::ContinuousIndex pointInPlane, const itk::ContinuousIndex normalPlane); //-------------------------------------------------------------------- @@ -229,14 +240,18 @@ namespace clitk { //-------------------------------------------------------------------- // Convert a map to a vector - template + template void MapToVecFirst(const M & m, V & v); - template + template void MapToVecSecond(const M & m, V & v); + //-------------------------------------------------------------------- + // Find/replace string + template + int inline findAndReplace(T& source, const T& find, const T& replace); + #include "clitkCommon.txx" } // end namespace #endif /* end #define CLITKCOMMON_H */ -