prettyprinter

This commit is contained in:
Mylloon 2023-10-28 02:59:00 +02:00
parent 510b8680e8
commit 62091bf314
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
5 changed files with 34 additions and 17 deletions

View file

@ -38,6 +38,9 @@ protected:
// Graphe acyclique
std::vector<Tache *> 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<const int, const int> pick_two_random_tasks() const;

View file

@ -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<const int, const int> Projet::pick_two_random_tasks() const {
// Choix aléatoire d'une tâche
size_t size = this->taches.size();

View file

@ -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 {

View file

@ -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);
}
}

View file

@ -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;
}