debug.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <string>
00030
00031 #include <sofa/helper/system/thread/debug.h>
00032 #include <sofa/helper/system/thread/CTime.h>
00033
00034 namespace sofa
00035 {
00036
00037 namespace helper
00038 {
00039
00040 namespace system
00041 {
00042
00043 namespace thread
00044 {
00045
00046 int Trace::mTraceLevel = 0;
00047 int Trace::mNbInstance = 0;
00048 Trace mySingletonTrace;
00049
00050
00051 Trace::Trace()
00052 {
00053
00054 if( mNbInstance != 0 )
00055 print(TRACE_WARNING, "Multiple instance of a singleton class");
00056
00057 #ifdef TRACE_ENABLE
00058
00059 #else
00060
00061 #endif
00062
00063 mNbInstance++;
00064 }
00065
00066 void Trace::setTraceLevel(int level)
00067 {
00068 mTraceLevel = level;
00069 }
00070
00071 void Trace::print(int level, const char *chaine)
00072 {
00073 switch( level ){
00074 case TRACE_DEBUG:
00075 printf("DEBUG: %s\n",chaine);
00076 break;
00077
00078 case TRACE_INFO:
00079 printf("INFO: %s\n", chaine);
00080 break;
00081
00082 case TRACE_WARNING:
00083 printf("WARNING: %s\n", chaine);
00084 break;
00085
00086 case TRACE_ERROR:
00087 printf("ERROR: %s\n", chaine );
00088 exit(0);
00089 }
00090 }
00091
00092 TraceProfile::TraceProfile(const char *name, int index, int size)
00093 {
00094 this->index = index;
00095 this->name = new char[strlen(name)+1];
00096 strcpy( this->name, name);
00097
00098 this->size = size;
00099 this->times = new int[size];
00100 int i;
00101 for(i = 0; i < size; i++)
00102 this->times[i] = 0;
00103 }
00104
00105 TraceProfile::~TraceProfile()
00106 {
00107 delete( name );
00108 }
00109
00110 void TraceProfile::addTime(int instant, int time)
00111 {
00112 times[instant] += time;
00113 }
00114
00115 void TraceProfile::begin()
00116 {
00117 beginTime = CTime::getTime();
00118 }
00119
00120 void TraceProfile::end(int instant)
00121 {
00122 endTime = CTime::getTime();
00123 times[instant] += (int)(endTime-beginTime);
00124 }
00125
00126 }
00127
00128 }
00129
00130 }
00131
00132 }
00133