home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cset21v1.zip
/
IBMCPP
/
IBMCLASS
/
IPQUKSB.H
< prev
next >
Wrap
Text File
|
1993-09-22
|
6KB
|
158 lines
/*******************************************************************************
* *
* COPYRIGHT: *
* IBM C/C++ Tools Version 2.01 - Collection Class Library *
* Licensed Materials - Property of IBM *
* (C) Copyright IBM Corporation 1992, 1993 *
* All Rights Reserved *
* US Government Users Restricted Rights - Use, duplication, or disclosure *
* restricted by GSA ADP Schedule Contract with IBM Corp. *
* *
*******************************************************************************/
#ifndef _IPQUKSB_H
#define _IPQUKSB_H
#include <iglobals.h>
#include <icursor.h>
template < class Element, class Key, class ElementOps, class Base >
class IWPQueOnKSBag {
Base ivBase;
class Cursor;
friend class Cursor;
public:
class Cursor : public Base::Cursor {
protected:
IBoolean isFor (IWPQueOnKSBag
< Element, Key, ElementOps, Base > const& c) const
{ return Base::Cursor::isFor (c.ivBase); }
public:
Cursor (IWPQueOnKSBag < Element, Key, ElementOps, Base > const& c)
: Base::Cursor (c.ivBase) {}
};
IWPQueOnKSBag (INumber
numberOfElements = 100);
IWPQueOnKSBag (IWPQueOnKSBag < Element, Key, ElementOps, Base > const&);
IWPQueOnKSBag < Element, Key, ElementOps, Base >&
operator = (IWPQueOnKSBag < Element, Key, ElementOps, Base > const&);
~IWPQueOnKSBag ();
IBoolean add (Element const&);
IBoolean add (Element const&,
ICursor&);
void addAllFrom (IWPQueOnKSBag < Element, Key, ElementOps, Base > const&);
Element const& elementAt (ICursor const&) const;
Element const& anyElement () const;
void removeAll ();
IBoolean isBounded () const;
INumber maxNumberOfElements () const;
INumber numberOfElements () const;
IBoolean isEmpty () const;
IBoolean isFull () const;
ICursor* newCursor () const;
IBoolean setToFirst (ICursor&) const;
IBoolean setToNext (ICursor&) const;
IBoolean allElementsDo (IBoolean (*function)
(Element const&, void*),
void* additionalArgument = 0)
const;
IBoolean allElementsDo (IConstantIterator
<Element>&) const;
IBoolean isConsistent () const;
Key const& key (Element const&) const;
IBoolean containsElementWithKey (Key const&) const;
IBoolean containsAllKeysFrom (IWPQueOnKSBag < Element, Key, ElementOps, Base > const&) const;
IBoolean locateElementWithKey (Key const&, ICursor&)
const;
IBoolean locateOrAddElementWithKey (Element const&);
IBoolean locateOrAddElementWithKey (Element const&,
ICursor&);
Element const& elementWithKey (Key const&) const;
INumber numberOfElementsWithKey (Key const&) const;
IBoolean locateNextElementWithKey (Key const&,
ICursor&) const;
INumber numberOfDifferentKeys () const;
IBoolean setToNextWithDifferentKey (ICursor&) const;
void removeFirst ();
Element const& firstElement () const;
Element const& lastElement () const;
Element const& elementAtPosition (IPosition) const;
IBoolean setToLast (ICursor&) const;
IBoolean setToPrevious (ICursor&) const;
void setToPosition (IPosition,
ICursor&) const;
IBoolean isFirst (ICursor const&) const;
IBoolean isLast (ICursor const&) const;
long compare (IWPQueOnKSBag < Element, Key, ElementOps, Base > const&,
long (*comparisonFunction)
(Element const&,
Element const&)) const;
void enqueue (Element const&);
void enqueue (Element const&,
ICursor&);
void dequeue ();
void dequeue (Element&);
};
#define IDefineGPriorityQueueOnGKeySortedBag(GKSBag, GPrioQue) \
template < class Element, class Key, class ElementOps > \
class GPrioQue : \
public IWPQueOnKSBag < Element, Key, \
ElementOps, GKSBag < Element, Key, ElementOps > > { \
public: \
GPrioQue (INumber n = 100) : \
IWPQueOnKSBag < Element, Key, ElementOps, \
GKSBag < Element, Key, ElementOps > > (n) {} \
};
#include <ipquksb.if>
#endif