-- Nom du fichier		: Queue_Statique_G.ads
-- Auteur(s)			: HRR
-- Date de creation		: 92
-- But					: Specification du paquetage definissant
--						: une queue statique
-- Date de modification	: 1993/AGD
-- Motif				: Mise en forme et tests
-- Date de modification	: 1998/P.Farina
-- Motif				: Adaptation Ada95
-- Remarques			: Corps	: Queue_Statique_G.adb
--						: Test	: Queue_T.Ada

generic

  type T_Element is private;		-- Type des elements de la queue
  
package Queue_Statique_G is

  type T_Queue is limited private;	-- Structure monolithique !

procedure Effacer(Queue: in out T_Queue);
-- Efface la queue et definit une queue vide

procedure Deposer(Queue: in out T_Queue; Element: in T_Element);
-- Met un element en fin de queue

procedure Prelever(Queue: in out T_Queue; Element: out T_Element);
-- Enleve le premier element de la queue

function Vide(Queue: in T_Queue) return Boolean;
-- Verifie si la queue est vide

Erreur_Queue_Vide	: exception;	-- Impossible de prelever
Erreur_Queue_Pleine	: exception;	-- Impossible de deposer


private

  Max : constant Integer := 128;		        -- Nombre max d'elements
  subtype T_Indice is Integer range 0 .. Max;	 -- Indice du tableau
  type T_Tableau is array(T_Indice) of T_Element;-- Elements de la queue
  
  type T_Queue is 
    record
	Tableau	    : T_Tableau;
    Ou_Deposer  : T_Indice := 0;   -- Suit le dernier element de la queue
	Ou_Prelever : T_Indice := 0;   -- Premier element de la queue
    end record;

end Queue_Statique_G;
