home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / ISETKSS.H < prev    next >
Text File  |  1993-09-22  |  7KB  |  169 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 _ISETKSS_H
  13. #define _ISETKSS_H
  14.  
  15. #include <iglobals.h>
  16. #include <icursor.h>
  17.  
  18. template < class Element, class ElementOps, class Base >
  19. class IWSetOnKSSet {
  20.   Base ivBase;
  21.   class Cursor;
  22.   friend class Cursor;
  23. public:
  24.  
  25.   class Cursor : public Base::Cursor {
  26.   protected:
  27.     IBoolean isFor (IWSetOnKSSet < Element, ElementOps, Base > const& c) const
  28.     { return Base::Cursor::isFor (c.ivBase); }
  29.   public:
  30.     Cursor (IWSetOnKSSet < Element, ElementOps, Base > const& c)
  31.     : Base::Cursor (c.ivBase) {}
  32.   };
  33.  
  34.                   IWSetOnKSSet             (INumber
  35.                                                numberOfElements = 100);
  36.  
  37.                   IWSetOnKSSet             (IWSetOnKSSet < Element, ElementOps, Base > const&);
  38.  
  39.    IWSetOnKSSet < Element, ElementOps, Base >&
  40.                   operator =                  (IWSetOnKSSet < Element, ElementOps, Base > const&);
  41.  
  42.                  ~IWSetOnKSSet             ();
  43.  
  44.    IBoolean       add                         (Element const&);
  45.  
  46.    IBoolean       add                         (Element const&,
  47.                                                ICursor&);
  48.  
  49.    void           addAllFrom                  (IWSetOnKSSet < Element, ElementOps, Base > const&);
  50.  
  51.    Element const& elementAt                   (ICursor const&) const;
  52.  
  53.    Element&       elementAt                   (ICursor const&);
  54.  
  55.    Element const& anyElement                  () const;
  56.  
  57.    void           removeAt                    (ICursor const&);
  58.  
  59.    INumber        removeAll                   (IBoolean (*property)
  60.                                                (Element const&, void*),
  61.                                                void* additionalArgument = 0);
  62.  
  63.    void           replaceAt                   (ICursor const&,
  64.                                                Element const&);
  65.  
  66.    void           removeAll                   ();
  67.  
  68.    IBoolean       isBounded                   () const;
  69.  
  70.    INumber        maxNumberOfElements         () const;
  71.  
  72.    INumber        numberOfElements            () const;
  73.  
  74.    IBoolean       isEmpty                     () const;
  75.  
  76.    IBoolean       isFull                      () const;
  77.  
  78.    ICursor*       newCursor                   () const;
  79.  
  80.    IBoolean       setToFirst                  (ICursor&) const;
  81.  
  82.    IBoolean       setToNext                   (ICursor&) const;
  83.  
  84.    IBoolean       allElementsDo               (IBoolean (*function)
  85.                                                   (Element&, void*),
  86.                                                void* additionalArgument = 0);
  87.  
  88.    IBoolean       allElementsDo               (IIterator <Element>&);
  89.  
  90.    IBoolean       allElementsDo               (IBoolean (*function)
  91.                                                (Element const&, void*),
  92.                                                void* additionalArgument = 0)
  93.                                                const;
  94.  
  95.    IBoolean       allElementsDo               (IConstantIterator
  96.                                                   <Element>&) const;
  97.  
  98.    IBoolean       isConsistent                () const;
  99.  
  100.    IBoolean       contains                    (Element const&) const;
  101.  
  102.    IBoolean       containsAllFrom             (IWSetOnKSSet < Element, ElementOps, Base > const&) const;
  103.  
  104.    IBoolean       locate                      (Element const&, ICursor&)
  105.                                                const;
  106.  
  107.    IBoolean       locateOrAdd                 (Element const&);
  108.  
  109.    IBoolean       locateOrAdd                 (Element const&,
  110.                                                ICursor&);
  111.  
  112.    IBoolean       remove                      (Element const&);
  113.  
  114.    IBoolean       operator ==                 (IWSetOnKSSet < Element, ElementOps, Base > const&) const;
  115.  
  116.    IBoolean       operator !=                 (IWSetOnKSSet < Element, ElementOps, Base > const&) const;
  117.  
  118.    void           unionWith                   (IWSetOnKSSet < Element, ElementOps, Base > const&);
  119.  
  120.    void           intersectionWith            (IWSetOnKSSet < Element, ElementOps, Base > const&);
  121.  
  122.    void           differenceWith              (IWSetOnKSSet < Element, ElementOps, Base > const&);
  123.  
  124.    void           addUnion                    (IWSetOnKSSet < Element, ElementOps, Base > const&,
  125.                                                IWSetOnKSSet < Element, ElementOps, Base > const&);
  126.  
  127.    void           addIntersection             (IWSetOnKSSet < Element, ElementOps, Base > const&,
  128.                                                IWSetOnKSSet < Element, ElementOps, Base > const&);
  129.  
  130.    void           addDifference               (IWSetOnKSSet < Element, ElementOps, Base > const&,
  131.                                                IWSetOnKSSet < Element, ElementOps, Base > const&);
  132.  
  133. protected:
  134.  
  135.   static IBoolean  isContained    (Element const&, void* env);
  136.   static IBoolean  isNotContained (Element const&, void* env);
  137.  
  138. };
  139.  
  140. #define IDefineGSetOnGKeySortedSet(GKSSet, GSet) \
  141. template < class Element, class ElementOps > \
  142. class GKSSet ## ForGSet : \
  143.   public GKSSet < Element, Element, \
  144.                   IOpsWithKey < Element, ElementOps > > { \
  145. public: \
  146.   GKSSet ## ForGSet (INumber n = 100) : \
  147.     GKSSet < Element, Element, \
  148.              IOpsWithKey < Element, ElementOps > > (n) {} \
  149. }; \
  150. template < class Element, class ElementOps > \
  151. class GSet : \
  152.   public IWSetOnKSSet < Element, ElementOps, \
  153.                         GKSSet ## ForGSet < Element, ElementOps > > { \
  154. public: \
  155.   GSet (INumber n = 100) : \
  156.     IWSetOnKSSet < Element, ElementOps, \
  157.                    GKSSet ## ForGSet < Element, ElementOps > > (n) {} \
  158. };
  159.  
  160. #include <isetkss.if>
  161.  
  162. #ifdef __IBMCPP__
  163. #ifndef __TEMPINC__
  164. #include <isetkss.c>
  165. #endif
  166. #endif
  167.  
  168. #endif
  169.