2012-08-02 6 views
1

Je travaille sur un projet dans un microcontrôleur et j'ai besoin de conserver certains paramètres. Imaginez que c'est un iPod. Je dois enregistrer divers paramètres tels que CurrentSongPlaying, CurrentVolume, etc. afin que lorsque je me rallume, je puisse restaurer ces paramètres. Le problème que je rencontre est qu'il est logique de stocker tous mes paramètres non volatiles dans une seule structure que je peux sérialiser/désérialiser de la mémoire, mais je ne peux pas trouver un moyen de rendre cela possible sans que la classe fasse le sérialisation/désérialisation à partir de la mémoire non volatile, y compris chaque classe qui contient un paramètre qui devra être sauvegardé pour les informations de taille/type. Existe-t-il une sorte de modèle de conception qui me permettra de conserver tous ces paramètres en mémoire sans avoir à savoir ce que je sauve?Objets persistants tout en conservant le couplage lâche

+0

Pouvez-vous montrer un exemple, pseudo-code à tout le moins, de ce que vous essayez d'atteindre? – netcoder

+0

Ne pouvez-vous pas passer en C++? Héritage/polymorphisme rend tout ce genre de choses beaucoup plus facile! –

+1

On dirait que vous avez juste besoin d'un tableau associatif. – netcoder

Répondre

1

On dirait que vous avez juste besoin d'un associative array. Un tableau associatif (ou carte) est un conteneur qui vous permet de mapper des valeurs différentes à des clés uniques. Il peut avoir une taille fixe ou dynamique en fonction de l'implémentation. Couplé avec un mécanisme de sérialisation approprié, il vous permet de sauvegarder et restaurer son état sans avoir à connaître son contenu à l'avance.

Cependant, C ne fournit pas cette structure de données prête à l'emploi. Look at this question for a few implementations. L'implémentation la plus courante est la hash table, également appelée carte de hachage.

0

POO et les classes ne sont pas faciles à mettre en œuvre en C.

Si vous utilisez C est un must, j'écrire le fichier struct. Puis je les lirais et les analyserais lors de l'initialisation au redémarrage.

Vous pouvez considérer cela comme une sérialisation de vos structures.

+0

C'est l'approche que j'ai suggérée dans ma question, le problème est que je dois inclure toutes les autres "classes" (fichiers d'entête) pour tout "objet" (type) que je veux sérialiser afin que la structure puisse les connaître. Comment éviter la "classe" qui fait que l'écriture/la lecture doit inclure chaque fichier contenant un "objet" que je voudrais sauvegarder en mémoire. –

Questions connexes