-- Code of Figure 9.12, pages 380-381 from
-- Kenneth C. Louden, Programming Languages
-- Principles and Practice 2nd Edition
-- Copyright (C) Brooks-Cole/ITP, 2003

with Ada.Text_IO; use Ada.Text_IO;

with Ada.Float_Text_IO;
use Ada.Float_Text_IO;

with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;

with Queues;

procedure Quser is

package IntQueues is new Queues(Integer);
use IntQueues;

package FloatQueues is new Queues(Float);
use FloatQueues;

fq: FloatQueues.Queue := createq;
iq: IntQueues.Queue := createq;

begin
  fq := enqueue(fq,3.1);
  fq := enqueue(fq,2.3);
  iq := enqueue(iq,3);
  iq := enqueue(iq,2);
  put(frontq(iq)); -- prints 3
  new_line;
  fq := dequeue(fq);
  put(frontq(fq)); -- prints 2.3
  new_line;
end Quser;
