structurewriter.hpp 1.37 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
\file structurewrite.hpp
\date 13/05/2021
\author Yann Boucher
\version 1
\brief StructureWriter

Fichier contenant la classe StructureWrite et ses filles, permettant de sauvegarder une Structure sous différents formats de fichier.

                                                                   **/


#ifndef STRUCTUREWRITER_HPP
#define STRUCTUREWRITER_HPP

#include <string>

class Structure;

//! \class StructureWrite
//! Classe abstraite permettant de sauvegarder une Structure sous différents formats de fichier.
class StructureWriter
{
public:
25
26
27
28
29
    //! \brief Constructeur instanciant un StructureWriter.
    StructureWriter() = default;
    //! \brief Sauvegarde la structure 's' sous forme d'un std::string.
    //! \param s Structure à sauvegarde
    virtual std::string save_structure(const Structure& s) const = 0;
30
31
32
33
34
35
36
};

//! \class RLEStructureWrite
//! Sauvegarde une structure au format Extended RLE de Golly (https://www.conwaylife.com/wiki/Run_Length_Encoded)
class RLEStructureWriter : public StructureWriter
{
public:
37
    virtual std::string save_structure(const Structure& s) const;
38
39
40
41
42
43
44
45
46
47

private:
    std::string state_to_str(unsigned state);
};

//! \class JSONStructureWrite
//! Sauvegarde une structure au format JSON
class JSONStructureWriter : public StructureWriter
{
public:
48
    virtual std::string save_structure(const Structure& s) const;
49
50
51
};

#endif // STRUCTUREWRITER_HPP