Salome HOME
22170: [CEA 704] Redirect NETGEN outup in a log file
authoreap <eap@opencascade.com>
Tue, 10 Sep 2013 13:41:19 +0000 (13:41 +0000)
committereap <eap@opencascade.com>
Tue, 10 Sep 2013 13:41:19 +0000 (13:41 +0000)
redirect cout-output to the file as well

src/NETGENPlugin/NETGENPlugin_Mesher.cxx
src/NETGENPlugin/NETGENPlugin_Mesher.hxx

index 5bbdc5b62efadf4bdb2968f6e4e3759efd647b68..86736d5185f1734c7269b0a97a9f56bcc1198d45 100644 (file)
@@ -3592,13 +3592,17 @@ NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper()
 {
   Ng_Init();
 
+  // redirect all netgen output (mycout,myerr,cout) to _outputFileName
   _isComputeOk    = false;
   _outputFileName = getOutputFileName();
   netgen::mycout  = new ofstream ( _outputFileName.c_str() );
-  netgen::myerr = netgen::mycout;
+  netgen::myerr   = netgen::mycout;
+  _coutBuffer     = std::cout.rdbuf();
 #ifdef _DEBUG_
   cout << "NOTE: netgen output is redirected to file " << _outputFileName << endl;
 #endif
+  std::cout.rdbuf( netgen::mycout->rdbuf() );
+
   _ngMesh = Ng_NewMesh();
 }
 
@@ -3613,6 +3617,7 @@ NETGENPlugin_NetgenLibWrapper::~NETGENPlugin_NetgenLibWrapper()
   Ng_DeleteMesh( _ngMesh );
   Ng_Exit();
   NETGENPlugin_Mesher::RemoveTmpFiles();
+  std::cout.rdbuf( _coutBuffer );
 #ifdef _DEBUG_
   if( _isComputeOk )
 #endif
index 1bf8b5bf31fab02375ac1593d8f4a0a5859b9d28..41df61b2330b88f247f2d08a75c7689e85f273c6 100644 (file)
@@ -91,6 +91,8 @@ struct NETGENPLUGIN_EXPORT NETGENPlugin_NetgenLibWrapper
   std::string getOutputFileName();
   void        removeOutputFile();
   std::string _outputFileName;
+
+  std::streambuf* _coutBuffer;   // to re-/store cout.rdbuf()
 };
 
 //=============================================================================