home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / IRSRTMAP.C < prev    next >
Text File  |  1993-09-22  |  13KB  |  401 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 Key, class Base >
  14. void* IRSortedMap < Element, Key, Base >::
  15. identity () const
  16. { return (void*)&ivBase;
  17. }
  18.  
  19. template < class Element, class Key, class Base >
  20. IRSortedMap < Element, Key, Base >::
  21. ~IRSortedMap ()
  22. {
  23. }
  24.  
  25. template < class Element, class Key, class Base >
  26. IBoolean IRSortedMap < Element, Key, Base >::
  27. add (Element const& element)
  28. { return ivBase.add (element);
  29. }
  30.  
  31. template < class Element, class Key, class Base >
  32. IBoolean IRSortedMap < Element, Key, Base >::
  33. add (Element const& element, ICursor &cursor)
  34. { return ivBase.add (element, cursor);
  35. }
  36.  
  37. template < class Element, class Key, class Base >
  38. Element const& IRSortedMap < Element, Key, Base >::
  39. elementAt (ICursor const& cursor) const
  40. { return ivBase.elementAt (cursor);
  41. }
  42.  
  43. template < class Element, class Key, class Base >
  44. Element& IRSortedMap < Element, Key, Base >::
  45. elementAt (ICursor const& cursor)
  46. { return ivBase.elementAt (cursor);
  47. }
  48.  
  49. template < class Element, class Key, class Base >
  50. Element const& IRSortedMap < Element, Key, Base >::
  51. anyElement () const
  52. { return ivBase.anyElement ();
  53. }
  54.  
  55. template < class Element, class Key, class Base >
  56. void IRSortedMap < Element, Key, Base >::
  57. removeAt (ICursor const& cursor)
  58. { ivBase.removeAt (cursor);
  59. }
  60.  
  61. template < class Element, class Key, class Base >
  62. INumber IRSortedMap < Element, Key, Base >::
  63. removeAll (IBoolean (*predicate) (Element const&, void*), void* env)
  64. { return ivBase.removeAll (predicate, env);
  65. }
  66.  
  67. template < class Element, class Key, class Base >
  68. void IRSortedMap < Element, Key, Base >::
  69. replaceAt (ICursor const& cursor, Element const& element)
  70. { ivBase.replaceAt (cursor, element);
  71. }
  72.  
  73. template < class Element, class Key, class Base >
  74. void IRSortedMap < Element, Key, Base >::
  75. removeAll ()
  76. { ivBase.removeAll ();
  77. }
  78.  
  79. template < class Element, class Key, class Base >
  80. IBoolean IRSortedMap < Element, Key, Base >::
  81. isBounded () const
  82. { return ivBase.isBounded ();
  83. }
  84.  
  85. template < class Element, class Key, class Base >
  86. INumber IRSortedMap < Element, Key, Base >::
  87. maxNumberOfElements () const
  88. { return ivBase.maxNumberOfElements ();
  89. }
  90.  
  91. template < class Element, class Key, class Base >
  92. INumber IRSortedMap < Element, Key, Base >::
  93. numberOfElements () const
  94. { return ivBase.numberOfElements ();
  95. }
  96.  
  97. template < class Element, class Key, class Base >
  98. IBoolean IRSortedMap < Element, Key, Base >::
  99. isEmpty () const
  100. { return ivBase.isEmpty ();
  101. }
  102.  
  103. template < class Element, class Key, class Base >
  104. IBoolean IRSortedMap < Element, Key, Base >::
  105. isFull () const
  106. { return ivBase.isFull ();
  107. }
  108.  
  109. template < class Element, class Key, class Base >
  110. ICursor* IRSortedMap < Element, Key, Base >::
  111. newCursor () const
  112. { return ivBase.newCursor ();
  113. }
  114.  
  115. template < class Element, class Key, class Base >
  116. IBoolean IRSortedMap < Element, Key, Base >::
  117. setToFirst (ICursor &cursor) const
  118. { return ivBase.setToFirst (cursor);
  119. }
  120.  
  121. template < class Element, class Key, class Base >
  122. IBoolean IRSortedMap < Element, Key, Base >::
  123. setToNext (ICursor &cursor) const
  124. { return ivBase.setToNext (cursor);
  125. }
  126.  
  127. template < class Element, class Key, class Base >
  128. IBoolean IRSortedMap < Element, Key, Base >::
  129. allElementsDo (IBoolean (*iterationFunction) (Element &, void*),
  130.                void* environment)
  131. { return ivBase.allElementsDo (iterationFunction, environment);
  132. }
  133.  
  134. template < class Element, class Key, class Base >
  135. IBoolean IRSortedMap < Element, Key, Base >::
  136. allElementsDo (IIterator <Element>& iterator)
  137. { return ivBase.allElementsDo (iterator);
  138. }
  139.  
  140. template < class Element, class Key, class Base >
  141. IBoolean IRSortedMap < Element, Key, 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 Key, class Base >
  148. IBoolean IRSortedMap < Element, Key, Base >::
  149. allElementsDo (IConstantIterator <Element>& iterator) const
  150. { return ivBase.allElementsDo (iterator);
  151. }
  152.  
  153. template < class Element, class Key, class Base >
  154. IBoolean IRSortedMap < Element, Key, Base >::
  155. isConsistent () const
  156. { return ivBase.isConsistent ();
  157. }
  158.  
  159. template < class Element, class Key, class Base >
  160. IBoolean IRSortedMap < Element, Key, Base >::
  161. contains (Element const& element) const
  162. { return ivBase.contains (element);
  163. }
  164.  
  165. template < class Element, class Key, class Base >
  166. IBoolean IRSortedMap < Element, Key, Base >::
  167. locate (Element const& element, ICursor &cursor) const
  168. { return ivBase.locate (element, cursor);
  169. }
  170.  
  171. template < class Element, class Key, class Base >
  172. IBoolean IRSortedMap < Element, Key, Base >::
  173. locateOrAdd (Element const& element)
  174. { return ivBase.locateOrAdd (element);
  175. }
  176.  
  177. template < class Element, class Key, class Base >
  178. IBoolean IRSortedMap < Element, Key, Base >::
  179. locateOrAdd (Element const& element, ICursor &cursor)
  180. { return ivBase.locateOrAdd (element, cursor);
  181. }
  182.  
  183. template < class Element, class Key, class Base >
  184. IBoolean IRSortedMap < Element, Key, Base >::
  185. remove (Element const& element)
  186. { return ivBase.remove (element);
  187. }
  188.  
  189. template < class Element, class Key, class Base >
  190. void IRSortedMap < Element, Key, Base >::
  191. unionWith (IASortedMap < Element, Key > const& collection)
  192. { if (isIdentical (collection))
  193.     ivBase.unionWith (ivBase);
  194.   else
  195.     addAllFrom (collection);
  196. }
  197.  
  198. template < class Element, class Key, class Base >
  199. void IRSortedMap < Element, Key, Base >::
  200. intersectionWith (IASortedMap < Element, Key > 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 Key, class Base >
  209. void IRSortedMap < Element, Key, Base >::
  210. differenceWith (IASortedMap < Element, Key > 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 Key, class Base >
  222. void IRSortedMap < Element, Key, Base >::
  223. addUnion (IASortedMap < Element, Key > const& collection1,
  224.           IASortedMap < Element, Key > const& collection2)
  225. { unionWith (collection1);
  226.   unionWith (collection2);
  227. }
  228.  
  229. template < class Element, class Key, class Base >
  230. void IRSortedMap < Element, Key, Base >::
  231. addIntersection (IASortedMap < Element, Key > const& collection1,
  232.                  IASortedMap < Element, Key > 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 Key, class Base >
  246. void IRSortedMap < Element, Key, Base >::
  247. addDifference (IASortedMap < Element, Key > const& collection1,
  248.                IASortedMap < Element, Key > 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 Key, class Base >
  264. Key const& IRSortedMap < Element, Key, Base >::
  265. key (Element const& element) const
  266. { return ivBase.key (element);
  267. }
  268.  
  269. template < class Element, class Key, class Base >
  270. IBoolean IRSortedMap < Element, Key, Base >::
  271. containsElementWithKey (Key const& key) const
  272. { return ivBase.containsElementWithKey (key);
  273. }
  274.  
  275. template < class Element, class Key, class Base >
  276. IBoolean IRSortedMap < Element, Key, Base >::
  277. locateElementWithKey (Key const& key, ICursor &cursor) const
  278. { return ivBase.locateElementWithKey (key, cursor);
  279. }
  280.  
  281. template < class Element, class Key, class Base >
  282. IBoolean IRSortedMap < Element, Key, Base >::
  283. replaceElementWithKey (Element const& element)
  284. { return ivBase.replaceElementWithKey (element);
  285. }
  286.  
  287. template < class Element, class Key, class Base >
  288. IBoolean IRSortedMap < Element, Key, Base >::
  289. replaceElementWithKey (Element const& element, ICursor &cursor)
  290. { return ivBase.replaceElementWithKey (element, cursor);
  291. }
  292.  
  293. template < class Element, class Key, class Base >
  294. IBoolean IRSortedMap < Element, Key, Base >::
  295. locateOrAddElementWithKey (Element const& element)
  296. { return ivBase.locateOrAddElementWithKey (element);
  297. }
  298.  
  299. template < class Element, class Key, class Base >
  300. IBoolean IRSortedMap < Element, Key, Base >::
  301. locateOrAddElementWithKey (Element const& element, ICursor &cursor)
  302. { return ivBase.locateOrAddElementWithKey (element, cursor);
  303. }
  304.  
  305. template < class Element, class Key, class Base >
  306. IBoolean IRSortedMap < Element, Key, Base >::
  307. addOrReplaceElementWithKey (Element const& element)
  308. { return ivBase.addOrReplaceElementWithKey (element);
  309. }
  310.  
  311. template < class Element, class Key, class Base >
  312. IBoolean IRSortedMap < Element, Key, Base >::
  313. addOrReplaceElementWithKey (Element const& element, ICursor &cursor)
  314. { return ivBase.addOrReplaceElementWithKey (element, cursor);
  315. }
  316.  
  317. template < class Element, class Key, class Base >
  318. IBoolean IRSortedMap < Element, Key, Base >::
  319. removeElementWithKey (Key const& key)
  320. { return ivBase.removeElementWithKey (key);
  321. }
  322.  
  323. template < class Element, class Key, class Base >
  324. Element const& IRSortedMap < Element, Key, Base >::
  325. elementWithKey (Key const& key) const
  326. { return ivBase.elementWithKey (key);
  327. }
  328.  
  329. template < class Element, class Key, class Base >
  330. Element& IRSortedMap < Element, Key, Base >::
  331. elementWithKey (Key const& key)
  332. { return ivBase.elementWithKey (key);
  333. }
  334.  
  335. template < class Element, class Key, class Base >
  336. void IRSortedMap < Element, Key, Base >::
  337. removeFirst ()
  338. { ivBase.removeFirst ();
  339. }
  340.  
  341. template < class Element, class Key, class Base >
  342. void IRSortedMap < Element, Key, Base >::
  343. removeLast ()
  344. { ivBase.removeLast ();
  345. }
  346.  
  347. template < class Element, class Key, class Base >
  348. void IRSortedMap < Element, Key, Base >::
  349. removeAtPosition (IPosition position)
  350. { ivBase.removeAtPosition (position);
  351. }
  352.  
  353. template < class Element, class Key, class Base >
  354. Element const& IRSortedMap < Element, Key, Base >::
  355. firstElement () const
  356. { return ivBase.firstElement ();
  357. }
  358.  
  359. template < class Element, class Key, class Base >
  360. Element const& IRSortedMap < Element, Key, Base >::
  361. lastElement () const
  362. { return ivBase.lastElement ();
  363. }
  364.  
  365. template < class Element, class Key, class Base >
  366. Element const& IRSortedMap < Element, Key, Base >::
  367. elementAtPosition (IPosition position) const
  368. { return ivBase.elementAtPosition (position);
  369. }
  370.  
  371. template < class Element, class Key, class Base >
  372. IBoolean IRSortedMap < Element, Key, Base >::
  373. setToLast (ICursor &cursor) const
  374. { return ivBase.setToLast (cursor);
  375. }
  376.  
  377. template < class Element, class Key, class Base >
  378. IBoolean IRSortedMap < Element, Key, Base >::
  379. setToPrevious (ICursor &cursor) const
  380. { return ivBase.setToPrevious (cursor);
  381. }
  382.  
  383. template < class Element, class Key, class Base >
  384. void IRSortedMap < Element, Key, Base >::
  385. setToPosition (IPosition position, ICursor &cursor) const
  386. { ivBase.setToPosition (position, cursor);
  387. }
  388.  
  389. template < class Element, class Key, class Base >
  390. IBoolean IRSortedMap < Element, Key, Base >::
  391. isFirst (ICursor const& cursor) const
  392. { return ivBase.isFirst (cursor);
  393. }
  394.  
  395. template < class Element, class Key, class Base >
  396. IBoolean IRSortedMap < Element, Key, Base >::
  397. isLast (ICursor const& cursor) const
  398. { return ivBase.isLast (cursor);
  399. }
  400.  
  401.