home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / ISSKSS.IF < prev    next >
Text File  |  1993-09-22  |  13KB  |  366 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  14. IWSrtSetOnKSSet (INumber n)
  15. : ivBase (n)
  16. {
  17. }
  18.  
  19. template < class Element, class ElementOps, class Base >
  20. inline IWSrtSetOnKSSet < Element, ElementOps, Base >::
  21. IWSrtSetOnKSSet (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection)
  22. : ivBase (collection.ivBase)
  23. {
  24. }
  25.  
  26. template < class Element, class ElementOps, class Base >
  27. inline IWSrtSetOnKSSet < Element, ElementOps, Base >& IWSrtSetOnKSSet < Element, ElementOps, Base >::
  28. operator= (IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  35. ~IWSrtSetOnKSSet ()
  36. {
  37. }
  38.  
  39. template < class Element, class ElementOps, class Base >
  40. inline IBoolean IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  53. addAllFrom (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection)
  54. { ivBase.addAllFrom (collection.ivBase);
  55. }
  56.  
  57. template < class Element, class ElementOps, class Base >
  58. inline Element const& IWSrtSetOnKSSet < 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& IWSrtSetOnKSSet < 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& IWSrtSetOnKSSet < Element, ElementOps, Base >::
  71. anyElement () const
  72. { return ivBase.anyElement ();
  73. }
  74.  
  75. template < class Element, class ElementOps, class Base >
  76. inline void IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  95. removeAll ()
  96. { ivBase.removeAll ();
  97. }
  98.  
  99. template < class Element, class ElementOps, class Base >
  100. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  101. isBounded () const
  102. { return ivBase.isBounded ();
  103. }
  104.  
  105. template < class Element, class ElementOps, class Base >
  106. inline INumber IWSrtSetOnKSSet < Element, ElementOps, Base >::
  107. maxNumberOfElements () const
  108. { return ivBase.maxNumberOfElements ();
  109. }
  110.  
  111. template < class Element, class ElementOps, class Base >
  112. inline INumber IWSrtSetOnKSSet < Element, ElementOps, Base >::
  113. numberOfElements () const
  114. { return ivBase.numberOfElements ();
  115. }
  116.  
  117. template < class Element, class ElementOps, class Base >
  118. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  119. isEmpty () const
  120. { return ivBase.isEmpty ();
  121. }
  122.  
  123. template < class Element, class ElementOps, class Base >
  124. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  125. isFull () const
  126. { return ivBase.isFull ();
  127. }
  128.  
  129. template < class Element, class ElementOps, class Base >
  130. inline ICursor* IWSrtSetOnKSSet < Element, ElementOps, Base >::
  131. newCursor () const
  132. { return ivBase.newCursor ();
  133. }
  134.  
  135. template < class Element, class ElementOps, class Base >
  136. inline IBoolean IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  175. isConsistent () const
  176. { return ivBase.isConsistent ();
  177. }
  178.  
  179. template < class Element, class ElementOps, class Base >
  180. inline IBoolean IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  187. containsAllFrom (IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  217. operator== (IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  224. operator!= (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection) const
  225. { return ! operator== (collection);
  226. }
  227.  
  228. template < class Element, class ElementOps, class Base >
  229. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  230. unionWith (IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  237. intersectionWith (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection)
  238. { if (this != &collection)
  239.   { IWSrtSetOnKSSet <Element, ElementOps, Base> const* env = &collection;
  240.     removeAll (isNotContained, &env);
  241.   }
  242. }
  243.  
  244. template < class Element, class ElementOps, class Base >
  245. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  246. differenceWith (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection)
  247. { if (this == &collection)
  248.     removeAll ();
  249.   else
  250.   { IWSrtSetOnKSSet <Element, ElementOps, Base> const* env = &collection;
  251.     removeAll (isContained, &env);
  252.   }
  253. }
  254.  
  255. template < class Element, class ElementOps, class Base >
  256. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  257. addUnion (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection1,
  258.           IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection2)
  259. { unionWith (collection1);
  260.   unionWith (collection2);
  261. }
  262.  
  263. template < class Element, class ElementOps, class Base >
  264. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  265. addIntersection (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection1,
  266.                  IWSrtSetOnKSSet < 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 IWSrtSetOnKSSet < Element, ElementOps, Base >::
  278. addDifference (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection1,
  279.                IWSrtSetOnKSSet < 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. template < class Element, class ElementOps, class Base >
  294. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  295. removeFirst ()
  296. { ivBase.removeFirst ();
  297. }
  298.  
  299. template < class Element, class ElementOps, class Base >
  300. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  301. removeLast ()
  302. { ivBase.removeLast ();
  303. }
  304.  
  305. template < class Element, class ElementOps, class Base >
  306. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  307. removeAtPosition (IPosition position)
  308. { ivBase.removeAtPosition (position);
  309. }
  310.  
  311. template < class Element, class ElementOps, class Base >
  312. inline Element const& IWSrtSetOnKSSet < Element, ElementOps, Base >::
  313. firstElement () const
  314. { return ivBase.firstElement ();
  315. }
  316.  
  317. template < class Element, class ElementOps, class Base >
  318. inline Element const& IWSrtSetOnKSSet < Element, ElementOps, Base >::
  319. lastElement () const
  320. { return ivBase.lastElement ();
  321. }
  322.  
  323. template < class Element, class ElementOps, class Base >
  324. inline Element const& IWSrtSetOnKSSet < Element, ElementOps, Base >::
  325. elementAtPosition (IPosition position) const
  326. { return ivBase.elementAtPosition (position);
  327. }
  328.  
  329. template < class Element, class ElementOps, class Base >
  330. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  331. setToLast (ICursor &cursor) const
  332. { return ivBase.setToLast (cursor);
  333. }
  334.  
  335. template < class Element, class ElementOps, class Base >
  336. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  337. setToPrevious (ICursor &cursor) const
  338. { return ivBase.setToPrevious (cursor);
  339. }
  340.  
  341. template < class Element, class ElementOps, class Base >
  342. inline void IWSrtSetOnKSSet < Element, ElementOps, Base >::
  343. setToPosition (IPosition position, ICursor &cursor) const
  344. { ivBase.setToPosition (position, cursor);
  345. }
  346.  
  347. template < class Element, class ElementOps, class Base >
  348. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  349. isFirst (ICursor const& cursor) const
  350. { return ivBase.isFirst (cursor);
  351. }
  352.  
  353. template < class Element, class ElementOps, class Base >
  354. inline IBoolean IWSrtSetOnKSSet < Element, ElementOps, Base >::
  355. isLast (ICursor const& cursor) const
  356. { return ivBase.isLast (cursor);
  357. }
  358.  
  359. template < class Element, class ElementOps, class Base >
  360. inline long IWSrtSetOnKSSet < Element, ElementOps, Base >::
  361. compare (IWSrtSetOnKSSet < Element, ElementOps, Base > const& collection,
  362.          long (*comparisonFunction) (Element const&, Element const&)) const
  363. { return ivBase.compare (collection.ivBase, comparisonFunction);
  364. }
  365.  
  366.