home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / ILNSEQ.C < prev    next >
Text File  |  1993-09-22  |  4KB  |  88 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. #include <ibexcept.h>
  13.  
  14. template <class Element, class ElementOps>
  15. IBoolean IGLinkedSequence <Element, ElementOps>::Cursor::setToFirst () {
  16.   return ivCollection->setToFirst (*this);
  17. }
  18.  
  19. template <class Element, class ElementOps>
  20. IBoolean IGLinkedSequence <Element, ElementOps>::Cursor::setToNext () {
  21.   return ivCollection->setToNext (*this);
  22. }
  23.  
  24. template <class Element, class ElementOps>
  25. IBoolean IGLinkedSequence <Element, ElementOps>::Cursor::isValid () const {
  26.   return ivNode != 0;
  27. }
  28.  
  29. template <class Element, class ElementOps>
  30. void IGLinkedSequence <Element, ElementOps>::Cursor::invalidate () {
  31.   ivNode = 0;
  32. }
  33.  
  34. template <class Element, class ElementOps>
  35. ILinkedSequenceImpl::Node* IGLinkedSequence <Element, ElementOps>::Operations::
  36. newNode (void const* node) const {
  37.   Node *result = new Node (((Node const*) node)->ivElement);
  38.   ICHECK (result != 0, IOutOfMemory, IOutOfMemoryText)
  39.   return result;
  40. }
  41.  
  42. template <class Element, class ElementOps>
  43. void IGLinkedSequence <Element, ElementOps>::Operations::
  44. deleteNode (void* node) const {
  45.   delete (Node*) node;
  46. }
  47.  
  48. template < class Element, class ElementOps >
  49. IBoolean IGLinkedSequence < Element, ElementOps >::Operations::
  50. constantFunctionIteration (void *iterationFunction,
  51.                            void* env,
  52.                            void const* node) {
  53.   return (*(IBoolean (*) (Element const&, void*)) iterationFunction)
  54.            (((Node const*)node)->ivElement, env);
  55. }
  56.  
  57. template < class Element, class ElementOps >
  58. IBoolean IGLinkedSequence < Element, ElementOps >::Operations::
  59. functionIteration (void *iterationFunction, void* env, void* node) {
  60.   return (*(IBoolean (*) (Element&, void*)) iterationFunction)
  61.            (((Node*)node)->ivElement, env);
  62. }
  63.  
  64. template < class Element, class ElementOps >
  65. IBoolean IGLinkedSequence < Element, ElementOps >::Operations::
  66. constantIteratorIteration (void* iterator, void const* node) {
  67.   return ((IConstantIterator < Element >*)iterator)->
  68.            applyTo (((Node const*)node)->ivElement);
  69. }
  70.  
  71. template < class Element, class ElementOps >
  72. IBoolean IGLinkedSequence < Element, ElementOps >::Operations::
  73. iteratorIteration (void* iterator, void* node) {
  74.   return ((IIterator < Element >*)iterator)->
  75.            applyTo (((Node*)node)->ivElement);
  76. }
  77.  
  78. template < class Element, class ElementOps >
  79. long IGLinkedSequence < Element, ElementOps >::Operations::
  80. functionComparison (void *comparisonFunction,
  81.                     void const* node1,
  82.                     void const* node2) {
  83.   return (*(long (*) (Element const&, Element const&) const)
  84.             comparisonFunction)
  85.            ( ((Node const*)node1)->ivElement,
  86.              ((Node const*)node2)->ivElement );
  87. }
  88.