#include #include "gst_ptr_pile.h" struct pptr_st { int valeur_max; int *inc; int *dec; int *efface; int *sortie; int valeur; }; pptr_st pptr_init (int *inc, int *dec, int *efface, int *sortie, int valeur_max) { pptr_st pptr = (pptr_st) malloc (sizeof (struct pptr_st)); assert (pptr != NULL); pptr->inc = inc; pptr->dec = dec; pptr->efface = efface; pptr->sortie = sortie; pptr->valeur_max = valeur_max; pptr->valeur = valeur_max; return pptr; } void pptr_evalue (pptr_st pptr) { if (*pptr->efface) pptr->valeur = pptr->valeur_max; else if (*pptr->inc && pptr->valeur < pptr->valeur_max) pptr->valeur++; else if (*pptr->dec && pptr->valeur > 0) pptr->valeur--; *pptr->sortie = pptr->valeur; } void pptr_libere (pptr_st pptr) { free (pptr); }