Bonjour, j'ai récemment développé une classe qui a pour tâche de sauvegarder des variables données telles-quel. Je m'inspire un peu de l'idée des mises en veille prolongée (ou hibernation sous Linux).

Je me demandais donc si une classe de ce genre peut-être réellement utiles, et je me réfère donc à votre avis.

Aperçu de la classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
class memever__{
   //...
 public:
 
    int LoadFile(char *Filename);   //charge le fichier contenant les variables et leurs valeurs
    int SaveFile(char *Filename);   //enregistre le fichier
    int ClearListeVar(void);        //nettoie la liste des variables...
    int DeleteVar(int id);          //supprime une variable d'id donnée
 
    void* GetVariable(int id);      //retourne un pointeur sur la variable d'id donnée (déjà alloué pour ceux qui sont depuis un fichier)
    template <typename T>
    T* SetVariable(int id, T* Ptr, size_t Nb); //Ajoute/Modifie une variable d'id donnée. Nb: pour les tableau (mettre à 1 pour simple variable)
 
    memever__(char *Filename);
    memever__();
}memever;
Comme on peut le remarquer, je me base sur un système d'id pour identifier les variables de sorte que:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
#define TEST_SAVE
 
int main(void){
#ifdef TEST_SAVE
    int *i = new int[4];
    i[0] = 6;
    i[1] = 10;
    i[2] = 17;
    i[3] = 23;
 
    memever.SetVariable(2, i, 4);
 
    char *c="ma mere est la plus belle de toutes...";
    memever.SetVariable(1, c, strlen(c));
 
    memever.SaveFile("test.mem");
 
#else
 
    memever.LoadFile("test.mem");
    int  *i =(int*) memever.GetVariable(2);
    char *c =(char*)memever.GetVariable(1);
 
    printf("c = '%s'\n", c);
    printf("i[0] = %d\n", i[0]);
    printf("i[1] = %d\n", i[1]);
    printf("i[2] = %d\n", i[2]);
    printf("i[3] = %d\n", i[3]);
#endif
    return 0;
}
Vos avis?