home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / IAEQSEQ.C < prev    next >
Text File  |  1993-09-22  |  3KB  |  72 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.  
  13. template < class Element >
  14. IBoolean IAEqualitySequence < Element >::
  15. operator == (IAEqualitySequence < Element > const& collection) const
  16. { if (numberOfElements () != collection.numberOfElements ())
  17.     return False;
  18.  
  19.   ICursor *cursor1 = newCursor ();
  20.   ICursor *cursor2 = collection.newCursor ();
  21.   IBoolean result = True;
  22.   cursor1->setToFirst ();
  23.   // must be done as follows, since there is no element equality function
  24.   // available at this level
  25.   if (cursor1->isValid ()) {
  26.     result = collection.locateFirst (elementAt (*cursor1), *cursor2);
  27.     while (result && cursor1->setToNext ()) {
  28.       result = collection.locateNext (elementAt (*cursor1), *cursor2);
  29.     }
  30.   }
  31.   delete cursor2;
  32.   delete cursor1;
  33.   return result;
  34.  
  35. }
  36.  
  37. template < class Element >
  38. IBoolean IAEqualitySequence < Element >::
  39. operator != (IAEqualitySequence < Element > const& collection) const
  40. { return ! operator == (collection);
  41. }
  42.  
  43. template < class Element >
  44. long IAEqualitySequence < Element >::
  45. compare (IAEqualitySequence < Element > const& collection,
  46.          long (*comparisonFunction) (Element const&, Element const&)) const
  47. { long result = 0;
  48.   ICursor *thisCursor = newCursor ();
  49.   ICursor *collectionCursor = collection.newCursor ();
  50.  
  51.   for (thisCursor->setToFirst (), collectionCursor->setToFirst ();
  52.        result == 0 && thisCursor->isValid () && collectionCursor->isValid ();
  53.        thisCursor->setToNext (), collectionCursor->setToNext ()) {
  54.     result = (*comparisonFunction) (this->elementAt (*thisCursor),
  55.                                       collection.elementAt (*collectionCursor));
  56.   }
  57.  
  58.   if (result == 0) {
  59.     if (thisCursor->isValid () && ! collectionCursor->isValid ())
  60.       result = 1;
  61.     else if (! thisCursor->isValid () && collectionCursor->isValid ())
  62.       result = -1;
  63.     else {
  64.     }
  65.   }
  66.   delete thisCursor;
  67.   delete collectionCursor;
  68.  
  69.   return result;
  70. }
  71.  
  72.