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