Skip to content
Snippets Groups Projects
Commit 8beb672d authored by Mark Woolrich's avatar Mark Woolrich
Browse files

Initial revision

parent 39047570
No related branches found
No related tags found
No related merge requests found
Log.cc 0 → 100644
/* Log.cc
Mark Woolrich, FMRIB Image Analysis Group
Copyright (C) 1999-2000 University of Oxford */
/* CCOPYRIGHT */
#include "Log.h"
namespace Utilities {
Log* Log::logger = NULL;
void Log::makeDir(const string& pdirname, const string& plogfilename)
{
dir = pdirname;
logfilename = plogfilename;
// make directory to place results into:
// keep adding "+" until directory is made:
int count = 0;
while(true)
{
if(count >= 20)
{
string s("Cannot create directory " + dir);
throw Exception(s.c_str());
}
int ret = system(("mkdir "+ dir).c_str());
if(ret == 0)
{
break;
}
dir = dir + "+";
count++;
}
// setup logfile
logfileout.open((dir + "/" + logfilename).c_str(), ios::out);
logEstablished = true;
}
void Log::setDir(const string& pdirname, const string& plogfilename)
{
dir = pdirname;
logfilename = plogfilename;
// setup logfile
logfileout.open((dir + "/" + logfilename).c_str(), ios::out);
logEstablished = true;
}
}
Log.h 0 → 100644
/* Log.h
Mark Woolrich, FMRIB Image Analysis Group
Copyright (C) 1999-2000 University of Oxford */
/* CCOPYRIGHT */
#include <iostream>
#include <fstream>
#include <string>
#include "newmatap.h"
#include "newmatio.h"
using namespace NEWMAT;
namespace Utilities{
#if !defined(Log_h)
#define Log_h
class Log
{
public:
static Log& getInstance();
~Log() { delete logger; }
/** Makes a directory to place results into:
keeps adding "+" to pdirname until unique directory is made: */
void makeDir(const string& pdirname, const string& plogfilename = "logfile");
/** Sets an existing directory to place results into: */
void setDir(const string& pdirname, const string& plogfilename = "logfile");
const string& getDir() const { return dir; }
const string& getLogFileName() const { return logfilename; }
const string appendFileName(const string& filename) const { return dir + "/" + filename;}
void out(const string& p_fname, const Matrix& p_mat);
void out(const string& p_fname, const RowVector& p_mat);
void out(const string& p_fname, const ColumnVector& p_mat);
ofstream& str();
private:
Log():logEstablished(false) {}
const Log& operator=(Log&);
Log(Log&);
static Log* logger;
string dir;
ofstream logfileout;
string logfilename;
bool logEstablished;
};
inline void Log::out(const string& p_fname, const Matrix& p_mat)
{
if(!logEstablished)
{
logfilename = "logfile";
setDir(".");
}
ofstream out;
out.open((dir + "/" + p_fname).c_str(), ios::out);
out.setf(ios::scientific, ios::floatfield);
for(int i=1; i<=p_mat.Nrows(); i++)
{
for(int j=1; j<=p_mat.Ncols(); j++)
{
out << p_mat(i,j) << " ";
}
out << endl;
}
out.close();
}
inline void Log::out(const string& p_fname, const ColumnVector& p_mat)
{
if(!logEstablished)
{
logfilename = "logfile";
setDir(".");
}
ofstream out;
out.open((dir + "/" + p_fname).c_str(), ios::out);
out.setf(ios::scientific, ios::floatfield);
for(int j=1; j<=p_mat.Nrows(); j++)
{
out << p_mat(j);
out << endl;
}
out.close();
}
inline void Log::out(const string& p_fname, const RowVector& p_mat)
{
if(!logEstablished)
{
logfilename = "logfile";
setDir(".");
}
ofstream out;
out.open((dir + "/" + p_fname).c_str(), ios::out);
out.setf(ios::scientific, ios::floatfield);
for(int j=1; j<=p_mat.Ncols(); j++)
{
out << p_mat(j) << " ";
}
out << endl;
out.close();
}
inline Log& Log::getInstance(){
if(logger == NULL)
logger = new Log();
return *logger;
}
inline ofstream& Log::str() {
if(!logEstablished)
{
logfilename = "logfile";
setDir(".");
}
return logfileout;
}
#endif
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment