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
#include <exception>
#include <vector>
//! \brief Exception lancée lors d'une erreur de manipulation de l'alphabet.
class AlphabetException : public std::exception
{
public:
......
......@@ -11,8 +11,6 @@ Cette classe représente le widget utilisé pour l'affichage et l'interaction av
#ifndef GRIDVIEW_HPP
#define GRIDVIEW_HPP
// TODO : documenter
#include <map>
#include <QFrame>
......
......@@ -16,6 +16,8 @@ Cette classe représente un historique de Grids.
#include <string>
#include <deque>
#include <exception>
//! \brief Exception lancée lors d'une erreur de manipulation de l'historique.
class HistoryException : public std::exception
{
std::string _msg;
......
......@@ -14,6 +14,7 @@ Ce fichier contient une fonction permettant d'exécuter une expression mathémat
#include <map>
#include <exception>
//! \brief Exception lancée lors de l'évaluation d'une expression mathématique.
class MathExprException : public std::exception
{
public:
......
......@@ -12,6 +12,7 @@ namespace Ui {
class ModelLoadingDialog;
}
//! \brief Exception lancée lors d'une erreur de chargement de modèle.
class ModelLoadingException : public std::exception
{
std::string _msg;
......
......@@ -20,6 +20,7 @@ Cette classe représente le voisinage d'une cellule.
using namespace std;
//! \brief Exception lancée lors d'une erreur de manipulation d'un voisinage.
class NeighborhoodException : public std::exception
{
std::string _msg;
......
......@@ -116,6 +116,7 @@ public:
}
protected:
//! \brief Appelée internalement par les macros DEFINE_CONFIGURABLE_*.
template <typename PropertyType, typename... Args>
PropertyType& register_property(const std::string& name, Args&&... args)
{
......@@ -146,6 +147,7 @@ public:
{}
public:
//! \brief La chaîne de caractères.
std::string str;
};
......@@ -163,7 +165,9 @@ public:
{}
public:
//! \brief La valeur de la propriété.
int val = 0;
//! \brief Les valeurs minimales et maximales de la propriété.
const int prop_min, prop_max;
};
......@@ -179,6 +183,7 @@ public:
CoordinateProperty(Coord arg) : c(arg)
{}
//! \brief La valeur de la coordonnée.
Coord c;
};
......@@ -186,12 +191,13 @@ public:
\class PropertyList
\brief Représente une liste de propriétés.
\todo Documenter l'ensemble des fonctions membres.
**/
struct PropertyList : public PropertyImpl<PropertyList>
{
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())
: dynamic(is_dynamic), min_size(in_min_size), max_size(in_max_size), m_create_function(create_function)
{
......@@ -200,25 +206,39 @@ public:
push_back();
}
//! \brief Retourne true si la liste est vide, false sinon.
//! \returns true si la liste est vide, false sinon.
bool empty() const
{ return contents.empty(); }
//! \brief Vide la liste.
void clear()
{ contents.clear(); }
//! \brief Retourne la taille actuelle de la liste.
//! \returns La taille de la liste.
size_t size() const
{ 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()
{
if ((int)size() < max_size)
contents.emplace_back(m_create_function());
return back();
}
//! \brief Enlève l'élément le plus à droite de la liste.
void pop_back()
{
if (dynamic && !contents.empty() && (int)size() > min_size)
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()
{ 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)
{
if (i < size())
......@@ -228,9 +248,13 @@ public:
}
public:
//! \brief Vrai si la liste est extensible, faux si elle est fixe.
const bool dynamic;
//! \brief Taille minimale.
const int min_size;
//! \brief Taille maximale.
const int max_size;
//! \brief Le vector contenant les éléments de la liste.
std::vector<std::unique_ptr<Property>> contents;
private:
std::unique_ptr<Property>(*m_create_function)(void);
......
......@@ -6,8 +6,6 @@
\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.
\todo Documenter les méthodes
**/
......@@ -19,11 +17,12 @@ Fichier contenant diverses classes filles de PropertyVisitor permettant l'affich
#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;
public:
propertyvisitorsException(const std::string& msg) : _msg(msg){}
PropertyVisitorException(const std::string& msg) : _msg(msg){}
virtual const char* what() const noexcept override
{
......
......@@ -6,8 +6,6 @@
\brief 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
......
/*
* <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
#define STRUCTURELIBRARYVIEW_HPP
......@@ -16,21 +21,25 @@ namespace Ui {
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
{
Q_OBJECT
public:
//! \brief Construit le widhet à partir du parent.
explicit StructureLibraryView(QWidget *parent = nullptr);
~StructureLibraryView();
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);
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);
private:
......
......@@ -17,6 +17,7 @@ Fichier contenant la classe StructureReader et ses filles, permettant de lire un
class Structure;
//! \brief Exception lancée lors d'un chargement de structure.
class StructureReaderException : public std::exception
{
public:
......
......@@ -19,6 +19,7 @@ Cette classe représente une règle de transition totalistique configurable.
#include "mathexpr.hpp"
#include "transitionrule.hpp"
//! \brief Exception lancée lors de l'évaluation d'une règle totalistique.
class TotalisticRuleException : public std::exception
{
public:
......
......@@ -341,8 +341,6 @@ void MainWindow::save_model()
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;
for (auto& prop : transition_rule->get_properties())
prop->accept(trans_saver);
......
......@@ -315,7 +315,7 @@ void PropertyLoaderVisitor::visit(IntegerProperty &prop)
prop.val = val.toInt();
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)
enter_value(val);
if (!prop.dynamic && val.toArray().size() != (int)prop.contents.size())
throw propertyvisitorsException("Invalid array size");
throw PropertyVisitorException("Invalid array size");
prop.clear();
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 "ui_structurelibraryview.h"
......
......@@ -26,6 +26,7 @@ SOURCES += \
../src/transition_rules/circulartransition.cpp \
../src/transition_rules/totalistictransition.cpp \
../src/mathexpr.cpp \
../src/alphabet.cpp \
alphabet_test.cpp \
arbitraryneighborhoodrule_test.cpp \
circulartransition_test.cpp \
......
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