history.h 1.73 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
19
20
21
22
23
#include <exception>
class HistoryException : public std::exception
{
    std::string _msg;
public:
    HistoryException(const std::string& msg) : _msg(msg){}
24

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

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

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

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

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

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

    //! \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
54
    Grid popGrid();
Merwane Bouri's avatar
Merwane Bouri committed
55
56
57

    //! \brief Fonction qui retourne la dernière grille sans la retirer
    //! \return Retourne la dernière grille ajoutée de l'historique
58
59
60
61
    Grid topGrid()
    {
        if(tab.size()>0)
            return tab.back();
Merwane Bouri's avatar
Merwane Bouri committed
62
        throw HistoryException("La pile est vide. \n");
63
    }
Merwane Bouri's avatar
Merwane Bouri committed
64
65
    //! \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"
66
67
68
69
70
71
72
73
    bool isEmpty()
    {
        return tab.empty();
    }

};

#endif // HISTORY_H