// petit-automate.c

// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.

#include <stdio.h>
#include "chl.h"
#include "cellule.h"
#include "liste.h"
#include "ensemble.h"


void petitAutomate(Ensemble X, int m,
                   int *resInit, int *resTerm, int masq[]) {
   int init, term;
   int p;
   Lettre a;
   Mot x;

   init = 0;
   term = 0;
   for (a = PREMIERELETTRE; a <= DERNIERELETTRE; ++a)
      masq[a] = 0;
   p = 1;
   lister(X);
   while (!fin(X)) {
      init |= p;
      for (x = (Mot)suivant(X); *x != '\0'; ++x) {
         masq[*x] |= p;
         p <<= 1;
      }
      term |= (p >> 1);
   }
   *resInit = init;
   *resTerm = term;
}