additional/debug/debug.cpp

Go to the documentation of this file.
00001 #ifndef _CONSOLE
00002     //#include "afx.h"
00003 #endif
00004 #include "Debug.h"
00005 #include <stdio.h>
00006 #include <stdarg.h>
00007 //#include <iostream>
00008 //#include <fstream.h>
00009 #include "math/VectorN.h"
00010 #include "math/Vector4.h"
00011 #include "math/Matrixmxn.h"
00012 #include "math/Matrix4x4.h"
00013 #include "kinematics/Configuration.h"
00014 #include "paths/PA_Points.h"
00015 
00016 
00017 //=============================================================================
00018 // DebugMessage
00019 //
00020 // Description: print out a message to the debug console / screen
00021 //=============================================================================
00022 void DebugMessage( const char* message )
00023 {
00024 #ifdef _CONSOLE
00025         printf( message );
00026 #else
00027         //TRACE( message );
00028 #endif
00029 }
00030 
00031 void Log(char *fileName, char *format, ...)
00032 {
00033 #ifdef _DEBUG
00034         va_list vl;
00035         char logString[1024];
00036         //ofstream logFile;
00037         FILE *logFile;
00038         logFile = fopen(fileName, "a+");
00039         //logFile.open(fileName, std::ios::out|std::ios::app);
00040         va_start(vl, format);
00041         vsprintf(logString, format, vl);
00042         //logFile << logString << endl;
00043         fprintf(logFile, "%s\n", logString);
00044         va_end(vl);
00045         fclose(logFile);
00046         //logFile.close();
00047 #endif
00048 }
00049 
00050 void LogVector(char *fileName, VectorN &vec, char *szMsg)
00051 {
00052 #ifdef _DEBUG
00053         char szLog[1024];
00054         if (szMsg != NULL)
00055                 sprintf(szLog, "%s\n", szMsg);
00056         else
00057                 szLog[0]='\0';
00058         for (int i=0; i<vec.Size(); i++)
00059         {
00060                 char szNum[32];
00061                 sprintf( szNum, "%.4f\t", vec[i] );
00062                 strcat(szLog, szNum);
00063         }
00064         Log(fileName, "%s\n", szLog);
00065 #endif
00066 }
00067 
00068 void LogVector(char *fileName, Vector4 &vec, char *szMsg)
00069 {
00070 #ifdef _DEBUG
00071         char szLog[1024];
00072         if (szMsg != NULL)
00073                 sprintf(szLog, "%s\n", szMsg);
00074         else
00075                 szLog[0]='\0';
00076         for (int i=0; i<3; i++)
00077         {
00078                 char szNum[32];
00079                 sprintf( szNum, "%.4f\t", vec[i] );
00080                 strcat(szLog, szNum);
00081         }
00082         Log(fileName, "%s\n", szLog);
00083 #endif
00084 }
00085 
00086 void LogMatrix(char *fileName, Matrixmxn &matrix, char *szMsg)
00087 {
00088 #ifdef _DEBUG
00089         char szLog[1024];
00090         if (szMsg != NULL)
00091                 sprintf(szLog, "%s\n", szMsg);
00092         else
00093                 szLog[0]='\0';
00094         for (int i=0; i<matrix.GetRows(); i++)
00095         {
00096                 for (int j=0; j<matrix.GetColumns(); j++)
00097                 {
00098                         char szNum[32];
00099                         sprintf(szNum, "%.4f\t", matrix(i, j));
00100                         if ( strlen(szLog)<(1022-strlen(szNum)) )
00101                                 strcat(szLog, szNum);
00102                 }
00103                 
00104                 if (strlen(szLog) < 1023)
00105                         strcat(szLog, "\n");
00106         }
00107         Log(fileName, "%s", szLog);
00108 #endif
00109 }
00110 
00111 void LogMatrix(char *fileName, Matrix4x4 &matrix, char *szMsg)
00112 {
00113 #ifdef _DEBUG
00114         char szLog[1024];
00115         if (szMsg != NULL)
00116                 sprintf(szLog, "%s\n", szMsg);
00117         else
00118                 szLog[0]='\0';
00119         for (int i=0; i<4; i++)
00120         {
00121                 for (int j=0; j<4; j++)
00122                 {
00123                         char szNum[32];
00124                         sprintf(szNum, "%.4f\t", matrix(i, j));
00125                         if ( strlen(szLog)<(1022-strlen(szNum)) )
00126                                 strcat(szLog, szNum);
00127                 }
00128                 
00129                 if (strlen(szLog) < 1023)
00130                         strcat(szLog, "\n");
00131         }
00132         Log(fileName, "%s", szLog);
00133 #endif
00134 }
00135 
00136 void LogMessage(char *fileName, char *szMsg)
00137 {
00138 #ifdef _DEBUG
00139         Log(fileName, "%s\n", szMsg);
00140 #endif
00141 }
00142 
00143 void LogConfiguration(char *fileName, Configuration &config)
00144 {
00145         char szConfig[200];
00146         char szValue[100];
00147         int nDof = config.DOF();
00148         strcpy(szConfig, "[");
00149         for(int d=0; d<nDof; d++)
00150         {                       
00151                 sprintf(szValue, "%f,", config[d]);
00152                 strcat(szConfig, szValue);
00153         }
00154         szConfig[strlen(szConfig)-1]=']';
00155         
00156         Log(fileName, "%s", szConfig);
00157 }
00158 
00159 void LogPath(char *fileName, PA_Points &path)
00160 {
00161         int nPathLen = path.Size();
00162         Log(fileName, "%d", nPathLen);
00163         for(int k=0; k<nPathLen; k++)
00164         {
00165                 LogConfiguration(fileName, path[k]);
00166         }
00167 }
00168 

Generated on Sat Apr 1 21:30:30 2006 for Motion Planning Kernel by  doxygen 1.4.6-NO