00001 #define WANT_STREAM
00002
00003 #include "log.h"
00004 #include <iostream>
00005 #include <matrix/newmatio.h>
00006 #include <fstream>
00007 #include <time.h>
00008
00009 #ifdef __unix__
00010 void log::_strtime(char* output)
00011 {
00012 time_t now = time(NULL);
00013 struct tm* local = localtime(&now);
00014 char* tempstring = asctime(local);
00015 tempstring[19] = '\0';
00016 strcpy(output,tempstring);
00017 }
00018 #endif
00019
00020
00021 void log::write(string log) {
00022 ofstream logfile;
00023 char timeStr [19];
00024 #ifndef __WINDOWS__
00025 _strtime( timeStr );
00026 #else
00027 _strtime_s( timeStr );
00028 #endif
00029
00030 logfile.open (m_filename, ios::out | ios::app);
00031 logfile << timeStr << " " << log << "\n";
00032 logfile.close();
00033 }
00034
00035 void log::write(string log, double data) {
00036 ofstream logfile;
00037 char timeStr [19];
00038 #ifndef __WINDOWS__
00039 _strtime( timeStr );
00040 #else
00041 _strtime_s( timeStr );
00042 #endif
00043 logfile.open (m_filename, ios::out | ios::app);
00044 logfile << timeStr << " " << log << ": " << data << "\n";
00045 logfile.close();
00046 }
00047
00048 void log::write(string log, int data) {
00049 ofstream logfile;
00050 char timeStr [19];
00051 #ifndef __WINDOWS__
00052 _strtime( timeStr );
00053 #else
00054 _strtime_s( timeStr );
00055 #endif
00056 logfile.open (m_filename, ios::out | ios::app);
00057 logfile << timeStr << " " << log << ": " << data << "\n";
00058 logfile.close();
00059 }
00060
00061 void log::write(string log, Matrix data) {
00062 ofstream logfile;
00063 char timeStr [19];
00064 #ifndef __WINDOWS__
00065 _strtime( timeStr );
00066 #else
00067 _strtime_s( timeStr );
00068 #endif
00069 logfile.open (m_filename, ios::out | ios::app);
00070 logfile << timeStr << " " << log << "\n";
00071 logfile << "Dim: [" << data.Nrows() << "," << data.Ncols() << "]\n";
00072 logfile.close();
00073 if(m_debug) {
00074 ofstream matrixfile;
00075 matrixfile.open (log.append("-MATRIX.log").c_str());
00076 matrixfile << setw(10) << setprecision(5) << data;
00077 matrixfile.close();
00078 }
00079 }
00080
00081 void log::write(string log, ExampleModel data) {
00082 ofstream logfile;
00083 char timeStr [19];
00084 #ifndef __WINDOWS__
00085 _strtime( timeStr );
00086 #else
00087 _strtime_s( timeStr );
00088 #endif
00089 logfile.open (m_filename, ios::out | ios::app);
00090 logfile << timeStr << " " << log << "\n";
00091 logfile << "Vertices: " << data.getVertexs().size() << "\n";
00092 logfile << "Faces: " << data.getFaces().size() << "\n";
00093 logfile.close();
00094 if(m_debug) {
00095 ofstream modelfile;
00096 modelfile.open (log.append("-MODEL.log").c_str());
00097 for(int i=0;i<(int)data.getVertexs().size();i++) {
00098 modelfile << "Index: " << data.getVertexs()[i]->getIndex() << "\n";
00099 modelfile << "Normal: (" << data.getVertexs()[i]->getNormal()->x;
00100 modelfile << "," << data.getVertexs()[i]->getNormal()->y;
00101 modelfile << "," << data.getVertexs()[i]->getNormal()->z << ")\n";
00102 modelfile << "Coordinate: (" << data.getVertexs()[i]->getCoordinates()->x;
00103 modelfile << "," << data.getVertexs()[i]->getCoordinates()->y;
00104 modelfile << "," << data.getVertexs()[i]->getCoordinates()->z << ")\n";
00105 }
00106 modelfile.close();
00107 }
00108 }
00109
00110 void log::write(string log, ReferenceModel data) {
00111 ofstream logfile;
00112 char timeStr [19];
00113 #ifndef __WINDOWS__
00114 _strtime( timeStr );
00115 #else
00116 _strtime_s( timeStr );
00117 #endif
00118 logfile.open (m_filename, ios::out | ios::app);
00119 logfile << timeStr << " " << log << "\n";
00120 logfile << "Vertices: " << data.getVertexs().size() << "\n";
00121 logfile << "Faces: " << data.getFaces().size() << "\n";
00122 logfile.close();
00123 if(m_debug) {
00124 ofstream modelfile;
00125 modelfile.open (log.append("-MODEL.log").c_str());
00126 modelfile << "Vertices: " << data.getVertexs().size() << "\n";
00127 modelfile << "faces: " << data.getFaces().size() << "\n";
00128 for(int i=0;i<(int)data.getVertexs().size();i++) {
00129 modelfile << "Index: " << data.getVertexs()[i]->getIndex() << "\n";
00130 modelfile << "Normal: (" << data.getVertexs()[i]->getNormal()->x;
00131 modelfile << "," << data.getVertexs()[i]->getNormal()->y;
00132 modelfile << "," << data.getVertexs()[i]->getNormal()->z << ")\n";
00133 modelfile << "Coordinate: (" << data.getVertexs()[i]->getCoordinates()->x;
00134 modelfile << "," << data.getVertexs()[i]->getCoordinates()->y;
00135 modelfile << "," << data.getVertexs()[i]->getCoordinates()->z << ")\n";
00136 }
00137 modelfile.close();
00138 }
00139 }
00140
00141 void log::clear() {
00142 ofstream logfile;
00143 logfile.open (m_filename, ios::out);
00144 logfile << "";
00145 logfile.close();
00146 }
00147
00148 void log::setDebug(bool debug) {
00149 m_debug = debug;
00150 }
00151
00152 const char* log::m_filename = "PCG.log";
00153 bool log::m_debug = false;