X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.h;h=3729584686bdd1d2510d4603000336fe307a0443;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=2f5b26f1173b3e5e94999816031695c13cb2afc4;hpb=09e85411db3d404b16b44c192f4023835f943be9;p=clitk.git diff --git a/common/clitkCommon.h b/common/clitkCommon.h index 2f5b26f..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,7 +34,7 @@ #include // Include for "rusage" -#include +#include #if defined(unix) || defined(__APPLE__) # include # include @@ -51,7 +51,7 @@ namespace clitk { typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; - + #define CLITK_TRY_CATCH_EXIT(func) \ try { \ func; \ @@ -68,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) \ @@ -82,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 # @@ -95,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); //-------------------------------------------------------------------- @@ -117,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 @@ -129,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); @@ -152,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(); @@ -195,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); @@ -203,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); //-------------------------------------------------------------------- @@ -232,9 +240,9 @@ 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); //-------------------------------------------------------------------- @@ -247,4 +255,3 @@ namespace clitk { } // end namespace #endif /* end #define CLITKCOMMON_H */ -