home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / ISETKSS.IF < prev    next >
Text File  |  1993-09-22  |  11KB  |  293 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. inline IWSetOnKSSet < Element, ElementOps, Base >::
  14. IWSetOnKSSet (INumber n)
  15. : ivBase (n)
  16. {
  17. }
  18.  
  19. template < class Element, class ElementOps, class Base >
  20. inline IWSetOnKSSet < Element, ElementOps, Base >::
  21. IWSetOnKSSet (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  22. : ivBase (collection.ivBase)
  23. {
  24. }
  25.  
  26. template < class Element, class ElementOps, class Base >
  27. inline IWSetOnKSSet < Element, ElementOps, Base >& IWSetOnKSSet < Element, ElementOps, Base >::
  28. operator= (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  29. { ivBase.operator= (collection.ivBase);
  30.   return *this;
  31. }
  32.  
  33. template < class Element, class ElementOps, class Base >
  34. inline IWSetOnKSSet < Element, ElementOps, Base >::
  35. ~IWSetOnKSSet ()
  36. {
  37. }
  38.  
  39. template < class Element, class ElementOps, class Base >
  40. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  41. add (Element const& element)
  42. { return ivBase.add (element);
  43. }
  44.  
  45. template < class Element, class ElementOps, class Base >
  46. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  47. add (Element const& element, ICursor &cursor)
  48. { return ivBase.add (element, cursor);
  49. }
  50.  
  51. template < class Element, class ElementOps, class Base >
  52. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  53. addAllFrom (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  54. { ivBase.addAllFrom (collection.ivBase);
  55. }
  56.  
  57. template < class Element, class ElementOps, class Base >
  58. inline Element const& IWSetOnKSSet < Element, ElementOps, Base >::
  59. elementAt (ICursor const& cursor) const
  60. { return ivBase.elementAt (cursor);
  61. }
  62.  
  63. template < class Element, class ElementOps, class Base >
  64. inline Element& IWSetOnKSSet < Element, ElementOps, Base >::
  65. elementAt (ICursor const& cursor)
  66. { return ivBase.elementAt (cursor);
  67. }
  68.  
  69. template < class Element, class ElementOps, class Base >
  70. inline Element const& IWSetOnKSSet < Element, ElementOps, Base >::
  71. anyElement () const
  72. { return ivBase.anyElement ();
  73. }
  74.  
  75. template < class Element, class ElementOps, class Base >
  76. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  77. removeAt (ICursor const& cursor)
  78. { ivBase.removeAt (cursor);
  79. }
  80.  
  81. template < class Element, class ElementOps, class Base >
  82. inline INumber IWSetOnKSSet < Element, ElementOps, Base >::
  83. removeAll (IBoolean (*predicate) (Element const&, void*), void* env)
  84. { return ivBase.removeAll (predicate, env);
  85. }
  86.  
  87. template < class Element, class ElementOps, class Base >
  88. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  89. replaceAt (ICursor const& cursor, Element const& element)
  90. { ivBase.replaceAt (cursor, element);
  91. }
  92.  
  93. template < class Element, class ElementOps, class Base >
  94. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  95. removeAll ()
  96. { ivBase.removeAll ();
  97. }
  98.  
  99. template < class Element, class ElementOps, class Base >
  100. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  101. isBounded () const
  102. { return ivBase.isBounded ();
  103. }
  104.  
  105. template < class Element, class ElementOps, class Base >
  106. inline INumber IWSetOnKSSet < Element, ElementOps, Base >::
  107. maxNumberOfElements () const
  108. { return ivBase.maxNumberOfElements ();
  109. }
  110.  
  111. template < class Element, class ElementOps, class Base >
  112. inline INumber IWSetOnKSSet < Element, ElementOps, Base >::
  113. numberOfElements () const
  114. { return ivBase.numberOfElements ();
  115. }
  116.  
  117. template < class Element, class ElementOps, class Base >
  118. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  119. isEmpty () const
  120. { return ivBase.isEmpty ();
  121. }
  122.  
  123. template < class Element, class ElementOps, class Base >
  124. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  125. isFull () const
  126. { return ivBase.isFull ();
  127. }
  128.  
  129. template < class Element, class ElementOps, class Base >
  130. inline ICursor* IWSetOnKSSet < Element, ElementOps, Base >::
  131. newCursor () const
  132. { return ivBase.newCursor ();
  133. }
  134.  
  135. template < class Element, class ElementOps, class Base >
  136. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  137. setToFirst (ICursor &cursor) const
  138. { return ivBase.setToFirst (cursor);
  139. }
  140.  
  141. template < class Element, class ElementOps, class Base >
  142. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  143. setToNext (ICursor &cursor) const
  144. { return ivBase.setToNext (cursor);
  145. }
  146.  
  147. template < class Element, class ElementOps, class Base >
  148. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  149. allElementsDo (IBoolean (*iterationFunction) (Element &, void*),
  150.                void* environment)
  151. { return ivBase.allElementsDo (iterationFunction, environment);
  152. }
  153.  
  154. template < class Element, class ElementOps, class Base >
  155. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  156. allElementsDo (IIterator <Element>& iterator)
  157. { return ivBase.allElementsDo (iterator);
  158. }
  159.  
  160. template < class Element, class ElementOps, class Base >
  161. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  162. allElementsDo (IBoolean (*iterationFunction) (Element const&, void*),
  163.                void* environment) const
  164. { return ivBase.allElementsDo (iterationFunction, environment);
  165. }
  166.  
  167. template < class Element, class ElementOps, class Base >
  168. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  169. allElementsDo (IConstantIterator <Element>& iterator) const
  170. { return ivBase.allElementsDo (iterator);
  171. }
  172.  
  173. template < class Element, class ElementOps, class Base >
  174. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  175. isConsistent () const
  176. { return ivBase.isConsistent ();
  177. }
  178.  
  179. template < class Element, class ElementOps, class Base >
  180. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  181. contains (Element const& element) const
  182. { return ivBase.containsElementWithKey (element);
  183. }
  184.  
  185. template < class Element, class ElementOps, class Base >
  186. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  187. containsAllFrom (IWSetOnKSSet < Element, ElementOps, Base > const& collection) const
  188. { return ivBase.containsAllKeysFrom (collection.ivBase);
  189. }
  190.  
  191. template < class Element, class ElementOps, class Base >
  192. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  193. locate (Element const& element, ICursor &cursor) const
  194. { return ivBase.locateElementWithKey (element, cursor);
  195. }
  196.  
  197. template < class Element, class ElementOps, class Base >
  198. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  199. locateOrAdd (Element const& element)
  200. { return ivBase.locateOrAddElementWithKey (element);
  201. }
  202.  
  203. template < class Element, class ElementOps, class Base >
  204. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  205. locateOrAdd (Element const& element, ICursor &cursor)
  206. { return ivBase.locateOrAddElementWithKey (element, cursor);
  207. }
  208.  
  209. template < class Element, class ElementOps, class Base >
  210. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  211. remove (Element const& element)
  212. { return ivBase.removeElementWithKey (element);
  213. }
  214.  
  215. template < class Element, class ElementOps, class Base >
  216. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  217. operator== (IWSetOnKSSet < Element, ElementOps, Base > const& collection) const
  218. { return numberOfElements() == collection.numberOfElements() &&
  219.          containsAllFrom (collection);
  220. }
  221.  
  222. template < class Element, class ElementOps, class Base >
  223. inline IBoolean IWSetOnKSSet < Element, ElementOps, Base >::
  224. operator!= (IWSetOnKSSet < Element, ElementOps, Base > const& collection) const
  225. { return ! operator== (collection);
  226. }
  227.  
  228. template < class Element, class ElementOps, class Base >
  229. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  230. unionWith (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  231. { if (this != &collection)
  232.     addAllFrom (collection);
  233. }
  234.  
  235. template < class Element, class ElementOps, class Base >
  236. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  237. intersectionWith (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  238. { if (this != &collection)
  239.   { IWSetOnKSSet <Element, ElementOps, Base> const* env = &collection;
  240.     removeAll (isNotContained, &env);
  241.   }
  242. }
  243.  
  244. template < class Element, class ElementOps, class Base >
  245. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  246. differenceWith (IWSetOnKSSet < Element, ElementOps, Base > const& collection)
  247. { if (this == &collection)
  248.     removeAll ();
  249.   else
  250.   { IWSetOnKSSet <Element, ElementOps, Base> const* env = &collection;
  251.     removeAll (isContained, &env);
  252.   }
  253. }
  254.  
  255. template < class Element, class ElementOps, class Base >
  256. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  257. addUnion (IWSetOnKSSet < Element, ElementOps, Base > const& collection1,
  258.           IWSetOnKSSet < Element, ElementOps, Base > const& collection2)
  259. { unionWith (collection1);
  260.   unionWith (collection2);
  261. }
  262.  
  263. template < class Element, class ElementOps, class Base >
  264. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  265. addIntersection (IWSetOnKSSet < Element, ElementOps, Base > const& collection1,
  266.                  IWSetOnKSSet < Element, ElementOps, Base > const& collection2)
  267. { if (this == &collection1 || this == &collection2)
  268.     return; // tbd
  269.   Cursor cursor (collection1);
  270.   forCursor (cursor) {
  271.     if (collection2.contains (collection1.elementAt (cursor)))
  272.       add (collection1.elementAt (cursor));
  273.   }
  274. }
  275.  
  276. template < class Element, class ElementOps, class Base >
  277. inline void IWSetOnKSSet < Element, ElementOps, Base >::
  278. addDifference (IWSetOnKSSet < Element, ElementOps, Base > const& collection1,
  279.                IWSetOnKSSet < Element, ElementOps, Base > const& collection2)
  280. { if (this == &collection1)
  281.     return;
  282.   else if (this == &collection2)
  283.     unionWith (collection1);
  284.   else {
  285.     Cursor cursor (collection1);
  286.     forCursor (cursor) {
  287.       if (! collection2.contains (collection1.elementAt (cursor)))
  288.         add (collection1.elementAt (cursor));
  289.     }
  290.   }
  291. }
  292.  
  293.