#if !defined(_QUEUE_H_)

/*
**  This file forms part of the GOBLIN C++ Class Library.
**
**  Written by Christian Fremuth-Paeger, December 1998.
**  
**  Copying, compiling, distribution and modification
**  of this source code is permitted only in accordance
**  with the GOBLIN general licence information.
*/             


#define _QUEUE_H_

#include <absobj.h>


template <class TItem,class TKey>
class goblinQueue : public virtual goblinDataObject
{
public:

    virtual unsigned long   Size() throw() = 0;

    virtual void   Insert(TItem w,TKey alpha) throw(ERRange,ERRejected,ERCheck) = 0;
    virtual TItem  Delete() throw(ERRejected) = 0;
    virtual void   ChangeKey(TItem w,TKey alpha) throw(ERRange,ERRejected) {};
    virtual TItem  Peek() throw(ERRejected) = 0;
    virtual bool   Empty() throw() {return Cardinality()==0;};
    virtual void   Init() throw() {while (!Empty()) Delete();};
    virtual TItem  Cardinality() throw() = 0;

};
    

#endif
