///
/// \file Traceur.h
/// Classe de gestion de messages de tracage d'execution.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

#ifndef ____TRACEUR____
#define ____TRACEUR____

#include <stdio.h>

class Traceur {

  public :
    int traceEcran;               ///< Booleen indiquant une trace ecran.
    char traceFilename[512];      ///< Nom du fichier dans lequel la trace doit etre effectuee.
    char traceRepertoire[512];    ///< Nom du repertoire dans lequel la trace doit etre effectuee.
	  int traceFichierInit;         ///< Booleen indiquant si le fichier de trace doit etre reinitialise a vide.
    
  public :

///
/// Constructeur pour un nouveau Traceur.
///
/// @param te Le booleen indiquant une trace ecran.
/// @param tfn Le nom du fichier dans lequel la trace doit etre effectuee.
/// @param tfi Le booleen indiquant si le fichier de trace doit etre reinitialise a vide.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    Traceur(int te,char *tfn,int tfi);

///
/// Constructeur pour un nouveau Traceur.
///
/// @param te Le booleen indiquant une trace ecran.
/// @param tfn Le nom du fichier dans lequel la trace doit etre effectuee.
/// @param trp Le nom du repertoire dans lequel la trace doit etre effectuee.
/// @param tfi Le booleen indiquant si le fichier de trace doit etre reinitialise a vide.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    Traceur(int te,char *tfn,char *trp,int tfi);
	
///
/// Destructeur pour un Traceur.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    ~Traceur(void);

///
/// Impression d'un message de trace
///
/// @param format La chaine de caracteres de description de l'affichage.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void printff(const char *format,...);

///
/// Impression d'un message de trace
///
/// @param notFirst Le booleen indiquant si l'affichage ecran doit etre realise.
/// @param format La chaine de caracteres de description de l'affichage.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void printfff(int notFirst,const char *format,...);

    private :
      char filename[512];      ///< Le nom du fichier de trace.
      FILE *f;                 ///< Le handle sur le fichier de trace ouvert.
};
  
#endif
