This repository has been archived on 2023-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
GestionProjet/includes/Projet.hpp
2023-10-27 23:27:41 +02:00

49 lines
1.2 KiB
C++

#ifndef TP5_PROJET_HPP
#define TP5_PROJET_HPP 1
#include "Tache.hpp"
#include <algorithm>
class Projet {
friend std::ostream &operator<<(std::ostream &, const Projet &);
// Auxilliaire pour simplifier les copies
void _copy(const Projet &);
// Auxiliiaire pour simplifier la libération de mémoire des tâches
void _free();
protected:
Tache
// Première tâche qui sera exécutée
*debut,
// Source du graphe aka la dernière à être exécutée
*fin;
Projet(); // constructor
virtual ~Projet(); // destructor
Projet(const Projet &); // copy constructor
const Projet &operator=(const Projet &); // copy assignement
// Graphe acyclique
std::vector<Tache *> taches;
// Retourne une paire d'indentifiants de tâches au hasard
const std::pair<const int, const int> pick_two_random_tasks() const;
// Indique pour une tâche si elle fait partie du projet
Tache *contains(const int id) const;
Tache *contains(const std::string name) const;
// Donne une version du vecteur de tâches non modifiable
const std::vector<Tache *> consult_tasks() const;
// Corrige les éventuelles anomalies du vector de tâches
std::vector<Tache *> topologicalSort();
};
#endif