Soit un paquetage déclarant un compteur :
Avec GNAT, lajout du simple pragma Shared_Passive rend ce compteur
Cest cette dernière propriété qui nous intéresse ici.
Vous trouverez ci-après deux sources vous permettant de vérifier rapidement cette propriété de persistance sur votre plateforme favorite.
Il y a :
un paquetage Preferences, déclarant des variables à sauver,
et une procédure principale nomée Run qui modifie et affiche ces variables.
Ce petit exemple se compile par gnatmake run.
Exécutons le plusieurs fois. Que constate-t-on ?
dabord, je lespère, que ca marche :-), cest à dire que, par exemple, le compteur dexécution augmente à chaque fois.
ensuite, que des fichiers se sont créés dans le répertoire dexécution. Nommés paquetage.variable, ils sont aisément identifiables. Si on les affiches, on vérifiera quils sont bien dans un format binaire.
Quelques remarques complémentaires :
il sagit dune technique spécifique à GNAT. Ces sources sont de lAda légal, et sont donc compilable avec nimporte quel compilateur. Mais, avec un autre compilateur que GNAT, les variables reprendront leurs valeurs par défaut à chaque exécution. Cette limitation de portabilité ou de fonctionnalité est à mettre dans la balance.
moyennant le positionnement dune variable denvironnement, GNAT peut effectuer la sauvegarde dans un autre répertoire que le répertoire courant.
Dans notre exemple, le fichier preferences.level nest créé qua la troisième exécution : un fichier nest créé que lorsque la variable correspondante est modifiée.
On peut utiliser des objets protégés pour gérer de possibles écritures simultanées par plusieures applis sur les mêmes variables. La encore, laspect persistance est transparent, il sagit de code "normal".
Enfin, et pour peu que lon remplace le paquetage standart de gestion des IO des Stream de GNAT par la version XDR de GLADE, ces fichiers sont partageables entre plateformes dendianess différente.
Pour une description plus précise de ces points, il faut se reporter au GNAT Reference Manual.