#include <Error.h>
Fonctions membres publiques | |
Error () | |
~Error () | |
void | SetLog (const char *pLog) |
Définie le nom du fichier de log. | |
void | SetLoc (const char *pLoc) |
Definie le nom de la fonction courant. | |
void | SetLangue (const char *pFile) |
Langue des messages d'erreur. | |
void | Throw (unsigned int iLine, unsigned int iCode) |
Génère une exception. | |
void | AddFunc (const char *pFunc, const char *pFile) |
Ajoute une fonction à la liste d'appel. | |
void | Perror (unsigned int iCode) |
Affiche la description de l'erreur. |
Définition à la ligne 81 du fichier Error.h.
|
Initalisé par defaut en langue "ErrorCode.FR". Définition à la ligne 19 du fichier Error.cpp. Références ThreadCallStack::nbInstance, SetLangue(), et ThreadId(). 00020 { 00021 unsigned int i = 0; 00022 00023 loc = ""; 00024 line = 0; 00025 currentCallStack = NULL; 00026 00027 for(i = 0; i < callStacks.size(); i++) 00028 { 00029 if(callStacks[i]->id == ThreadId()) 00030 { 00031 currentCallStack = callStacks[i]; 00032 break; 00033 } 00034 } 00035 00036 if(!currentCallStack) 00037 { 00038 callStacks.push_back(new ThreadCallStack); 00039 currentCallStack = callStacks.back(); 00040 } 00041 00042 currentCallStack->nbInstance++; 00043 00044 SetLangue(langue.data()); 00045 }
|
|
Libére la mémoire proprement. Définition à la ligne 47 du fichier Error.cpp. Références ThreadCallStack::nbInstance. 00048 { 00049 unsigned int i = 0; 00050 00051 currentCallStack->nbInstance--; 00052 00053 if(currentCallStack->nbInstance == 0) 00054 { 00055 for(i = 0; i < callStacks.size(); i++) 00056 { 00057 if(callStacks[i] == currentCallStack) 00058 { 00059 callStacks.erase(callStacks.begin() + i); 00060 break; 00061 } 00062 } 00063 00064 delete currentCallStack; 00065 } 00066 00067 if(callStacks.size() == 0) 00068 { 00069 for(i = 0; i < descError.size(); i++) 00070 delete descError[i]; 00071 } 00072 }
|
|
Ajoute une fonction à la suite de la pile d'appel (LIFO).
Définition à la ligne 105 du fichier Error.cpp. Références ThreadCallStack::stack.
|
|
Affiche et log la description de l'exception enregistrée par le systeme.
Définition à la ligne 135 du fichier Error.cpp. Références ThreadCallStack::id, et ThreadCallStack::stack. 00136 { 00137 time_t tTime; 00138 tm *tmTime; 00139 unsigned int i = 0; 00140 00141 if(iCode == ERROR_C_NOERROR) 00142 return; 00143 00144 tTime = time(NULL); 00145 tmTime = localtime(&tTime); 00146 00147 LogError("\n"); 00148 00149 for(i = 0; i < descError.size(); i++) 00150 { 00151 if(descError[i]->no == iCode) 00152 break; 00153 } 00154 00155 LogError("%02i/%02i/%02i %02i:%02i:%02i : %5i ERROR in '%s' (file '%s:%i'), code %i : %s\n", 00156 tmTime->tm_mday, tmTime->tm_mon, tmTime->tm_year + 1900, tmTime->tm_hour, tmTime->tm_min, tmTime->tm_sec, 00157 currentCallStack->id, 00158 currentCallStack->stack.front()->func.data(), 00159 currentCallStack->stack.front()->file.data(), 00160 currentCallStack->stack.front()->line, 00161 iCode, 00162 (i < descError.size() ? descError[i]->desc.data() : "No description") 00163 ); 00164 00165 currentCallStack->stack.erase(currentCallStack->stack.begin()); 00166 00167 while(currentCallStack->stack.size()) 00168 { 00169 LogError("%02i/%02i/%02i %02i:%02i:%02i : %5i from '%s' (file '%s:%i')\n", 00170 tmTime->tm_mday, tmTime->tm_mon, tmTime->tm_year + 1900, tmTime->tm_hour, tmTime->tm_min, tmTime->tm_sec, 00171 currentCallStack->id, 00172 currentCallStack->stack.front()->func.data(), 00173 currentCallStack->stack.front()->file.data(), 00174 currentCallStack->stack.front()->line 00175 ); 00176 00177 currentCallStack->stack.erase(currentCallStack->stack.begin()); 00178 } 00179 }
|
|
Permet de définir la langue dans laquelle seront les messages d'erreurs (fichier ErrorCode.lang).
Définition à la ligne 74 du fichier Error.cpp. Références ERROR_BUFFER, et gettok(). Référencé par Error(). 00075 { 00076 if(descError.size() == 0) 00077 { 00078 char desc[ERROR_BUFFER]; 00079 fstream file(pFile, fstream::in); 00080 unsigned int i; 00081 00082 for(i = 0; i < descError.size(); i++) 00083 delete descError[i]; 00084 00085 if(file.is_open()) 00086 { 00087 descError.clear(); 00088 00089 while(file.good()) 00090 { 00091 file.getline(desc, ERROR_BUFFER); 00092 descError.push_back(new ErrorDesc); 00093 descError.back()->no = atoi(gettok(desc, 0, " :\t\n\r")); 00094 descError.back()->desc = gettok(desc, 1, ":\t\n\r"); 00095 } 00096 file.close(); 00097 } 00098 else 00099 cerr << "Canot open error language file" << endl; 00100 00101 langue = pFile; 00102 } 00103 }
|
|
Définie le nom de la fonction en cour d'éxécution.
Définition à la ligne 121 du fichier Error.h. 00122 { 00123 loc = pLoc; 00124 };
|
|
Définie le nom du fichier de log des erreurs.
Définition à la ligne 112 du fichier Error.h. 00113 { 00114 log = pLog; 00115 };
|
|
Enregistre le numéro de la ligne et génère une exception
Définition à la ligne 137 du fichier Error.h. 00138 {
00139 line = iLine;
00140 throw iCode;
00141 };
|