#include #include "gst_mem_principale.h" struct mp_st { int *actif; int *le; int *adresse; int *donnees; int *tab_memoire; int taille_tab; }; mp_st mp_init (int *actif, int *le, int *adresse, int *donnees, int *tab_memoire, int taille_tab) { mp_st mp_mem = (mp_st) malloc (sizeof (struct mp_st)); assert (mp_mem != NULL); mp_mem->actif = actif; mp_mem->le = le; mp_mem->adresse = adresse; mp_mem->donnees = donnees; mp_mem->tab_memoire = tab_memoire; mp_mem->taille_tab = taille_tab; return mp_mem; } void mp_evalue (mp_st mp) { assert (! (*mp->actif == 1 && (*mp->adresse < 0 || *mp->adresse > mp->taille_tab))); if (*mp->actif == 1) { if (*mp->le == 0) /* actif lecture */ *mp->donnees = mp->tab_memoire [*mp->adresse]; else /* actif écriture */ mp->tab_memoire [*mp->adresse] = *mp->donnees; } } void mp_libere (mp_st mp) { free (mp); }