<commit_before>/**
 * @file chariot.tpp
 * @author <NAME>
 * @since 09/03/2015
 * @brief Implémentation de la classe Chariot<FP>
 * 
 * @b Note s'agissant d'un patron de classe, ce fichier est inclus dans chariot.hpp
**/
#include <cassert>

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Chariot<FileDePriorite>::Chariot(double contenance/*=50.0*/)
{
   capacite_ = contenance;
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Chariot<FileDePriorite>::~Chariot()
{
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
double Chariot<FileDePriorite>::capacite() const
{
   	FileDePriorite<Produit> achats_bis = achats_;
	double capacite = 0;

	while ( !achats_bis.estVide() ) {
			capacite = capacite + achats_bis.premier().poids();
			achats_bis.defiler();		
	}
	return capacite;
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
bool Chariot<FileDePriorite>::estVide() const
{
   	return achats_.estVide();
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
void Chariot<FileDePriorite>::ajouter(const Produit & p,unsigned int nb/*=1*/)
{
   	assert( !achats_.estVide() );
	
	if ( (capacite() + p.poids()) <= capacite_ ) {
		achats_.enfiler(p);
	}
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Produit Chariot<FileDePriorite>::retirer()
{
      	assert( !achats_.estVide() );
	
	achats_.defiler();<commit_msg>plopddd<commit_after>/**
 * @file chariot.tpp
 * @author <NAME>
 * @since 09/03/2015
 * @brief Implémentation de la classe Chariot<FP>
 * 
 * @b Note s'agissant d'un patron de classe, ce fichier est inclus dans chariot.hpp
**/
#include <cassert>

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Chariot<FileDePriorite>::Chariot(double contenance/*=50.0*/)
{
	// Initialisation de la capacité du chariot
	capacite_ = contenance;
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Chariot<FileDePriorite>::~Chariot()
{
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
double Chariot<FileDePriorite>::capacite() const
{
	// Recopie des produits dans le chariot
   	FileDePriorite<Produit> achats_bis = achats_;
	// Capacité initialisée à zero
	double capacite = 0;

	// Tant que le chariot n'est pas vide
	while ( !achats_bis.estVide() ) {
		// On incrémente la capacite avec le poids du produits en haut du chariot
		capacite = capacite + achats_bis.premier().poids();
		// On retire le produit
		achats_bis.defiler();		
	}
	return capacite;
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
bool Chariot<FileDePriorite>::estVide() const
{
   	return achats_.estVide();
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
void Chariot<FileDePriorite>::ajouter(const Produit & p,unsigned int nb/*=1*/)
{
	// Assertion qui vérifie si le chariot n'est pas vide
   	assert( !achats_.estVide() );
	
	// Si la capacité résiduelle et le poids du produit ajouté est inférieur ou égale a la capacité du chariot on ajoute le produit
	if ( (capacite() + p.poids()) <= capacite_ ) {
		achats_.enfiler(p);
	}
}

//----------------------------------------------------------------------------------------
template < template <typename T> class FileDePriorite >
Produit Chariot<FileDePriorite>::retirer()
{
      	assert( !achats_.estVide() );
	
	achats_.defiler();
{'fraction_non_alphanumeric': 0.34688601645123385, 'fraction_numerical': 0.006110458284371328, 'mean_word_length': 1.5592303066746842, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7508838', 'n_tokens_mistral': 1238, 'n_tokens_neox': 1183, 'n_words': 289}