home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ctdemo.zip / classes / @CLSLIB1.ZIP / cls / tutorial / slst__tr.cpp < prev    next >
C/C++ Source or Header  |  1994-08-15  |  2KB  |  99 lines

  1. #ifndef INCL_SLIST_BASE_ITER
  2. #define INCL_SLIST_BASE_ITER
  3.  
  4. #ifndef __FIRST__
  5. #define __FIRST__
  6. #define __IMPL__SLIST_BASE_ITER
  7. #endif
  8.  
  9. /////V slist_base_iter PCM f:\cls_ibm\cls\tutorial 0 PM 20.10.94 19:37:12
  10.  
  11. /*
  12. /////H 
  13. 20.10.94 19:37 PM 0 copied from: slist_base_iter TOS f:\cls_ibm\cls\tutorial 0 PM 19.10.94 00:26:00
  14. 30.03.95 10:34 PM 0 archived: slist_base_iter PCM f:\cls_ibm\cls\tutorial 0 PM 20.10.94 19:37:12
  15. /////
  16. */
  17.  
  18. /////1
  19. #undef inline
  20.  
  21. #include <bsa.h>
  22.  
  23. /////I slist_base @ @ @ @ class pre 
  24. #include <slst_bas.cpp>
  25.  
  26.  
  27. #ifndef __INLINE__
  28. #define inline
  29. #endif
  30.  
  31. /////C slist_base_iter @ @ 
  32. class slist_base_iter
  33.  
  34. {
  35.  
  36. private:
  37. /////D ce @  @ instance private 
  38.     slink*     ce;
  39.  
  40. /////D cs @  @ instance private 
  41.     slist_base*     cs;
  42.  
  43.  
  44. public:
  45.     inline slink* operator     () ();
  46.     inline void     reset ();
  47.     inline slist_base_iter (slist_base&);
  48. };
  49.  
  50.  
  51. /////2
  52. #undef inline
  53.  
  54.  
  55. #if (defined __INLINE__) || (defined __IMPL__SLIST_BASE_ITER)
  56.  
  57. #ifndef __INLINE__
  58. #define inline
  59. #endif
  60.  
  61. /////F () @ @ public instance inline 
  62. inline
  63. slink* slist_base_iter:: operator () ()
  64.     // return current element ( 0 to indicate end of iteration)
  65. {
  66.     slink* ret = ce ? (ce=ce->next) : 0;
  67.     if (ce == cs->last) ce = 0;
  68.     return ret;
  69. }
  70.  
  71. /////F reset @ @ public instance inline 
  72. inline
  73. void slist_base_iter:: reset ()
  74.     // reset current element to (current) head of list
  75. {
  76.     ce = cs->last;
  77. }
  78.  
  79. /////F slist_base_iter @ @ public instance inline 
  80. inline
  81. slist_base_iter:: slist_base_iter ( slist_base& s )
  82.     // ctor to build an iterator on an existing list
  83. {
  84.     cs = &s;
  85.     ce = cs->last;
  86. }
  87.  
  88. /////
  89. #endif
  90.  
  91. /////3
  92. #undef inline
  93.  
  94. #ifdef __IMPL__SLIST_BASE_ITER
  95. /////
  96. #endif
  97.  
  98. #endif
  99.