Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

Référence de la classe Error

Gestion d'erreur. Plus de détails...

#include <Error.h>

Liste de tous les membres

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.


Description détaillée

Sytème de gestion des exception (localisation, désignation).

Définition à la ligne 81 du fichier Error.h.


Documentation des contructeurs et destructeur

Error::Error  ) 
 

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 }

Error::~Error  ) 
 

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 }


Documentation des fonctions membres

void Error::AddFunc const char *  pFunc,
const char *  pFile
 

Ajoute une fonction à la suite de la pile d'appel (LIFO).

Paramètres:
pFunc nom de la fonction courante.
pFile nom du fichier de la fonction.

Définition à la ligne 105 du fichier Error.cpp.

Références ThreadCallStack::stack.

00106 {
00107     currentCallStack->stack.push_back(new FuncInfos(pFunc, pFile, line));
00108 }

void Error::Perror unsigned int  iCode  ) 
 

Affiche et log la description de l'exception enregistrée par le systeme.

Paramètres:
iCode code de l'erreur

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 }

void Error::SetLangue const char *  pFile  ) 
 

Permet de définir la langue dans laquelle seront les messages d'erreurs (fichier ErrorCode.lang).

Paramètres:
pFile nom du fichier de la langue.

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 }

void Error::SetLoc const char *  pLoc  )  [inline]
 

Définie le nom de la fonction en cour d'éxécution.

Paramètres:
pLoc nom de la fonction

Définition à la ligne 121 du fichier Error.h.

00122     {
00123         loc = pLoc;
00124     };

void Error::SetLog const char *  pLog  )  [inline]
 

Définie le nom du fichier de log des erreurs.

Paramètres:
pLog nom de la section

Définition à la ligne 112 du fichier Error.h.

00113     {
00114         log = pLog;
00115     };

void Error::Throw unsigned int  iLine,
unsigned int  iCode
[inline]
 

Enregistre le numéro de la ligne et génère une exception

Paramètres:
iLine numéro de la ligne
iCode code de l'erreur

Définition à la ligne 137 du fichier Error.h.

00138     {
00139         line = iLine;
00140         throw iCode;
00141     };


La documentation de cette classe a été générée à partir des fichiers suivants:
Généré le Thu Jun 12 09:12:30 2008 pour A.I.F. par  doxygen 1.3.9.1