history.h 1.81 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
\file history.h
\date 24/04/2021
\author Merwane Bouri
\version 1
\brief History

Cette classe représente un historique de Grids.

        **/

#ifndef HISTORY_H
#define HISTORY_H

#include "grid.h"
Merwane Bouri's avatar
Merwane Bouri committed
16
#include <string>
17
#include <deque>
Merwane Bouri's avatar
Merwane Bouri committed
18
#include <exception>
19
20

//! \brief Exception lancée lors d'une erreur de manipulation de l'historique.
Merwane Bouri's avatar
Merwane Bouri committed
21
22
23
24
25
class HistoryException : public std::exception
{
    std::string _msg;
public:
    HistoryException(const std::string& msg) : _msg(msg){}
26

Merwane Bouri's avatar
Merwane Bouri committed
27
28
29
30
31
    virtual const char* what() const noexcept override
    {
        return _msg.c_str();
    }
};
Merwane Bouri's avatar
Merwane Bouri committed
32
33
34
35
36
37
38
39

/**
\struct History
\brief Représente l'historique des grilles.

Cette structure représente l'historique des grilles.
**/

40
41
42
43
class History{
    unsigned int nbMax;
    std::deque<Grid> tab;
public:
Merwane Bouri's avatar
Merwane Bouri committed
44
    //! \brief Constructeur par défaut, génère un historique capable de stocker un nombre max de grilles.
45
46
    History(unsigned int nbM);

Merwane Bouri's avatar
Merwane Bouri committed
47
48
    //! \brief Accesseur sur le nombre max
    //! \return Retourne le nombre de lignes de la Grille
49
50
    unsigned int get_nbMax()const{return nbMax;}

Merwane Bouri's avatar
Merwane Bouri committed
51
    //! \brief Ajoute une grille dans l'historique
52
    void pushGrid(const Grid& g);
Merwane Bouri's avatar
Merwane Bouri committed
53
54
55

    //! \brief Fonction qui retire la dernière grille de l'historique, et la renvoie
    //! \return Retourne la dernière grille ajoutée de l'historique
56
    Grid popGrid();
Merwane Bouri's avatar
Merwane Bouri committed
57
58
59

    //! \brief Fonction qui retourne la dernière grille sans la retirer
    //! \return Retourne la dernière grille ajoutée de l'historique
60
61
62
63
    Grid topGrid()
    {
        if(tab.size()>0)
            return tab.back();
Merwane Bouri's avatar
Merwane Bouri committed
64
        throw HistoryException("La pile est vide. \n");
65
    }
Merwane Bouri's avatar
Merwane Bouri committed
66
67
    //! \brief Fonction qui vérifie si l'historique est vide ou pas
    //! \return Retourne un booléen selon si le prédicat "l'historique est vide"
68
69
70
71
72
73
74
75
    bool isEmpty()
    {
        return tab.empty();
    }

};

#endif // HISTORY_H