#ifndef LOG_HPP
#define LOG_HPP

// Détection du système cible...
#include "usgeDetectSystem.h"

#include <stdio.h>
#include <string>


namespace USpeedGameEngine
{

class Log
{
    //*********************//
    //***** Variables *****//
    //*********************//
    public:
    protected:
    private:
        FILE *file;             //!< Le pointeur du fichier à écrire en adjonction
        std::string filename;   //!< Le nom du fichier dans lequel écrire ("log.txt" par défaut)
        bool toFile;            //!< Mode fichier ou console (<code>true</code> par défaut pour le mode fichier)
        bool active;            //!< Le logger est-il actif ?

    //*********************//
    //***** Fonctions *****//
    //*********************//
    public:
        // Constructeur par défaut
        Log();
        // Destructeur par défaut
        ~Log();
        // Fonction de log dans la console ou dans un fichier (selon le paramétrage de la classe).
        void log(char *format, ...);
        // Définition de la cible : console ou fichier
        void setTarget(bool writeToFile);
        void setTarget(bool writeToFile, char *name);
        // Permet de suspendre le "logger" pour ne plus l'utiliser.
        void suspend();
        // Permet de ré-activer le "logger" pour l'utiliser à nouveau.
        void resume();
        // Arrête l'utilisation du "logger".
        void finish();
    protected:
    private:
};

}        // Fin "namespace USpeedGameEngine"

#endif
