Verified Commit d9d8c723 authored by Romain De Laage De Bellefaye's avatar Romain De Laage De Bellefaye 🌳
Browse files

Improve doc

parent 0ba65699
Pipeline #79684 passed with stage
in 15 seconds
...@@ -68,11 +68,15 @@ class Automate { ...@@ -68,11 +68,15 @@ class Automate {
return *instance; return *instance;
} }
/// Définir la fonction de transition de l'automate, le cycle de vie de la focntion est géré par l'utilisateur /// Définir la fonction de transition de l'automate
///
/// L'objet est géré dynamiquement par l'utilisateur mais une fois donnné à l'automate il gère son cycle de vie
void setFonction(Fonction& f) { fonction = &f; } void setFonction(Fonction& f) { fonction = &f; }
/// Récupérer la fonction de transition /// Récupérer la fonction de transition
const Fonction& getFonction() const { return *fonction; } const Fonction& getFonction() const { return *fonction; }
/// Définir une règle de voisinage, le cycle de vie de la règle est géré par l'utilisateur /// Définir une règle de voisinage
///
/// L'objet est géré dynamiquement par l'utilisateur mais une fois donnné à l'automate il gère son cycle de vie
void setRegleVoisinage(RegleVoisinage& r) { regleVoisinage = &r; } void setRegleVoisinage(RegleVoisinage& r) { regleVoisinage = &r; }
/// Récupérer la règle de voisinage /// Récupérer la règle de voisinage
const RegleVoisinage& getRegleVoisinage() const { return *regleVoisinage; } const RegleVoisinage& getRegleVoisinage() const { return *regleVoisinage; }
...@@ -147,6 +151,7 @@ class Automate { ...@@ -147,6 +151,7 @@ class Automate {
/// Redéfinir le nom de l'automate /// Redéfinir le nom de l'automate
void setYear(const int y) { year = y; } void setYear(const int y) { year = y; }
/// Réinitialiser totalement la configuration de l'automate
void reinitialiserAutomate(); void reinitialiserAutomate();
}; };
......
...@@ -44,7 +44,13 @@ class Regle: public RegleGen { ...@@ -44,7 +44,13 @@ class Regle: public RegleGen {
/// @param[in] voisins Le voisinage de la cellule pour laquelle on vérifie la règle /// @param[in] voisins Le voisinage de la cellule pour laquelle on vérifie la règle
/// @param[in] cellule La cellule pour laquelle on vérifie la règle /// @param[in] cellule La cellule pour laquelle on vérifie la règle
virtual bool verify(const Voisinage& voisins, const Cellule& cellule) const override; virtual bool verify(const Voisinage& voisins, const Cellule& cellule) const override;
/// Obtenir le seuil minimum du nombre de voisins requis pour un état donné afin de valider la règle
/// Principalement utilisé pour sauvegarder une règle de transition
/// @param[in] i numéro de l'état
int getMin(const size_t i) { if(i > 0 && i <= 8) return seuilsMin[i - 1]; else throw "Invalid number!"; } int getMin(const size_t i) { if(i > 0 && i <= 8) return seuilsMin[i - 1]; else throw "Invalid number!"; }
/// Obtenir le seuil maximum du nombre de voisins requis pour un état donné afin de valider la règle
/// Principalement utilisé pour sauvegarder une règle de transition
/// @param[in] i numéro de l'état
int getMax(const size_t i) { if(i > 0 && i <= 8) return seuilsMax[i - 1]; else throw "Invalid number!"; } int getMax(const size_t i) { if(i > 0 && i <= 8) return seuilsMax[i - 1]; else throw "Invalid number!"; }
}; };
...@@ -66,6 +72,8 @@ class RegleAvecEtatCourant: public Regle { ...@@ -66,6 +72,8 @@ class RegleAvecEtatCourant: public Regle {
/// @param[in] voisins Le voisinage de la cellule pour laquelle on vérifie la règle /// @param[in] voisins Le voisinage de la cellule pour laquelle on vérifie la règle
/// @param[in] cellule La cellule pour laquelle on vérifie la règle /// @param[in] cellule La cellule pour laquelle on vérifie la règle
bool verify(const Voisinage& voisins, const Cellule& cellule) const override; bool verify(const Voisinage& voisins, const Cellule& cellule) const override;
/// Obtenir l'état courant requis pour valider la règle
/// Principalement utilisé pour sauvegarder une règle de transition
int getCourant() const override { return static_cast<int>(etatCourant); } int getCourant() const override { return static_cast<int>(etatCourant); }
}; };
......
...@@ -88,6 +88,7 @@ class AutoCell : public QWidget ...@@ -88,6 +88,7 @@ class AutoCell : public QWidget
friend class NouveauModele; friend class NouveauModele;
public: public:
/// Obtenir une référence vers l'instance unique du singleton AutoCell
static AutoCell& getInstance() { static AutoCell& getInstance() {
if(instance == nullptr) { if(instance == nullptr) {
instance.reset(new AutoCell); instance.reset(new AutoCell);
...@@ -99,27 +100,40 @@ class AutoCell : public QWidget ...@@ -99,27 +100,40 @@ class AutoCell : public QWidget
public slots: public slots:
//void chargerModele(); //void chargerModele();
//void listerModele(); //à faire en dernier //void listerModele(); //à faire en dernier
/// slot pour charger les grilles disponibles pour le modèle sélectionné
void chargerGrilles(); void chargerGrilles();
//void listerGrille(); //déjà réfléchir à la recopie //void listerGrille(); //déjà réfléchir à la recopie
//Reseau initialiserGrille(); //méthode à implémenter qui récupère les données du formulaire - penser à réinitialiser les données annexes //Reseau initialiserGrille(); //méthode à implémenter qui récupère les données du formulaire - penser à réinitialiser les données annexes
//void afficherGrille(Reseau&); //affiche une grille //void afficherGrille(Reseau&); //affiche une grille
//void chargerGrilles(const QString &text); //void chargerGrilles(const QString &text);
/// Afficher une grille dans l'espace dédié
void afficherGrille(Reseau* Grille); void afficherGrille(Reseau* Grille);
/// Initialiser une grille
void initialiserGrille(); void initialiserGrille();
/// Remettre à 0 la simulation
void RAZ(); void RAZ();
/// Gérer la mise en route automatique ou non
void gererSimulation(); void gererSimulation();
//void sauvegarderGrille(); //void sauvegarderGrille();
//Reseau& modifierCellule(const QModelIndex&, Reseau& Grille);//à implémenter //Reseau& modifierCellule(const QModelIndex&, Reseau& Grille);//à implémenter
/// Modifier l'état d'une cellule de la grille affichée (par clic par exemple)
void modifierCellule(const QModelIndex& index); void modifierCellule(const QModelIndex& index);
/// Sauvegarder la grille courante dans la BDD
void sauvegarderGrille(); void sauvegarderGrille();
/// Créer un nouveau modèle
void defNouveauModele(); void defNouveauModele();
/// Afficher une boîte d'erreur
void afficherErreur(QString& msg); void afficherErreur(QString& msg);
/// Initialiser un automate par son nom
void initAutomate(const QString& name); void initAutomate(const QString& name);
/// Changer le délai de l'automate
void changeDelai(); void changeDelai();
/// Aller en arrière dans la simulation
void previous(); void previous();
/// Aller en avant dans la simulation
void next(); void next();
}; };
......
...@@ -18,29 +18,41 @@ class Database { ...@@ -18,29 +18,41 @@ class Database {
QSqlDatabase db; QSqlDatabase db;
static std::unique_ptr<Database> instance; static std::unique_ptr<Database> instance;
Database& operator=(const Database& a) = delete; Database& operator=(const Database& a) = delete;
Database(const Database& a) = delete; Database(const Database& a) = delete;
Database(std::string path); Database(std::string path);
public: public:
/// Obtenir une référence vers l'instance unique du singleton database
static Database& getInstance() { static Database& getInstance() {
if(instance == nullptr) { if(instance == nullptr)
instance.reset(new Database("application.db")); instance.reset(new Database("application.db"));
} return *instance;
return *instance; }
}
~Database() { db.close(); } ~Database() { db.close(); }
/// Obtenir la liste de tous les noms d'automate disponibles
std::vector<QString> getAutomates() const; std::vector<QString> getAutomates() const;
/// Obtenir la fonction d'un automate donné
Fonction* getFonction(Automate& a) const; Fonction* getFonction(Automate& a) const;
/// Obtenir la règle de voisinage d'un automate par son nom
RegleVoisinage* getRegleVoisinage(const QString& name) const; RegleVoisinage* getRegleVoisinage(const QString& name) const;
/// Obtenir la liste des grilles disponibles pour un automate par son nom
std::vector<QString> getListeReseaux(const QString& name) const; std::vector<QString> getListeReseaux(const QString& name) const;
/// Obtenir un réseau par son nom
Reseau& getReseau(int idReseau) const; Reseau& getReseau(int idReseau) const;
/// Sauvegarder un réseau en base de donnée
void stockerReseau(const Reseau& reseau, const QString& nomReseau, const QString& nomAutomate) const; void stockerReseau(const Reseau& reseau, const QString& nomReseau, const QString& nomAutomate) const;
/// Initialise l'ensemble d'état d'un automate
void initEnsEtat(Automate& a) const; void initEnsEtat(Automate& a) const;
/// Sauvegarder un automate en BDD
void saveAutomaton(const Automate& a) const; void saveAutomaton(const Automate& a) const;
/// Sauvegarder une fonction en BDD
void saveFunction(const QString& name, const Fonction& f) const; void saveFunction(const QString& name, const Fonction& f) const;
/// Sauvegarder une règle de voisinage en BDD
void saveVoisinage(const QString& name, const RegleVoisinage& r) const; void saveVoisinage(const QString& name, const RegleVoisinage& r) const;
/// Sauvegarder un ensemble d'états en BDD
void saveEnsemble(Automate& a) const; void saveEnsemble(Automate& a) const;
/// initialiser le singleton automate depuis la bdd par son nom
void initSingletonAutomate(const QString& modele) const; void initSingletonAutomate(const QString& modele) const;
}; };
......
...@@ -25,8 +25,11 @@ class ParamAlpha: public QWidget { ...@@ -25,8 +25,11 @@ class ParamAlpha: public QWidget {
QPushButton* valider; QPushButton* valider;
public: public:
/// Construire une fenêtre de paramétrage de l'alphabet
/// @param[in] nbEtats nombre d'états à initialiser
ParamAlpha(const int nbEtats); ParamAlpha(const int nbEtats);
public slots: public slots:
/// Valider le paramétrage de l'alphabet, a pour effet de l'initialiser dans l'automate
void valide(); void valide();
}; };
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment