transitionrule.hpp 973 Bytes
Newer Older
Anthony Noir's avatar
Anthony Noir committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
\file transitionrule.hpp
\brief TransitionRule

Cette classe représente une règle de transition.

**/

#ifndef TRANSITIONRULE_HPP
#define TRANSITIONRULE_HPP

#include <vector>
#include "coord.hpp"
#include "neighborhood.hpp"
15
16
#include "factory.hpp"
#include "property.hpp"
Anthony Noir's avatar
Anthony Noir committed
17
18
19

struct NeighborhoodFormat;

20
class TransitionRule : public HasUserProperties {
Anthony Noir's avatar
Anthony Noir committed
21
22
23
24
private:


public:
Merwane Bouri's avatar
Merwane Bouri committed
25
26
    TransitionRule(){}
    virtual ~TransitionRule(){}
Anthony Noir's avatar
Anthony Noir committed
27
28
29
30
31
32
33
34
35
36
37
38
39
40

    //! \brief Vérifie que les formats de voisinage proposés sont compatibles
    //! \param Vector des NeighborhoodFormat à vérifier
    //! \return vrai si compatible, faux sinon
    virtual bool acceptFormat(const std::vector<NeighborhoodFormat>&) const =0;

    //! \brief Effectue la transition
    //! \param Etat de la cellule courante
    //! \param Voisinage de la cellule
    //! \return Nouvel état de la cellule
    virtual unsigned int getState(unsigned int, const Neighborhood&) const =0;
};

#endif // TRANSITIONRULE_HPP