ISCE_INSAR/components/iscesys/StdOE/include/StdOE.h

187 lines
6.2 KiB
C++

#ifndef StdOE_h
#define StdOE_h
#ifndef MESSAGE
#define MESSAGE cout << "file " << __FILE__ << " line " << __LINE__ << endl;
#endif
#ifndef ERR_MESSAGE
#define ERR_MESSAGE cout << "Error in file " << __FILE__ << " at line " << __LINE__ << " Exiting" << endl; exit(1);
#endif
#include <cmath>
#include <sstream>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <complex>
#include <cctype>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
using namespace std;
/**
\brief
* Class to handle standard output and standar error
* The class provides a set of convinient methods to write standard output and error on a specified device (screen, file).
* It consists of static methods and member variables so that they can be used without passing an instance to the calling function.
**/
class StdOE
{
public:
/// Consrtuctor
StdOE()
{
}
/// Destructor
~StdOE()
{
}
/**
* Returns the value of StdErr, i.e. device where the standard error is ridirected.
@return \c char StdErr.
@see StdErr.
**/
static char getStdErr(){return StdErr;}
/**
* Returns the value of StdOut, i.e. device where the standard output is ridirected.
@return \c char StdOut.
@see StdOut.
**/
static char getStdOut(){return StdOut;}
/**
* Converts a character array received from FORTRAN to a C string.
@param word character array.
@param len lenght of the character arrray.
@return \c string character array in string format.
**/
static string getString(char * word, long int len);
/**
* Sets the standard error device. The default is screen.
@param stdErr standard error device i.e. file or screen.
**/
static void setStdErr(string stdErr);
/**
* Sets a tag that precedes the date in the log file.
@param tag string to prepend to the date and log message.
@see setStdLogFile().
@see writeStdLog().
**/
static void setStdLogFileTag(string tag);
/**
* Sets a tag that precedes the date in the standard output file if the output device is a file.
@param tag string to prepend to the date and output message.
@see setStdOutFile().
@see setStdOut().
@see writeStdOut().
**/
static void setStdErrFileTag(string tag);
/**
* Sets a tag that precedes the date in the standard error file if the output device is a file.
@param tag string to prepend to the date and output message.
@see setStdErrFile().
@see setStdErr().
@see writeStdErr().
**/
static void setStdOutFileTag(string tag);
/**
* Sets the name of the file where the log is redirected.
@param stdLogFile log filename.
**/
static void setStdLogFile(string stdLogFile);
/**
* Sets the name of the file where the standard error is redirected. StdErr is set automatically to 'f', i.e. file.
@param stdErrFile standard error filename.
@see StdErr.
**/
static void setStdErrFile(string stdErrFile);
/**
* Sets the standard output device. The default is screen.
@param stdOut standard output device i.e. file or screen.
**/
static void setStdOut(string stdOut);
/**
* Sets the name of the file where the standard output is redirected. StdOut is set automatically to 'f', i.e. file.
@param stdOutFile standard output filename.
@see StdOut.
**/
static void setStdOutFile(string stdOutFile);
/**
* Writes the string message on screen.
@param message string to be displayed on screen.
**/
static void writeStd(string message);
/**
* Writes the string message on the preselected standard error device. If the device is a file,
* it is appended at the end and preceeded by the date in the format Www Mmm dd hh:mm:ss yyyy (see asctime() C++ function documentation).
@param message string to be written on the standard error device.
@see asctime()
**/
static void writeStdErr(string message);
/**
* Writes the string message in the file "filename".
* The message is appended at the end and preceeded by the date in the format Www Mmm dd hh:mm:ss yyyy (see asctime() C++ function documentation).
@param filename name of the file where the string is written.
@param message string to be written into the file.
@see asctime()
**/
static void writeStdFile(string filename,string message);
/**
* Writes the string message on the preselected standard output device. If the device is a file,
* it is appended at the end and preceeded by the date in the format Www Mmm dd hh:mm:ss yyyy (see asctime() C++ function documentation).
@param message string to be written on the standard error device.
@see asctime()
**/
static void writeStdOut(string message);
/**
* Writes the string message in log file FilenameLog.
* The message is appended at the end and preceeded by the date in the format Www Mmm dd hh:mm:ss yyyy (see asctime() C++ function documentation).
@param message string to be written in the log file FilenameLog.
@see asctime()
**/
static void writeStdLog(string message);
private:
//variables
static ofstream FileErr;
static ofstream FileOut;
static ofstream FileLog;
static string FilenameErr;
static string FilenameOut;
static string FilenameLog;
static string FileOutTag;
static string FileErrTag;
static string FileLogTag;
static char StdOut;
static char StdErr;
};
#endif //StdOE_h