From 62091bf314d236f6afa9a0a1bb34edb508f7c89a Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sat, 28 Oct 2023 02:59:00 +0200 Subject: [PATCH] prettyprinter --- includes/Projet.hpp | 3 +++ src/Projet.cpp | 19 ++++++++++++++++--- src/ProtoProjet.cpp | 6 +----- src/RunProjet.cpp | 17 +++++++++++------ src/Tache.cpp | 6 +++--- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/includes/Projet.hpp b/includes/Projet.hpp index 0b01deb..3925fae 100644 --- a/includes/Projet.hpp +++ b/includes/Projet.hpp @@ -38,6 +38,9 @@ protected: // Graphe acyclique std::vector taches; + // Auxiliaire pour simplifier l'affichage d'un projet + std::ostream &print(std::ostream &) const; + // Retourne une paire d'indentifiants de tâches au hasard const std::pair pick_two_random_tasks() const; diff --git a/src/Projet.cpp b/src/Projet.cpp index 1b2ae97..9ced0d5 100644 --- a/src/Projet.cpp +++ b/src/Projet.cpp @@ -39,14 +39,27 @@ const Projet &Projet::operator=(const Projet &src) { return *this; } -std::ostream &operator<<(std::ostream &out, const Projet &data) { - for (Tache *t : data.taches) { - out << *t << "\n"; +std::ostream &Projet::print(std::ostream &out) const { + if (taches.empty()) { + out << "[]"; + return out; } + out << '['; + for (Tache *t : taches) { + out << *t << ", "; + } + + // \b\b permet de retirer la dernière virgule + out << "\b\b]"; + return out; } +std::ostream &operator<<(std::ostream &out, const Projet &data) { + return data.print(out); +} + const std::pair Projet::pick_two_random_tasks() const { // Choix aléatoire d'une tâche size_t size = this->taches.size(); diff --git a/src/ProtoProjet.cpp b/src/ProtoProjet.cpp index b702fa3..5d2fb00 100644 --- a/src/ProtoProjet.cpp +++ b/src/ProtoProjet.cpp @@ -15,11 +15,7 @@ const ProtoProjet &ProtoProjet::operator=(const ProtoProjet &src) { } std::ostream &operator<<(std::ostream &out, const ProtoProjet &data) { - for (Tache *t : data.taches) { - out << *t << "\n"; - } - - return out; + return data.print(out); } void ProtoProjet::cleanMarks() const { diff --git a/src/RunProjet.cpp b/src/RunProjet.cpp index df3ee3f..08c2f8a 100644 --- a/src/RunProjet.cpp +++ b/src/RunProjet.cpp @@ -1,6 +1,13 @@ #include "../includes/RunProjet.hpp" -RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { src.free_taches(); } +RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { + // TODO: Ici on COPIE les tâches de ProtoProjet au lieu de juste prendre les + // références et les retirer de sa liste + // Il faudrait que l'on trouve un moyen que ça n'arrive pas pour éviter une + // copie inutile + + src.free_taches(); +} RunProjet::~RunProjet() {} @@ -15,9 +22,7 @@ const RunProjet &RunProjet::operator=(const RunProjet &src) { } std::ostream &operator<<(std::ostream &out, const RunProjet &data) { - for (Tache *t : data.taches) { - out << *t << "\n"; - } - - return out; + return data.print(out); +} + } diff --git a/src/Tache.cpp b/src/Tache.cpp index 070fb9d..ccfe256 100644 --- a/src/Tache.cpp +++ b/src/Tache.cpp @@ -37,7 +37,7 @@ const Tache &Tache::operator=(const Tache &src) { std::ostream &operator<<(std::ostream &out, const Tache::Etat &data) { switch (data) { case Tache::EnAttente: - out << "En Attente"; + out << "Attend"; break; case Tache::Realisee: @@ -48,8 +48,8 @@ std::ostream &operator<<(std::ostream &out, const Tache::Etat &data) { } std::ostream &operator<<(std::ostream &out, const Tache &data) { - out << "Tâche \"" << data.name << "\" #" << data.unique_id << " " << data.etat - << " avec " << data.dependances.size() << " dépendances"; + out << "Tâche(#" << data.unique_id << ", \"" << data.name << "\", " + << data.etat << ") => " << data.dependances.size() << " dépendances"; return out; }