Commit 1ec54fa3 authored by Yann Boucher's avatar Yann Boucher
Browse files

Added the last few bits of documentation

parent 8cde8141
...@@ -17,6 +17,7 @@ Représente l'ensemble des états et de leurs informations (couleur, label) d'un ...@@ -17,6 +17,7 @@ Représente l'ensemble des états et de leurs informations (couleur, label) d'un
#include <exception> #include <exception>
#include <vector> #include <vector>
//! \brief Exception lancée lors d'une erreur de manipulation de l'alphabet.
class AlphabetException : public std::exception class AlphabetException : public std::exception
{ {
public: public:
......
...@@ -11,8 +11,6 @@ Cette classe représente le widget utilisé pour l'affichage et l'interaction av ...@@ -11,8 +11,6 @@ Cette classe représente le widget utilisé pour l'affichage et l'interaction av
#ifndef GRIDVIEW_HPP #ifndef GRIDVIEW_HPP
#define GRIDVIEW_HPP #define GRIDVIEW_HPP
// TODO : documenter
#include <map> #include <map>
#include <QFrame> #include <QFrame>
......
...@@ -16,6 +16,8 @@ Cette classe représente un historique de Grids. ...@@ -16,6 +16,8 @@ Cette classe représente un historique de Grids.
#include <string> #include <string>
#include <deque> #include <deque>
#include <exception> #include <exception>
//! \brief Exception lancée lors d'une erreur de manipulation de l'historique.
class HistoryException : public std::exception class HistoryException : public std::exception
{ {
std::string _msg; std::string _msg;
......
...@@ -14,6 +14,7 @@ Ce fichier contient une fonction permettant d'exécuter une expression mathémat ...@@ -14,6 +14,7 @@ Ce fichier contient une fonction permettant d'exécuter une expression mathémat
#include <map> #include <map>
#include <exception> #include <exception>
//! \brief Exception lancée lors de l'évaluation d'une expression mathématique.
class MathExprException : public std::exception class MathExprException : public std::exception
{ {
public: public:
......
...@@ -12,6 +12,7 @@ namespace Ui { ...@@ -12,6 +12,7 @@ namespace Ui {
class ModelLoadingDialog; class ModelLoadingDialog;
} }
//! \brief Exception lancée lors d'une erreur de chargement de modèle.
class ModelLoadingException : public std::exception class ModelLoadingException : public std::exception
{ {
std::string _msg; std::string _msg;
......
...@@ -20,6 +20,7 @@ Cette classe représente le voisinage d'une cellule. ...@@ -20,6 +20,7 @@ Cette classe représente le voisinage d'une cellule.
using namespace std; using namespace std;
//! \brief Exception lancée lors d'une erreur de manipulation d'un voisinage.
class NeighborhoodException : public std::exception class NeighborhoodException : public std::exception
{ {
std::string _msg; std::string _msg;
......
...@@ -116,6 +116,7 @@ public: ...@@ -116,6 +116,7 @@ public:
} }
protected: protected:
//! \brief Appelée internalement par les macros DEFINE_CONFIGURABLE_*.
template <typename PropertyType, typename... Args> template <typename PropertyType, typename... Args>
PropertyType& register_property(const std::string& name, Args&&... args) PropertyType& register_property(const std::string& name, Args&&... args)
{ {
...@@ -146,6 +147,7 @@ public: ...@@ -146,6 +147,7 @@ public:
{} {}
public: public:
//! \brief La chaîne de caractères.
std::string str; std::string str;
}; };
...@@ -163,7 +165,9 @@ public: ...@@ -163,7 +165,9 @@ public:
{} {}
public: public:
//! \brief La valeur de la propriété.
int val = 0; int val = 0;
//! \brief Les valeurs minimales et maximales de la propriété.
const int prop_min, prop_max; const int prop_min, prop_max;
}; };
...@@ -179,6 +183,7 @@ public: ...@@ -179,6 +183,7 @@ public:
CoordinateProperty(Coord arg) : c(arg) CoordinateProperty(Coord arg) : c(arg)
{} {}
//! \brief La valeur de la coordonnée.
Coord c; Coord c;
}; };
...@@ -186,12 +191,13 @@ public: ...@@ -186,12 +191,13 @@ public:
\class PropertyList \class PropertyList
\brief Représente une liste de propriétés. \brief Représente une liste de propriétés.
\todo Documenter l'ensemble des fonctions membres.
**/ **/
struct PropertyList : public PropertyImpl<PropertyList> struct PropertyList : public PropertyImpl<PropertyList>
{ {
public: public:
//! \brief Appelée internalement par la macro de création de liste, les arguments après is_dynamic sont accessibles depuis la macro, en arguments variables.
//! \param in_min_size La taille minimale de la liste.
//! \param in_max_size La taille maximale de la liste.
PropertyList(std::unique_ptr<Property>(*create_function)(void), bool is_dynamic = false, int in_min_size = 0, int in_max_size = std::numeric_limits<int>::max()) PropertyList(std::unique_ptr<Property>(*create_function)(void), bool is_dynamic = false, int in_min_size = 0, int in_max_size = std::numeric_limits<int>::max())
: dynamic(is_dynamic), min_size(in_min_size), max_size(in_max_size), m_create_function(create_function) : dynamic(is_dynamic), min_size(in_min_size), max_size(in_max_size), m_create_function(create_function)
{ {
...@@ -200,25 +206,39 @@ public: ...@@ -200,25 +206,39 @@ public:
push_back(); push_back();
} }
//! \brief Retourne true si la liste est vide, false sinon.
//! \returns true si la liste est vide, false sinon.
bool empty() const bool empty() const
{ return contents.empty(); } { return contents.empty(); }
//! \brief Vide la liste.
void clear() void clear()
{ contents.clear(); } { contents.clear(); }
//! \brief Retourne la taille actuelle de la liste.
//! \returns La taille de la liste.
size_t size() const size_t size() const
{ return contents.size(); } { return contents.size(); }
//! \brief Insère un élément dans la liste.
//! \returns Une référence vers la propriété insérée.
Property& push_back() Property& push_back()
{ {
if ((int)size() < max_size) if ((int)size() < max_size)
contents.emplace_back(m_create_function()); contents.emplace_back(m_create_function());
return back(); return back();
} }
//! \brief Enlève l'élément le plus à droite de la liste.
void pop_back() void pop_back()
{ {
if (dynamic && !contents.empty() && (int)size() > min_size) if (dynamic && !contents.empty() && (int)size() > min_size)
contents.pop_back(); contents.pop_back();
} }
//! \brief Récupère l'élément le plus à droite de la liste.
//! \returns Une référence vers cet élément.
Property& back() Property& back()
{ return *contents.back(); } { return *contents.back(); }
//! \brief Récupère l'élément à un indice donné.
//! \param i L'indice.
//! \returns Une référence vers cet élément.
//! \exception std::out_of_range si l'indice est invalide.
Property& at(size_t i) Property& at(size_t i)
{ {
if (i < size()) if (i < size())
...@@ -228,9 +248,13 @@ public: ...@@ -228,9 +248,13 @@ public:
} }
public: public:
//! \brief Vrai si la liste est extensible, faux si elle est fixe.
const bool dynamic; const bool dynamic;
//! \brief Taille minimale.
const int min_size; const int min_size;
//! \brief Taille maximale.
const int max_size; const int max_size;
//! \brief Le vector contenant les éléments de la liste.
std::vector<std::unique_ptr<Property>> contents; std::vector<std::unique_ptr<Property>> contents;
private: private:
std::unique_ptr<Property>(*m_create_function)(void); std::unique_ptr<Property>(*m_create_function)(void);
......
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
\brief Classes filles de PropertyVisitor \brief Classes filles de PropertyVisitor
Fichier contenant diverses classes filles de PropertyVisitor permettant l'affichage sur l'interface, le chargement et la sauvegarder en JSON d'objets Property. Fichier contenant diverses classes filles de PropertyVisitor permettant l'affichage sur l'interface, le chargement et la sauvegarder en JSON d'objets Property.
\todo Documenter les méthodes
**/ **/
...@@ -19,11 +17,12 @@ Fichier contenant diverses classes filles de PropertyVisitor permettant l'affich ...@@ -19,11 +17,12 @@ Fichier contenant diverses classes filles de PropertyVisitor permettant l'affich
#include "property.hpp" #include "property.hpp"
class propertyvisitorsException : public std::exception //! \brief Exception lancée lors d'une erreur liée aux visiteurs de propriétés.
class PropertyVisitorException : public std::exception
{ {
std::string _msg; std::string _msg;
public: public:
propertyvisitorsException(const std::string& msg) : _msg(msg){} PropertyVisitorException(const std::string& msg) : _msg(msg){}
virtual const char* what() const noexcept override virtual const char* what() const noexcept override
{ {
......
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
\brief Structure \brief Structure
Fichier contenant la classe Structure, représentant un ensemble de cellules constituant une structure. Fichier contenant la classe Structure, représentant un ensemble de cellules constituant une structure.
\todo Avoir un moyen de classifier les structures selon une arborescense (la même que l'arborescence du système de fichier ?)
**/ **/
#ifndef STRUCTURE_HPP #ifndef STRUCTURE_HPP
......
/* /**
* <32021 by Stellaris. Copying Art is an act of love. Love is not subject to law. \file structurelibraryview.hpp
*/ \author Yann Boucher
\version 1
\brief StructureLibraryView
Widget de la bibliothèque de structures.
**/
#ifndef STRUCTURELIBRARYVIEW_HPP #ifndef STRUCTURELIBRARYVIEW_HPP
#define STRUCTURELIBRARYVIEW_HPP #define STRUCTURELIBRARYVIEW_HPP
...@@ -16,21 +21,25 @@ namespace Ui { ...@@ -16,21 +21,25 @@ namespace Ui {
class StructureLibraryView; class StructureLibraryView;
} }
// TODO : Documenter //! \brief Widget de la bibliothèque de structures.
//! Ce widget représente la bibliothèque de structure, ses contrôles et l'affichage des données ex. description et titre.
class StructureLibraryView : public QFrame class StructureLibraryView : public QFrame
{ {
Q_OBJECT Q_OBJECT
public: public:
//! \brief Construit le widhet à partir du parent.
explicit StructureLibraryView(QWidget *parent = nullptr); explicit StructureLibraryView(QWidget *parent = nullptr);
~StructureLibraryView(); ~StructureLibraryView();
signals: signals:
//! \brief Signal émis lorsqu'une structure de la bibliothèque est copiée.
//! \param s La structure copiée.
void structure_copied(const Structure& s); void structure_copied(const Structure& s);
public slots: public slots:
//! Permet de mettre à jour la taille en pixels d'une cellule, pour que l'affichage d'un drag&drop soit correct //! \brief Permet de mettre à jour la taille en pixels d'une cellule, pour que l'affichage d'un drag&drop soit correct
//! \param size Côté en pixels.
void update_cell_pixel_size(unsigned size); void update_cell_pixel_size(unsigned size);
private: private:
......
...@@ -17,6 +17,7 @@ Fichier contenant la classe StructureReader et ses filles, permettant de lire un ...@@ -17,6 +17,7 @@ Fichier contenant la classe StructureReader et ses filles, permettant de lire un
class Structure; class Structure;
//! \brief Exception lancée lors d'un chargement de structure.
class StructureReaderException : public std::exception class StructureReaderException : public std::exception
{ {
public: public:
......
...@@ -19,6 +19,7 @@ Cette classe représente une règle de transition totalistique configurable. ...@@ -19,6 +19,7 @@ Cette classe représente une règle de transition totalistique configurable.
#include "mathexpr.hpp" #include "mathexpr.hpp"
#include "transitionrule.hpp" #include "transitionrule.hpp"
//! \brief Exception lancée lors de l'évaluation d'une règle totalistique.
class TotalisticRuleException : public std::exception class TotalisticRuleException : public std::exception
{ {
public: public:
......
...@@ -341,8 +341,6 @@ void MainWindow::save_model() ...@@ -341,8 +341,6 @@ void MainWindow::save_model()
QString filename = QFileDialog::getSaveFileName(this, "Choisir un nom de fichier", QString(), "Modèle d'automate (*.json)"); QString filename = QFileDialog::getSaveFileName(this, "Choisir un nom de fichier", QString(), "Modèle d'automate (*.json)");
// TODO : permettre de choisir auteur/titre/année/description
PropertySaverVisitor trans_saver; PropertySaverVisitor trans_saver;
for (auto& prop : transition_rule->get_properties()) for (auto& prop : transition_rule->get_properties())
prop->accept(trans_saver); prop->accept(trans_saver);
......
...@@ -315,7 +315,7 @@ void PropertyLoaderVisitor::visit(IntegerProperty &prop) ...@@ -315,7 +315,7 @@ void PropertyLoaderVisitor::visit(IntegerProperty &prop)
prop.val = val.toInt(); prop.val = val.toInt();
if (prop.val > prop.prop_max || prop.val < prop.prop_min) if (prop.val > prop.prop_max || prop.val < prop.prop_min)
{ {
throw propertyvisitorsException("Invalid property value"); throw PropertyVisitorException("Invalid property value");
} }
} }
} }
...@@ -339,7 +339,7 @@ void PropertyLoaderVisitor::visit(PropertyList &prop) ...@@ -339,7 +339,7 @@ void PropertyLoaderVisitor::visit(PropertyList &prop)
enter_value(val); enter_value(val);
if (!prop.dynamic && val.toArray().size() != (int)prop.contents.size()) if (!prop.dynamic && val.toArray().size() != (int)prop.contents.size())
throw propertyvisitorsException("Invalid array size"); throw PropertyVisitorException("Invalid array size");
prop.clear(); prop.clear();
for (int i = 0; i < val.toArray().size(); ++i) for (int i = 0; i < val.toArray().size(); ++i)
......
/* /**
* <32021 by Stellaris. Copying Art is an act of love. Love is not subject to law. \file structurelibraryview.cpp
*/ \author Yann Boucher
\version 1
\brief StructureLibraryView
Widget de la bibliothèque de structures.
**/
#include "structurelibraryview.hpp" #include "structurelibraryview.hpp"
#include "ui_structurelibraryview.h" #include "ui_structurelibraryview.h"
......
...@@ -26,6 +26,7 @@ SOURCES += \ ...@@ -26,6 +26,7 @@ SOURCES += \
../src/transition_rules/circulartransition.cpp \ ../src/transition_rules/circulartransition.cpp \
../src/transition_rules/totalistictransition.cpp \ ../src/transition_rules/totalistictransition.cpp \
../src/mathexpr.cpp \ ../src/mathexpr.cpp \
../src/alphabet.cpp \
alphabet_test.cpp \ alphabet_test.cpp \
arbitraryneighborhoodrule_test.cpp \ arbitraryneighborhoodrule_test.cpp \
circulartransition_test.cpp \ circulartransition_test.cpp \
......
Markdown is supported
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