/**
 * \file FileLoader.h
 * Classe de chargement d'un fichier.
 * 
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */

#ifndef ____FILELOADER____
#define ____FILELOADER____

/**
 * \class FileLoader
 * Classe de chargement d'un fichier.
 * 
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */

class FileLoader {

  public :
    size_t size;             /**< La taille du fichier. */

  public :	

/**
 * Constructeur pour un nouvel objet FileLoader.
 *
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    FileLoader(char *filename);

/**
 * Constructeur pour un nouvel objet FileLoader.
 *
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    FileLoader(char *filename,int largeurTampon);

/**
 * Destructeur pour un objet FileLoader.
 *
 * @author Nicolas Janey
 * @author nicolas.janey@univ-fcomte.fr
 * @version 1.0, 01/01/10
 */
    ~FileLoader();

    char tc(size_t n);

///
/// Retour de la quantite de memoire utilisee.
///
/// @return la quantite de memoire.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    size_t getUsedMemory(void);

///
/// Retour du nombre de handles memoires utilises.
///
/// @return le nombre de handles memoires.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    long getUsedHandles(void);

  private :
    int largeurTampon;
    size_t masque;
    size_t bufferSize;       /**< La taille de buffer de lecture. */
    size_t n;                /**< Le nombre de buffers lus. */
    char **t;                /**< Le tableau des octets telecharges. */

  private :
    int load(char *fileName,int largeurTampon);
};

#endif
