X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkCommon.h;h=3729584686bdd1d2510d4603000336fe307a0443;hb=a1ec529a24b721fcfb2c5725f95bcc2c9125b28d;hp=c4d772d97aab121258d2a8c33eaf6fa77b444952;hpb=4a567a442ac0d844a894e5de071d51a505d07f4a;p=clitk.git diff --git a/common/clitkCommon.h b/common/clitkCommon.h index c4d772d..3729584 100644 --- a/common/clitkCommon.h +++ b/common/clitkCommon.h @@ -1,32 +1,28 @@ -#ifndef CLITKCOMMON_H -#define CLITKCOMMON_H +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + 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 -/** - ------------------------------------------------------------------- - * @file clitkCommon.h - * @author David Sarrut - * @date 17 May 2006 07:57:56 + 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. - * @brief + It is distributed under dual licence - -------------------------------------------------------------------*/ + - 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 "clitkPortability.h" - -// std include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include +#include "clitkDD.h" +#include "clitkExceptionObject.h" // itk include (include std) #include @@ -34,6 +30,21 @@ #include #include +// std include +#include + +// Include for "rusage" +#include +#if defined(unix) || defined(__APPLE__) +# include +# include +#elif defined(_WIN32) +# include +# include +#endif + +#define VTK_EXCLUDE_STRSTREAM_HEADERS + //-------------------------------------------------------------------- namespace clitk { @@ -41,24 +52,40 @@ namespace clitk { 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_ 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, + std::ios_base& (*f)(std::ios_base&)=std::dec); //-------------------------------------------------------------------- // Display a progress % @@ -90,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 @@ -102,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); @@ -125,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(); @@ -168,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); @@ -176,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); //-------------------------------------------------------------------- @@ -185,6 +220,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 & list); + //-------------------------------------------------------------------- double cotan(double i); double invcotan(double i); @@ -197,9 +235,23 @@ namespace clitk { template void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output); + //-------------------------------------------------------------------- + void PrintMemoryUsed(); + + //-------------------------------------------------------------------- + // Convert a map to a vector + template + void MapToVecFirst(const M & m, V & v); + 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 */ -