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;