From 2c9e9137bb9a65be75d525630d51e25f62425eca Mon Sep 17 00:00:00 2001 From: Yann Boucher <yann.boucher@etu.utc.fr> Date: Fri, 7 May 2021 17:24:49 +0200 Subject: [PATCH] Added a bit of missing documentation, added an entry to the .gitignore --- .gitignore | 2 ++ include/propertyvisitors.hpp | 24 ++++++++++++++++++++++-- include/structurereader.hpp | 33 +++++++++++++++++++++++++++++++-- src/structurereader.cpp | 8 ++++++++ 4 files changed, 63 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c2fca8a..8ef8093 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,8 @@ Makefile* *.qm *.prl +build/ + # Qt unit tests target_wrapper.* diff --git a/include/propertyvisitors.hpp b/include/propertyvisitors.hpp index 50aa41d..84f26a1 100644 --- a/include/propertyvisitors.hpp +++ b/include/propertyvisitors.hpp @@ -19,10 +19,17 @@ Fichier contenant diverses classes filles de PropertyVisitor permettant l'affich #include "property.hpp" +/** +\class UIBuilderVisitor + +Cette classe permet de remplir un widget fourni en argument avec une représentation interactive de Property. +**/ class UIBuilderVisitor : public PropertyVisitor { public: - // destrucive = true if we want to rebuild the layout of the base_widget passed in parameter + //! Construit le UIBuilderVisitor à partir d'un base_widget. + //! \param base_widget le widget. + //! \param destructive indique si l'on détruit le contenu déjà présent dans base_widget ou non. UIBuilderVisitor(QWidget* base_widget, bool destructive = true); private: @@ -42,12 +49,18 @@ private: std::stack<QWidget*> m_widget_hierarchy; }; +/** +\class PropertySaverVisitor +Cette classe permet de sauvegarder un ensemble de Property dans un fichier JSON donné. +**/ class PropertySaverVisitor : public PropertyVisitor { public: + //! Construit le PropertySaverVisitor. PropertySaverVisitor(); - + //! Sauvegarde les données des Property visitées au format JSON dans le fichier. + //! \param filename Le nom du fichier. void save(const std::string& filename); private: @@ -66,9 +79,16 @@ private: std::stack<QVariant> m_current_hierarchy; }; +/** +\class PropertyLoaderVisitor + +Cette classe permet de charger un ensemble de Property depuis un fichier JSON donné. +**/ class PropertyLoaderVisitor : public PropertyVisitor { public: + //! Construit le PropertyLoaderVisitor à partir des données contenues dans un fichier JSON. + //! \param filename Le nom du fichier. PropertyLoaderVisitor(const std::string& filename); private: diff --git a/include/structurereader.hpp b/include/structurereader.hpp index f8c0160..b538277 100644 --- a/include/structurereader.hpp +++ b/include/structurereader.hpp @@ -1,3 +1,14 @@ +/** +\file structurereader.hpp +\date 07/05/2021 +\author Yann Boucher +\version 1 +\brief StructureReader + +Fichier contenant la classe StructureReader et ses filles, permettant de lire une Structure à partir de différents formats de fichier. + +**/ + #ifndef STRUCTUREREADER_HPP #define STRUCTUREREADER_HPP @@ -6,8 +17,6 @@ class Structure; -// TODO : documenter ce fichier - // TODO : adapter cettre classe d'Exception en la faisant hériter à notre propre classe d'Exception class StructureReaderException : public std::exception { @@ -23,24 +32,40 @@ private: const std::string m_what; }; +//! \class StructureReader +//! Classe abstraite permettant de lire une Structure à partir de différents formats de fichier. class StructureReader { public: + //! \brief Constructeur prenant en argument les données du fichier à lire sous forme de std::string StructureReader(const std::string& in_data): m_idx(0), m_data(in_data) {} + //! \brief Retourne la structure lue. + //! \exception StructureReaderException si il y a une erreur lors de la lecture virtual Structure read_structure() = 0; protected: + //! \brief Retourne le caractère au niveau du curseur actuel. char peek() const; + //! \brief Lit le caractère actuel sous le curseur, et avance le curseur. char read(); + //! \brief Retourne vrai si l'entièreté des données a été lue, faux sinon. bool eof() const; + //! \brief Renvoie une exception si les données sous le curseur actuelles sont différentes de str, avance le curseur sinon. void expect(const std::string& str); + //! \brief Retourne vrai si ls données sous le curseur correspondent à str et avance le curseur, retourne faux sinon. bool accept(const std::string& str); + //! \brief Lit un mot délimité par des espaces dans l'entrée. std::string read_word(); + //! \brief Lit la ligne actuelle dans l'entrée, à partir du curseur. std::string read_line(); + //! \brief Retourne toutes les données situées à partir du curseur. std::string data_left() const; + //! \brief Lit un entier dans l'entrée. + //! \exception StructureReaderException si il y a une erreur lors de la lecture de l'entier int read_int(); + //! \brief Avance le curseur jusqu'au premier caractère qui n'est pas un espace. void read_white(); private: @@ -48,6 +73,8 @@ private: const std::string& m_data; }; +//! \class RLEStructureReader +//! Lit une structure au format Extended RLE de Golly (https://www.conwaylife.com/wiki/Run_Length_Encoded) class RLEStructureReader : public StructureReader { public: @@ -60,6 +87,8 @@ private: unsigned read_state(); }; +//! \class StructureReader +//! Lit une structure au format JSON. class JSONStructureReader : public StructureReader { public: diff --git a/src/structurereader.cpp b/src/structurereader.cpp index 6c70e1b..bd9fc31 100644 --- a/src/structurereader.cpp +++ b/src/structurereader.cpp @@ -1,3 +1,11 @@ +/** +\file structurereader.cpp +\date 07/05/2021 +\author Yann Boucher +\version 1 +\brief StructureReader +**/ + #include "structurereader.hpp" #include <QByteArray> -- GitLab