debug.cpp

00001 #include "debug.h"
00002 
00003 using namespace irr;
00004 using namespace core;
00005 
00006 Debug::Debug(IrrlichtDevice* d, c8* fileName, rect<s32> position)
00007 {
00008     //ctor
00009     device = d;
00010     writeTo = DBGT_CONSOLE_AND_FILE;
00011         if (device == NULL)
00012         {
00013                 fprintf(stderr, "class Debug ctor: arg is NULL.\n");
00014                 return;
00015         }
00016         logFile = device->getFileSystem()->createAndWriteFile(fileName);
00017         if (logFile == NULL)
00018         {
00019                 fprintf(stderr, "class Debug ctor: cannot create log file.\n");
00020         }
00021         guienv = device->getGUIEnvironment();
00022         if (guienv == NULL)
00023         {
00024                 fprintf(stderr, "class Debug ctor: cannot create gui environment.\n");
00025         }
00026         else
00027         {
00028         dbgScreen = guienv->addStaticText(L"Debug:", position, true);
00029         }
00030     log("create Debug", fileName);
00031 }
00032 
00033 Debug::~Debug()
00034 {
00035     //dtor
00036     if (logFile)
00037     {
00038         logFile->drop();
00039     }
00040 }
00041 
00042 void Debug::log(const stringc text)
00043 {
00044     stringc tmp(text);
00045     tmp.append("\r\n");
00046     write(tmp);
00047 }
00048 
00049 void Debug::log(const stringw text)
00050 {
00051     stringc tmp(text.c_str(), text.size());
00052     tmp.append("\r\n");
00053     write(tmp);
00054 }
00055 
00056 void Debug::log(const stringw text, const stringw value)
00057 {
00058     stringc tmp(text.c_str(), text.size());
00059     tmp.append(": ");
00060     tmp.append(stringc(value.c_str(), value.size()));
00061     tmp.append("\r\n");
00062     write(tmp);
00063 }
00064 
00065 void Debug::log(const stringc text, const c8* description, const stringc value)
00066 {
00067     stringc tmp(text);
00068     tmp.append(" ");
00069     tmp.append(description);
00070     tmp.append(": ");
00071     tmp.append(value);
00072     tmp.append("\r\n");
00073     write(tmp);
00074 }
00075 
00076 void Debug::log(const c8* text, const stringc description, const c8* value)
00077 {
00078     stringc tmp(text);
00079     tmp.append(" ");
00080     tmp.append(description);
00081     tmp.append(": ");
00082     tmp.append(value);
00083     tmp.append("\r\n");
00084     write(tmp);
00085 }
00086 
00087 void Debug::log(const c8* text)
00088 {
00089     stringc tmp(text);
00090     tmp.append("\r\n");
00091     write(tmp);
00092 }
00093 
00094 void Debug::log(const c8* text, const c8* value)
00095 {
00096     stringc tmp(text);
00097     tmp.append(": ");
00098     tmp.append(value);
00099     tmp.append("\r\n");
00100     write(tmp);
00101 }
00102 
00103 void Debug::log(const c8* text, const c8* description, const c8* value)
00104 {
00105     stringc tmp(text);
00106     tmp.append(" ");
00107     tmp.append(description);
00108     tmp.append(": ");
00109     tmp.append(value);
00110     tmp.append("\r\n");
00111     write(tmp);
00112 }
00113 
00114 void Debug::log(const c8* text, const s32 value)
00115 {
00116     stringc tmp(text);
00117     tmp.append(": ");
00118     c8* buf = new c8[32];
00119     sprintf(buf, "%i", value);
00120     tmp.append(buf);
00121     tmp.append("\r\n");
00122     write(tmp);
00123     delete [] buf;
00124 }
00125 
00126 void Debug::log(const c8* text, const u32 value)
00127 {
00128     stringc tmp(text);
00129     tmp.append(": ");
00130     c8* buf = new c8[32];
00131     sprintf(buf, "%i", value);
00132     tmp.append(buf);
00133     tmp.append("\r\n");
00134     write(tmp);
00135     delete [] buf;
00136 }
00137 
00138 void Debug::log(const c8* text, const u32 description, const u32 value)
00139 {
00140     stringc tmp(text);
00141     tmp.append(": ");
00142     c8* buf = new c8[64];
00143     sprintf(buf, "%i with %i", description, value);
00144     tmp.append(buf);
00145     tmp.append("\r\n");
00146     write(tmp);
00147     delete [] buf;
00148 }
00149 
00150 void Debug::log(const c8* text, const f32 value)
00151 {
00152     stringc tmp(text);
00153     tmp.append(": ");
00154     c8* buf = new c8[32];
00155     sprintf(buf, "%.2f", value);
00156     tmp.append(buf);
00157     tmp.append("\r\n");
00158     write(tmp);
00159     delete [] buf;
00160 }
00161 
00162 void Debug::log(const c8* text, const stringw value)
00163 {
00164     stringc tmp(text);
00165     tmp.append(": ");
00166     stringc tmp2(value.c_str(), value.size());
00167     tmp.append(tmp2);
00168     tmp.append("\r\n");
00169     write(tmp);
00170 }
00171 
00172 void Debug::log(const c8* text, const stringc value)
00173 {
00174     stringc tmp(text);
00175     tmp.append(": ");
00176     tmp.append(value);
00177     tmp.append("\r\n");
00178     write(tmp);
00179 }
00180 
00181 void Debug::log(const c8* text, const vector3d<f32> vector)
00182 {
00183     stringc tmp(text);
00184     tmp.append(": ");
00185     c8* buf = new c8[32];
00186     sprintf(buf, "x=%.2f ", vector.X);
00187     tmp.append(buf);
00188     sprintf(buf, "y=%.2f ", vector.Y);
00189     tmp.append(buf);
00190     sprintf(buf, "z=%.2f", vector.Z);
00191     tmp.append(buf);
00192     tmp.append("\r\n");
00193     write(tmp);
00194     delete [] buf;
00195 }
00196 
00197 void Debug::write(stringc text)
00198 {
00199     switch (writeTo)
00200     {
00201         case DBGT_CONSOLE:
00202         {
00203                 fprintf(stdout, "%s", text.c_str());
00204         }
00205         break;
00206 
00207         case DBGT_FILE:
00208         {
00209             if (logFile)
00210             {
00211                 logFile->write((void*) text.c_str(), text.size());
00212             }
00213         }
00214         break;
00215 
00216         case DBGT_CONSOLE_AND_FILE:
00217         {
00218             fprintf(stdout, "%s", text.c_str());
00219             if (logFile)
00220             {
00221                 logFile->write((void*) text.c_str(), text.size());
00222             }
00223         }
00224         break;
00225 
00226         default:
00227         {
00228                 // error
00229                 fprintf(stderr, "class Debug log(): do not know where to write to\n");
00230         }
00231         break;
00232     }
00233 }
00234 
00235 void Debug::setOutput(DEBUG_TYPE dbgType)
00236 {
00237     writeTo = dbgType;
00238 }
00239 
00240 void Debug::show(const c8* text)
00241 {
00242     stringw tmp(text);
00243 
00244     dbgElements.push_back(tmp);
00245 }
00246 
00247 void Debug::show(const c8* text, const u32 value)
00248 {
00249     stringw tmp(text);
00250     tmp.append(": ");
00251     c8* buf = new c8[32];
00252         sprintf(buf, "%i", value);
00253     tmp.append(buf);
00254 
00255     dbgElements.push_back(tmp);
00256     delete [] buf;
00257 }
00258 
00259 void Debug::show(const c8* text, const s32 value)
00260 {
00261     stringw tmp(text);
00262     tmp.append(": ");
00263     c8* buf = new c8[32];
00264         sprintf(buf, "%i", value);
00265     tmp.append(buf);
00266 
00267     dbgElements.push_back(tmp);
00268     delete [] buf;
00269 }
00270 
00271 void Debug::show(const c8* text, const f32 value, bool cutDecimals)
00272 {
00273     stringw tmp(text);
00274     tmp.append(": ");
00275     c8* buf = new c8[32];
00276     if (cutDecimals)
00277     {
00278         sprintf(buf, "%.2f", value);
00279     }
00280     else
00281     {
00282         sprintf(buf, "%f", value);
00283     }
00284     tmp.append(buf);
00285 
00286     dbgElements.push_back(tmp);
00287     delete [] buf;
00288 }
00289 
00290 void Debug::show(const c8* text, const vector3d<f32> vector)
00291 {
00292     stringw tmp(text);
00293     tmp.append(": ");
00294     c8* buf = new c8[32];
00295     sprintf(buf, "x=%.2f ", vector.X);
00296     tmp.append(buf);
00297     sprintf(buf, "y=%.2f ", vector.Y);
00298     tmp.append(buf);
00299     sprintf(buf, "z=%.2f", vector.Z);
00300     tmp.append(buf);
00301 
00302     dbgElements.push_back(tmp);
00303     delete [] buf;
00304 }
00305 
00306 void Debug::update()
00307 {
00308     u32 nElements = dbgElements.size();
00309     u32 i;
00310     stringw tmp;
00311     for (i=0; i<nElements; i++)
00312     {
00313         tmp.append(dbgElements[i]);
00314         tmp.append("\n");
00315     }
00316     if (dbgScreen)
00317     {
00318         dbgScreen->setText(tmp.c_str());
00319     }
00320     dbgElements.clear();
00321 }
00322 
00323 

Generated on Sun Dec 2 17:09:57 2007 for Swarm by  doxygen 1.4.6-NO