<commit_before>#include "../entetes/parc.h"


void Parc::creerAnimal(Animal * a, const int IDEnclosAccueil) {
    int iEspece = a->getEspece();
    int iRangEnclos = rechercherEnclos(IDEnclosAccueil);
    Enclos * ptrEnclos = listeEnclos[iRangEnclos];
    bool succes = true;

    if(ptrEnclos->getOccupation() < ptrEnclos->getCapacite()) {
        switch(iEspece) {
          case GIRAFE:
             listeAnimaux.ajouter(new Girafe(a->getTaille(), a->getNbTaches(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case TIGRE:
             listeAnimaux.ajouter(new Tigre(a->getTaille(), a->getNbVictimes(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case BASQUE:
             listeAnimaux.ajouter(new Basque(a->getLargeurBeret(), a->getTempsCuisson(), a->getNbVictoires(), a->getNbRicardBus(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case MARMOTTE:
             listeAnimaux.ajouter(new Marmotte(a->getTaille(), a->getNbTabChocolat(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case ELEPHANT:
             listeAnimaux.ajouter(new Elephant(a->getPoids(), a->getLongTrompe(), a->getNbVictimes(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case AIGLE:
             listeAnimaux.ajouter(new Aigle(a->getLongueurBec(), a->getNbLoopings(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case TORTUE:
             listeAnimaux.ajouter(new Tortue(a->getVitesseMax(), a->getAge(), a->getCouleur(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case LOUTRE:
             listeAnimaux.ajouter(new Loutre(a->getNbAmis(), a->getTaille(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case CROCODILE:
             listeAnimaux.ajouter(new Crocodile(a->getEnfantMange(), a->getNbDents(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case LAPIN:
             listeAnimaux.ajouter(new Lapin(a->getNbCarotteMange(), a->getCouleur(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          default:
             succes = false;
             break;
        }

        if(succes) {
          ajouterAnimalDansEnclos(listeAnimaux[iNbAnimaux-1], ptrEnclos);
        }
        else {
            cout << "Erreur, espèce inconnue." << endl;
        }
    }
    else {
        cout << "Erreur, enclos plein." << endl;
    }
}


void Parc::supprimerAnimal(const int ID) {
    int iRangEnclos = rechercheEnclosAnimal(ID);
    if(iRangEnclos == -1) {
        cout << "Erreur, animal non trouvé." << endl;
    }
    else {
        Animal * ptrAnimal = listeAnimaux[rechercherAnimal(ID)];
        listeEnclos[iRangEnclos]->supprimerAnimal(ptrAnimal);
        listeAnimaux.enlever(ptrAnimal);
        delete ptrAnimal;
    }
}

void Parc::modifierAnimal(const int IDAnimalAModifier, Animal * nouvelAnimal) {
    // FAIRE GESTION ERREUR ICI !!
    int iRangAnimal = rechercheAnimal(IDAnimalAModifier);
    if(iRangAnimal == -1) {
        cout << "Erreur, animal non trouvé."<< endl;
    }
    else {
        Animal * ptrAnimal = listeAnimaux[iRangAnimal];
        int iEspece = ptrAnimal->getEspece();
        if(iEspece != nouvelAnimal->getEspece()) {
            cout << "Erreur, l'animal à modifier n'est pas de la bonne espèce." << endl;
        }
        else {
            ptrAnimal->setNom(nouvelAnimal->getNom());
            switch(iEspece) {
              case GIRAFE:
                ptrAnimal->setTaille(nouvelAnimal->getTaille());
                ptrAnimal->setNbTaches(nouvelAnimal->getNbTaches());
                break;
              case TIGRE:
                ptrAnimal->setTaille(nouvelAnimal->getTaille());
                ptrAnimal->setNbVictimes(nouvelAnimal->getNbVictimes());
                break;
              case BASQUE:
                ptrAnimal->setLargeurBeret(nouvelAnimal->getLargeurBeret());
                ptrAnimal->setTempsCuisson(nouvelAnimal->getTempsCuisson());
                ptrAnimal->setNbVictoires(nouvelAnimal->getNbVictoires());
                ptrAnimal->setNbRicardBus(nouvelAnimal->getNbRicardBus());
                break;
              case MARMOTTE:
                ptrAnimal->setTaille(nouvelAnimal->getTaille());
                ptrAnimal->setNbTabChocolat(nouvelAnimal->getNbTabChocolat());
                break;
              case ELEPHANT:
                ptrAnimal->setPoids(nouvelAnimal->getPoids());
                ptrAnimal->setLongTrompe(nouvelAnimal->getLongTrompe());
                ptrAnimal->setNbVictimes(nouvelAnimal->getNbVictimes());
                break;
              case AIGLE:
                ptrAnimal->setLongueurBec(nouvelAnimal->getLongueurBec());<commit_msg>Correction mineure<commit_after>#include "../entetes/parc.h"


void Parc::creerAnimal(Animal * a, const int IDEnclosAccueil) {
    int iEspece = a->getEspece();
    int iRangEnclos = rechercherEnclos(IDEnclosAccueil);
    Enclos * ptrEnclos = listeEnclos[iRangEnclos];
    bool succes = true;

    if(ptrEnclos->getOccupation() < ptrEnclos->getCapacite()) {
        switch(iEspece) {
          case GIRAFE:
             listeAnimaux.ajouter(new Girafe(a->getTaille(), a->getNbTaches(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case TIGRE:
             listeAnimaux.ajouter(new Tigre(a->getGarot(), a->getNbVictimes(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case BASQUE:
             listeAnimaux.ajouter(new Basque(a->getLargeurBeret(), a->getTempsCuisson(), a->getNbVictoires(), a->getNbRicard(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case MARMOTTE:
             listeAnimaux.ajouter(new Marmotte(a->getTaille(), a->getNbTabChocolat(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case ELEPHANT:
             listeAnimaux.ajouter(new Elephant(a->getPoids(), a->getLongTrompe(), a->getNbVictimes(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case AIGLE:
             listeAnimaux.ajouter(new Aigle(a->getLongueurBec(), a->getNbLoopings(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case TORTUE:
             listeAnimaux.ajouter(new Tortue(a->getVitesseMax(), a->getAge(), a->getCouleur(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case LOUTRE:
             listeAnimaux.ajouter(new Loutre(a->getNbAmis(), a->getTaille(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case CROCODILE:
             listeAnimaux.ajouter(new Crocodile(a->getEnfantMange(), a->getNbDents(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          case LAPIN:
             listeAnimaux.ajouter(new Lapin(a->getNbCarotteMange(), a->getCouleur(), a->getNom(), iIDAnimaux++));
             iNbAnimaux++;
             break;
          default:
             succes = false;
             break;
        }

        if(succes) {
          ajouterAnimalDansEnclos(listeAnimaux[iNbAnimaux-1], ptrEnclos);
        }
        else {
            cout << "Erreur, espèce inconnue." << endl;
        }
    }
    else {
        cout << "Erreur, enclos plein." << endl;
    }
}


void Parc::supprimerAnimal(const int ID) {
    int iRangEnclos = rechercheEnclosAnimal(ID);
    if(iRangEnclos == -1) {
        cout << "Erreur, animal non trouvé." << endl;
    }
    else {
        Animal * ptrAnimal = listeAnimaux[rechercherAnimal(ID)];
        listeEnclos[iRangEnclos]->supprimerAnimal(ptrAnimal);
        listeAnimaux.enlever(ptrAnimal);
        delete ptrAnimal;
    }
}

void Parc::modifierAnimal(const int IDAnimalAModifier, Animal * nouvelAnimal) {
    // FAIRE GESTION ERREUR ICI !!
    int iRangAnimal = rechercheAnimal(IDAnimalAModifier);
    if(iRangAnimal == -1) {
        cout << "Erreur, animal non trouvé."<< endl;
    }
    else {
        Animal * ptrAnimal = listeAnimaux[iRangAnimal];
        int iEspece = ptrAnimal->getEspece();
        if(iEspece != nouvelAnimal->getEspece()) {
            cout << "Erreur, l'animal à modifier n'est pas de la bonne espèce." << endl;
        }
        else {
            ptrAnimal->setNom(nouvelAnimal->getNom());
            switch(iEspece) {
              case GIRAFE:
                ptrAnimal->setTaille(nouvelAnimal->getTaille());
                ptrAnimal->setNbTaches(nouvelAnimal->getNbTaches());
                break;
              case TIGRE:
                ptrAnimal->setGarot(nouvelAnimal->getGarot());
                ptrAnimal->setNbVictimes(nouvelAnimal->getNbVictimes());
                break;
              case BASQUE:
                ptrAnimal->setLargeurBeret(nouvelAnimal->getLargeurBeret());
                ptrAnimal->setTempsCuisson(nouvelAnimal->getTempsCuisson());
                ptrAnimal->setNbVictoires(nouvelAnimal->getNbVictoires());
                ptrAnimal->setNbRicard(nouvelAnimal->getNbRicard());
                break;
              case MARMOTTE:
                ptrAnimal->setTaille(nouvelAnimal->getTaille());
                ptrAnimal->setNbTabChocolat(nouvelAnimal->getNbTabChocolat());
                break;
              case ELEPHANT:
                ptrAnimal->setPoids(nouvelAnimal->getPoids());
                ptrAnimal->setLongTrompe(nouvelAnimal->getLongTrompe());
                ptrAnimal->setNbVictimes(nouvelAnimal->getNbVictimes());
                break;
              case AIGLE:
                ptrAnimal->setLongueurBec(nouvelAnimal->getLongueurBec());
{'fraction_non_alphanumeric': 0.1324382056759231, 'fraction_numerical': 0.0006103143118706134, 'mean_word_length': 2.107458912768647, 'pattern_counts': {'":': 0, '<': 45, '<?xml version=': 0, '>': 143, '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': '6395270', 'n_tokens_mistral': 3414, 'n_tokens_neox': 3206, 'n_words': 470}