]> Creatis software - clitk.git/commitdiff
add option to display memory usage if statgrab is installed
authordsarrut <dsarrut>
Tue, 15 Feb 2011 10:41:19 +0000 (10:41 +0000)
committerdsarrut <dsarrut>
Tue, 15 Feb 2011 10:41:19 +0000 (10:41 +0000)
add fromString to convert numbers from String

common/clitkCommon.cxx
common/clitkCommon.h
common/clitkCommon.txx

index 7afeb074e4da048bdc4af1a9b6ae0e429c09dcd8..df47f51ab943d3ed55177569165d9a8fd4c24306 100644 (file)
 #ifndef CLITKCOMMON_CXX
 #define CLITKCOMMON_CXX
 
+// clitk include 
 #include "clitkCommon.h"
+
+// std include 
 #include <fstream>
 #include <iomanip>
 #include <sstream>
+#include <cerrno>
 
 //------------------------------------------------------------------
 // skip line which begin with a sharp '#'
@@ -240,7 +244,9 @@ void clitk::openFileForReading(std::ifstream & is, const std::string & filename)
 {
   is.open(filename.c_str(), std::ios::in);
   if ( is.fail() ) {
-    clitkExceptionMacro("Could not open file (for reading): " << filename);
+    clitkExceptionMacro("Could not open file for reading: " 
+                        << filename << ". Error is : <" 
+                        << strerror(errno) << ">");
   }
 }
 //--------------------------------------------------------------------
@@ -251,7 +257,9 @@ void clitk::openFileForWriting(std::ofstream & os, const std::string & filename)
 {
   os.open(filename.c_str(), std::ios::out);
   if ( os.fail() ) {
-    clitkExceptionMacro("Could not open file (for writing): " << filename);
+    clitkExceptionMacro("Could not open file for writing: " 
+                        << filename << ". Error is : <" 
+                        << strerror(errno) << ">");
   }
 }
 //--------------------------------------------------------------------
@@ -308,5 +316,20 @@ void clitk::readDoubleFromFile(const std::string & filename, std::vector<double>
 //--------------------------------------------------------------------
 
 
+//--------------------------------------------------------------------
+void clitk::PrintMemoryUsed()
+{
+#if defined(unix) || defined(__APPLE__)
+  rusage usage;  
+  getrusage(RUSAGE_SELF, &usage);
+  DD(usage.ru_maxrss);        /* maximum resident set size */ 
+  // DD(usage.ru_ixrss);         /* integral shared memory size */
+  // DD(usage.ru_idrss);         /* integral unshared data size */
+  // DD(usage.ru_isrss);         /* integral unshared stack size */
+#endif
+}
+//--------------------------------------------------------------------
+
+
 #endif /* end #define CLITKCOMMON_CXX */
 
index e3145b1d840425812feef4f2a6f4773c7073b90e..44f9940a16189ce6814ec76174db5282bacacc18 100644 (file)
 #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 {
 
@@ -71,6 +81,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 %
@@ -193,6 +206,9 @@ namespace clitk {
   template<class ImageType>
   void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output);
 
+  //--------------------------------------------------------------------
+  void PrintMemoryUsed();
+
 #include "clitkCommon.txx"
 
 } // end namespace
index b5a34712a9988438db9ec4afbf06c35d21092f76..553c9b5f1df523ab1efdd0cdbc3aa63f7dc9598b 100644 (file)
@@ -76,6 +76,19 @@ std::string toString(const T & t)
 }
 //--------------------------------------------------------------------
 
+
+//--------------------------------------------------------------------
+// http://www.codeguru.com/forum/showthread.php?t=231054
+template <class T>
+bool fromString(T& t, const std::string& s, 
+                std::ios_base& (*f)(std::ios_base&))
+{
+  std::istringstream iss(s);
+  return !(iss >> f >> t).fail();
+}
+//--------------------------------------------------------------------
+
+
 //--------------------------------------------------------------------
 // Convert float*, double* ... to string
 template<class T>