home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / pascal / rehack / contain / double.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-21  |  1.4 KB  |  47 lines

  1. #ifndef __DOUBLE_H
  2. #define __DOUBLE_H
  3.  
  4. // ╔════════════════════════════════════════════════╗
  5. // ║ double.h, double.cpp                           ║
  6. // ╟────────────────────────────────────────────────╢
  7. // ║ doubly-linked list                             ║
  8. // ╟────────────────────────────────────────────────╢
  9. // ║ Written by Gus Smedstad                        ║
  10. // ╟────────────────────────────────────────────────╢
  11. // ║ Copyright 1990-91 NoGate Consulting            ║
  12. // ╚════════════════════════════════════════════════╝
  13. #ifndef __ABSLIST_H
  14. #include "abslist.h"
  15. #endif
  16.  
  17. class double_node : public link_node {
  18. public:
  19.   double_node *last;
  20.   double_node(containable *arg = NULL);
  21.  };
  22.  
  23. class double_list : public abstract_list {
  24.   friend double_index;
  25. protected:
  26.   double_node *tail;
  27. public:
  28.   double_list();
  29.   virtual void         put(containable *arg);
  30.   virtual void         destroy();
  31.           containable *remove(containable *arg);
  32.  };
  33.  
  34. class double_index : public abstract_index {
  35.   friend double_list;
  36.   double_node *node()      { return (double_node *) data; };
  37.   double_node *next_node() { return (double_node *) node()->next; };
  38.   double_list *d_list()    { return (double_list *) list; };
  39. public:
  40.   double_index(double_list & base) : abstract_index(base) {};
  41.   void         to_end();
  42.   void         put(containable *arg);
  43.   virtual void destroy();
  44.   virtual void operator -- ( int );
  45.  };
  46.  
  47. #endif