home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / IBAGKSS.C < prev    next >
Text File  |  1993-09-22  |  2KB  |  46 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. template <class Element, class ElementOps, class Base>
  13. IBoolean IWBagOnKSSet <Element, ElementOps, Base>::Cursor::setToFirst ()
  14. { occurrence = 1;
  15.   return ivCollection->setToFirst (*this);
  16. }
  17.  
  18. template <class Element, class ElementOps, class Base>
  19. IBoolean IWBagOnKSSet <Element, ElementOps, Base>::Cursor::setToNext ()
  20. { ICHECK (isValid (), ICursorInvalidException, IInvalidCursorText)
  21.   if (occurrence == Base::Cursor::element().occurrences) {
  22.     occurrence = 1;
  23.     return Base::Cursor::setToNext ();
  24.   }
  25.   else {
  26.     occurrence++;
  27.     return True;
  28.   }
  29. }
  30.  
  31. template <class Element, class ElementOps, class Base>
  32. IBoolean IWBagOnKSSet <Element, ElementOps, Base>::
  33. removePredicate (IBKSElm < Element > const& element, void* env)
  34. { RemoveEnv* re = (RemoveEnv*)env;
  35.   IBoolean result = (*re->predicate) (element.elem, re->env);
  36.   if (result)
  37.     re->removeCount += element.occurrences;
  38.   return result;
  39. }
  40.  
  41. template <class Element, class ElementOps, class Base>
  42. IBoolean IWBagOnKSSet <Element, ElementOps, Base>::
  43. cleanupPredicate (IBKSElm < Element > const& element, void* env)
  44. { return element.occurrences == 0;
  45. }
  46.