home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) IBM Corp. 1992 */
- #include <ibexcept.h>
-
- template < class Element, class Key, class ElementOps, class Base >
- inline IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- IWSrtRelOnKSBag (INumber n, IBoundIndicator b)
- : ivBase (n, b)
- {
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- IWSrtRelOnKSBag (IWSrtRelOnKSBag < Element, Key, ElementOps, Base > const& collection)
- : ivBase (collection.ivBase)
- {
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline IWSrtRelOnKSBag < Element, Key, ElementOps, Base >& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- operator= (IWSrtRelOnKSBag < Element, Key, ElementOps, Base > const& collection)
- { ivBase.operator= (collection.ivBase);
- return *this;
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- ~IWSrtRelOnKSBag ()
- {
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- add (Element const& element)
- { return ! locateOrAdd (element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- add (Element const& element, ICursor &cursor)
- { return ! locateOrAdd (element, cursor);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- addAllFrom (IWSrtRelOnKSBag < Element, Key, ElementOps, Base >
- const& collection)
- {
- #ifndef INO_CHECKS
- ICHECK (this != &collection,
- IIdenticalCollectionException, "identical collection in addAllFrom")
- #endif
- Cursor cursor (collection);
- forCursor (cursor) {
- add (collection.elementAt (cursor));
- }
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- elementAt (ICursor const& cursor) const
- { return ivBase.elementAt (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- elementAt (ICursor const& cursor)
- { return ivBase.elementAt (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- anyElement () const
- { return ivBase.anyElement ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeAt (ICursor const& cursor)
- { ivBase.removeAt (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeAll (Boolean (*predicate) (Element const&, void*), void* env)
- { return ivBase.removeAll (predicate, env);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- replaceAt (ICursor const& cursor, Element const& element)
- { ivBase.replaceAt (cursor, element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeAll ()
- { ivBase.removeAll ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- isBounded () const
- { return ivBase.isBounded ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- maxNumberOfElements () const
- { return ivBase.maxNumberOfElements ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- numberOfElements () const
- { return ivBase.numberOfElements ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- isEmpty () const
- { return ivBase.isEmpty ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- isFull () const
- { return ivBase.isFull ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline ICursor* IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- newCursor () const
- { return ivBase.newCursor ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- setToFirst (ICursor &cursor) const
- { return ivBase.setToFirst (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- setToNext (ICursor &cursor) const
- { return ivBase.setToNext (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- allElementsDo (Boolean (*iterationFunction) (Element &, void*),
- void* environment)
- { return ivBase.allElementsDo (iterationFunction, environment);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- allElementsDo (IIterator <Element>& iterator)
- { return ivBase.allElementsDo (iterator);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- allElementsDo (Boolean (*iterationFunction) (Element const&, void*),
- void* environment) const
- { return ivBase.allElementsDo (iterationFunction, environment);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- allElementsDo (IConstantIterator <Element>& iterator) const
- { return ivBase.allElementsDo (iterator);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- contains (Element const& element) const
- { Cursor cursor (*this);
- if (locateElementWithKey (cvElementOps.key (element), cursor)) {
- return cvElementOps.equal (elementAt (cursor), element);
- }
- else {
- return False;
- }
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- containsAllFrom (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection) const
- { Cursor cursor (collection);
- Boolean result = True;
- forCursor (cursor) {
- if (! contains (collection.elementAt (cursor))) {
- result = False;
- break;
- }
- }
- return result;
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- locate (Element const& element, ICursor& cursor) const
- { for (locateElementWithKey (cvElementOps.key (element), cursor);
- cursor.isValid ();
- locateNextElementWithKey (cvElementOps.key (element), cursor)) {
- if (cvElementOps.equal (elementAt (cursor), element))
- return True;
- }
- return False;
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- locateOrAdd (Element const& element)
- { Cursor dummy (*this);
- return locateOrAdd (element, dummy);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- locateOrAdd (Element const& element, ICursor& cursor)
- { Boolean result = locate (element, cursor);
- if (! result) {
- ivBase.add (element, cursor);
- }
- return result;
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- remove (Element const& element)
- { Cursor cursor (*this);
- Boolean result = locateElementWithKey (cvElementOps.key (element), cursor);
- if (result) {
- result = cvElementOps.equal (elementAt (cursor), element);
- }
- if (result) {
- ivBase.removeAt (cursor);
- }
- return result;
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- operator == (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection) const
- { Boolean result = numberOfElements () == collection.numberOfElements ();
- if (result) {
- Cursor thisCursor (*this);
- Cursor collectionCursor (collection);
-
- for (thisCursor.setToFirst (), collectionCursor.setToFirst ();
- result && thisCursor.isValid ();
- thisCursor.setToNext (), collectionCursor.setToNext ()) {
- result = cvElementOps.equal
- (this->elementAt (thisCursor),
- collection.elementAt (collectionCursor));
- }
- }
- return result;
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- operator != (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection) const
- { return ! operator == (collection);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- unionWith (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection)
- { addAllFrom (collection);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- intersectionWith (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection)
- { IWSrtRelOnKSBag <Element, Key, ElementOps, Base> const* env = &collection;
- removeAll (isNotContained, &env);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- differenceWith (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection)
- { IWSrtRelOnKSBag <Element, Key, ElementOps, Base> const* env = &collection;
- removeAll (isContained, &env);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- addUnion (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection1,
- IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection2)
- { addAllFrom (collection1);
- addAllFrom (collection2);
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- addIntersection (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection1,
- IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection2)
- { Cursor cursor (collection1);
- forCursor (cursor) {
- if (collection2.contains (collection1.elementAt (cursor)))
- add (collection1.elementAt (cursor));
- }
- }
-
- template <class Element, class Key, class ElementOps, class Base>
- inline void IWSrtRelOnKSBag <Element, Key, ElementOps, Base>::
- addDifference (IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection1,
- IWSrtRelOnKSBag <Element, Key, ElementOps, Base>
- const& collection2)
- { Cursor cursor (collection1);
- forCursor (cursor) {
- if (! collection2.contains (collection1.elementAt (cursor)))
- add (collection1.elementAt (cursor));
- }
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Key const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- key (Element const& element) const
- { return cvElementOps.key (element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- containsElementWithKey (Key const& key) const
- { return ivBase.containsElementWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- containsAllKeysFrom (IWSrtRelOnKSBag < Element, Key, ElementOps, Base > const& collection) const
- { return ivBase.containsAllKeysFrom (collection.ivBase);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- locateElementWithKey (Key const& key, ICursor &cursor) const
- { return ivBase.locateElementWithKey (key, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- replaceElementWithKey (Element const& element)
- { return ivBase.replaceElementWithKey (element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- replaceElementWithKey (Element const& element, ICursor &cursor)
- { return ivBase.replaceElementWithKey (element, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- locateOrAddElementWithKey (Element const& element)
- { return ivBase.locateOrAddElementWithKey (element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- locateOrAddElementWithKey (Element const& element, ICursor &cursor)
- { return ivBase.locateOrAddElementWithKey (element, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- addOrReplaceElementWithKey (Element const& element)
- { return ivBase.addOrReplaceElementWithKey (element);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- addOrReplaceElementWithKey (Element const& element, ICursor &cursor)
- { return ivBase.addOrReplaceElementWithKey (element, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeElementWithKey (Key const& key)
- { return ivBase.removeElementWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- elementWithKey (Key const& key) const
- { return ivBase.elementWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- elementWithKey (Key const& key)
- { return ivBase.elementWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base>
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base>::
- numberOfElementsWithKey (Key const& key) const
- { return ivBase.numberOfElementsWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base>::
- locateNextElementWithKey (Key const& key, ICursor& cursor) const
- { return ivBase.locateNextElementWithKey (key, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base>
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base>::
- removeAllElementsWithKey (Key const& key)
- { return ivBase.removeAllElementsWithKey (key);
- }
-
- template < class Element, class Key, class ElementOps, class Base>
- inline INumber IWSrtRelOnKSBag < Element, Key, ElementOps, Base>::
- numberOfDifferentKeys() const
- { return ivBase.numberOfDifferentKeys ();
- }
-
- template < class Element, class Key, class ElementOps, class Base>
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base>::
- setToNextWithDifferentKey (ICursor& icursor) const
- { return ivBase.setToNextWithDifferentKey (icursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeFirst ()
- { ivBase.removeFirst ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeLast ()
- { ivBase.removeLast ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- removeAtPosition (IPosition position)
- { ivBase.removeAtPosition (position);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- firstElement () const
- { return ivBase.firstElement ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- lastElement () const
- { return ivBase.lastElement ();
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Element const& IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- elementAtPosition (IPosition position) const
- { return ivBase.elementAtPosition (position);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- setToLast (ICursor &cursor) const
- { return ivBase.setToLast (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- setToPrevious (ICursor &cursor) const
- { return ivBase.setToPrevious (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline void IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- setToPosition (IPosition position, ICursor &cursor) const
- { ivBase.setToPosition (position, cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- isFirst (ICursor const& cursor) const
- { return ivBase.isFirst (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline Boolean IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- isLast (ICursor const& cursor) const
- { return ivBase.isLast (cursor);
- }
-
- template < class Element, class Key, class ElementOps, class Base >
- inline long IWSrtRelOnKSBag < Element, Key, ElementOps, Base >::
- compare (IWSrtRelOnKSBag < Element, Key, ElementOps, Base > const& collection,
- long (*comparisonFunction) (Element const&, Element const&)) const
- { return ivBase.compare (collection.ivBase, comparisonFunction);
- }
-