home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / IAPRIOQU.H < prev    next >
Text File  |  1993-09-22  |  6KB  |  142 lines

  1. /*******************************************************************************
  2. *                                                                              *
  3. * COPYRIGHT:                                                                   *
  4. *   IBM C/C++ Tools Version 2.01 - Collection Class Library                    *
  5. *   Licensed Materials - Property of IBM                                       *
  6. *   (C) Copyright IBM Corporation 1992, 1993                                   *
  7. *   All Rights Reserved                                                        *
  8. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  9. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  10. *                                                                              *
  11. *******************************************************************************/
  12. #ifndef _IAPRIOQU_H
  13. #define _IAPRIOQU_H
  14.  
  15. #include <iglobals.h>
  16. #include <icursor.h>
  17.  
  18. template < class Element, class Key >
  19. class IAPriorityQueue {
  20. public:
  21.  
  22.   virtual                ~IAPriorityQueue               ();
  23.  
  24.   virtual IBoolean       add                    (Element const&) = 0;
  25.  
  26.   virtual IBoolean       add                    (Element const&,
  27.                                                  ICursor&) = 0;
  28.  
  29.   virtual void           addAllFrom             (IAPriorityQueue
  30.                                                    < Element, Key > const&);
  31.  
  32.   virtual void           copy                   (IAPriorityQueue
  33.                                                    < Element, Key > const&);
  34.  
  35.   virtual Element const& elementAt              (ICursor const&) const = 0;
  36.  
  37.   virtual Element const& anyElement             () const = 0;
  38.  
  39.   virtual void           removeAll              () = 0;
  40.  
  41.   virtual IBoolean       isBounded              () const = 0;
  42.  
  43.   virtual INumber        maxNumberOfElements    () const = 0;
  44.  
  45.   virtual INumber        numberOfElements       () const = 0;
  46.  
  47.   virtual IBoolean       isEmpty                () const = 0;
  48.  
  49.   virtual IBoolean       isFull                 () const = 0;
  50.  
  51.   virtual ICursor*       newCursor              () const = 0;
  52.  
  53.   virtual IBoolean       setToFirst             (ICursor&) const = 0;
  54.  
  55.   virtual IBoolean       setToNext              (ICursor&) const = 0;
  56.  
  57.   virtual IBoolean       allElementsDo          (IBoolean (*function)
  58.                                                   (Element const&, void*),
  59.                                                  void* additionalArgument = 0)
  60.                                                 const = 0;
  61.  
  62.   virtual IBoolean       allElementsDo          (IConstantIterator
  63.                                                    <Element>&) const = 0;
  64.  
  65.   virtual IBoolean       isConsistent           () const = 0;
  66.  
  67.   virtual Key const&     key                    (Element const&) const = 0;
  68.  
  69.   virtual IBoolean       containsElementWithKey (Key const&) const = 0;
  70.  
  71.   virtual IBoolean       containsAllKeysFrom    (IAPriorityQueue
  72.                                                    < Element, Key > const&)
  73.                                                 const;
  74.  
  75.   virtual IBoolean       locateElementWithKey   (Key const&, ICursor&)
  76.                                                 const = 0;
  77.  
  78.   virtual IBoolean       locateOrAddElementWithKey (Element const&) = 0;
  79.  
  80.   virtual IBoolean       locateOrAddElementWithKey (Element const&,
  81.                                                     ICursor&) = 0;
  82.  
  83.   virtual Element const& elementWithKey         (Key const&) const = 0;
  84.  
  85.   virtual INumber        numberOfElementsWithKey   (Key const&) const = 0;
  86.  
  87.   virtual IBoolean       locateNextElementWithKey  (Key const&,
  88.                                                     ICursor&) const = 0;
  89.  
  90.   virtual INumber        numberOfDifferentKeys  () const = 0;
  91.  
  92.   virtual IBoolean       setToNextWithDifferentKey (ICursor&) const = 0;
  93.  
  94.   virtual void           removeFirst            () = 0;
  95.  
  96.   virtual Element const& firstElement           () const = 0;
  97.  
  98.   virtual Element const& lastElement            () const = 0;
  99.  
  100.   virtual Element const& elementAtPosition      (IPosition) const = 0;
  101.  
  102.   virtual IBoolean       setToLast              (ICursor&) const = 0;
  103.  
  104.   virtual IBoolean       setToPrevious          (ICursor&) const = 0;
  105.  
  106.   virtual void           setToPosition          (IPosition, ICursor&) const = 0;
  107.  
  108.   virtual IBoolean       isFirst                (ICursor const&) const = 0;
  109.  
  110.   virtual IBoolean       isLast                 (ICursor const&) const = 0;
  111.  
  112.   virtual long           compare                (IAPriorityQueue
  113.                                                    < Element, Key > const&,
  114.                                                  long (*comparisonFunction)
  115.                                                    (Element const&,
  116.                                                     Element const&)) const;
  117.  
  118.   virtual void           enqueue                (Element const&) = 0;
  119.  
  120.   virtual void           enqueue                (Element const&, ICursor&) = 0;
  121.  
  122.   virtual void           dequeue                () = 0;
  123.  
  124.   virtual void           dequeue                (Element&) = 0;
  125.  
  126.  
  127. protected:
  128.   virtual void* identity () const;
  129.           Boolean isIdentical (IAPriorityQueue < Element, Key > const&
  130.                                  collection) const
  131.           { return identity () == collection.identity ();
  132.           }
  133. };
  134.  
  135. #ifdef __IBMCPP__
  136. #ifndef __TEMPINC__
  137. #include <iaprioqu.c>
  138. #endif
  139. #endif
  140.  
  141. #endif
  142.