//----------------------------------------------------------------------
//  SPECIFICATION FILE (bqueue.h)
//  This module exports an ADT for a queue of integer values.
//  The maximum queue length is MAX_LENG.
//----------------------------------------------------------------------
#include "bool.h"

// DOMAIN: An IntQueue instance is a collection of integer values

const int MAX_LENG = 200;

class IntQueue {
public:
    Boolean IsEmpty() const;
        // POST: FCTVAL == (Length(queue) == 0)

    Boolean IsFull() const;
        // POST: FCTVAL == (Length(queue) == MAX_LENG)

    void Enqueue( /* in */ int newItem );
        // PRE:  Length(queue) < MAX_LENG  &&  Assigned(newItem)
        // POST: queue == AppendBack(queue<entry>,newItem)

    int Front() const;
        // PRE:  Length(queue) >= 1
        // POST: FCTVAL == Front(queue)

    void Dequeue();
        // PRE:  Length(queue) >= 1
        // POST: queue == RemoveFront(queue<entry>)

    IntQueue();
        // Constructor
        // POST: Created(queue)  &&  queue == <>
private:
    int data[MAX_LENG+1];
    int front;
    int rear;
};

