/*############################################
# (\__/)    Librairie   : Facilitateur d'exercise
# ( . .)    Auteur      : Martin Robinson
# c(")(")   Conception  : 27 Janvier 2012
#		    Description : Une librairie qui
#						  contient toute les
#						  fonction redondantes
#						  d'un programme à 
#						  l'autre
###########################################
         (\_/)   directive du préprocesseur
        ( . . ) /
###########################################*/

#include "martin.hpp"

using namespace std;

const int maxInt = numeric_limits<int>::max();

/*       (\_/)   Prototype de fonction
        ( . . ) /
###########################################*/

	//effacer l'ecran
	void effacer()
	{
		for (int i=0;i<25;i++)
			cout << '\n';
	}
	//faire une pause
	void pause()
	{
		cout << "Appuyer sur entrer pour continuer ... ";
		cin.ignore(maxInt,'\n');
	}
	//vide le buffer du iostream
	void viderBuffer()
	{
		cin.clear();					//vider les flags
		cin.seekg(0,ios_base::end);
		if (!cin.fail())
			cin.ignore(maxInt,'\n');	//vider le buffer
		else
			cin.clear();
	}
	//attend que l'utilisateur retourne un nombre et le retourne
	//message = pointeur vers le message à entrer
	//min = limite inferieures
	//max = limite superieures
	//il vas répéter en cas d'erreur
	int saisirNombre(const char * message,int min=0 ,int max =maxInt)    //saisie d'un nombre
	{
	  int nombre = min-1;    //le nombre à retourner
	  while (1)
	  {
		cout << message << ' ';
		cin >> nombre;
		if (cin.fail() || nombre<min || nombre>max)             //n'est pas un nombre
		  cout << "\nvous devez entrer un nombre entre " << min << " et " << max << '\n';
		else
		  break;
		viderBuffer();
	  }
	  return nombre;
	}
	//saisie d'un seul charactere
	//message = pointeur vers le message
	char saisirUnChar(const char * message)   //saisie d'un seul charactere
	{
	  char symbole;       //le character à retourner
	  cout << '\n' << message << ' ';
	  cin >> symbole;
	  viderBuffer();
	  return symbole;
	}
	//saisie une string
	//message = pointeur vers le message
	string saisirUneString(string message)
	{
	  string saisie;    //string de sortie
	  while (saisie.empty())
	  {
		cout << '\n' << message;
		getline(cin,saisie);
	  }
	  return saisie;
	}

	bool est_vide(ifstream & fichier)
	{
		return fichier.peek() == ifstream::traits_type::eof();
	}

/*       (\_/)   fini
        ( . . ) /
###########################################*/
