diff --git a/includes/Projet.hpp b/includes/Projet.hpp index b6b5433..a10dfed 100644 --- a/includes/Projet.hpp +++ b/includes/Projet.hpp @@ -2,8 +2,15 @@ #define TP5_PROJET_HPP 1 #include +#include +#include +#include "../includes/Tache.hpp" + class Projet { + //Héritage de tache ? + //Tache fin; + std::vector taches; friend std::ostream &operator<<(std::ostream &, const Projet &); public: @@ -12,6 +19,15 @@ public: Projet(const Projet &); // copy constructor const Projet &operator=(const Projet &); // copy assignement + + // Retourne une paire d'indentifiants de tâches au hasard + std::pair pick_two_random_tasks(); + + // Indique pour une tâche si elle fait partie du projet + Tache Projet::contains(int id); + + // Donne une version du vecteur de tâches non modifiable + std::vector consult_tasks(); }; #endif diff --git a/src/Projet.cpp b/src/Projet.cpp index 094dde4..33844c1 100644 --- a/src/Projet.cpp +++ b/src/Projet.cpp @@ -13,3 +13,30 @@ const Projet &Projet::operator=(const Projet &src) { return *this; } + +std::pair Projet::pick_two_random_tasks(){ + int size = this->taches.size(); + int rand1 = rand() % size; + int rand2 = rand() % size; + if(this->taches[rand1]->depends_from(*this->taches[rand2])) pick_two_random_tasks(); + //Heritage de tache ? + int id1 = this->taches[rand1]->unique_id; + int id2 = this->taches[rand2]->unique_id; + return std::make_pair(id1, id2); +} + +Tache Projet::contains(int id){ + for(Tache *t:this->taches) + if(id==t->unique_id) return *t; + return nullptr; +} + +std::ostream& operator<<(std::ostream &out, Projet &x){ + for(Tache *t: x.taches) + out << *t; + return out; +} + +std::vector consult_tasks(){ + +}