source: git/factory/templates/ftmpl_list.h @ 31a2be7

spielwiese
Last change on this file since 31a2be7 was 31a2be7, checked in by Jens Schmidt <schmidt@…>, 26 years ago
^M fix. Was: Thu 27.11.1997 22:30:00 Ruediger Stobbe <rstobbe@de.oracle.com> Factory Win NT Port, see ChangeLog for details git-svn-id: file:///usr/local/Singular/svn/trunk@952 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.6 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: ftmpl_list.h,v 1.5 1997-12-08 18:49:16 schmidt Exp $ */
3
4#ifndef INCL_LIST_H
5#define INCL_LIST_H
6
7#include <factoryconf.h>
8
9#ifndef NOSTREAMIO
10#include <iostream.h>
11#endif /* NOSTREAMIO */
12
13template <class T>
14class ListIterator;
15
16template <class T>
17class List;
18
19template <class T>
20class ListItem
21{
22private:
23    ListItem * next;
24    ListItem * prev;
25    T * item;
26public:
27    ListItem( const ListItem<T>& );
28    ListItem( const T&, ListItem<T>*, ListItem<T>* );
29    ListItem( T* , ListItem<T>* , ListItem<T>* );
30    ~ListItem();
31    ListItem<T>& operator= ( const ListItem<T>& );
32    ListItem<T>* getNext();
33    ListItem<T>* getPrev();
34    T& getItem();
35#ifndef NOSTREAMIO
36    void print ( ostream& );
37#endif /* NOSTREAMIO */
38    friend class ListIterator<T>;
39    friend class List<T>;
40};
41
42template <class T>
43class List
44{
45private:
46    ListItem<T> *first;
47    ListItem<T> *last;
48    int _length;
49public:
50    List();
51    List( const List<T>& );
52    List( const T& );
53    ~List();
54    List<T>& operator= ( const List<T>& );
55    void insert ( const T& );
56    void insert ( const T&, int (*cmpf)( const T&, const T& ) );
57    void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
58    void append ( const T& );
59    int isEmpty() const;
60    int length() const;
61    T getFirst() const;
62    void removeFirst();
63    T getLast() const;
64    void removeLast();
65    void sort ( int (*) ( const T&, const T& ) );
66#ifndef NOSTREAMIO
67    void print ( ostream & ) const;
68#endif /* NOSTREAMIO */
69    friend class ListIterator<T>;
70};
71
72#ifndef NOSTREAMIO
73template <class T>
74ostream& operator<<( ostream & os, const List<T> & l );
75#endif /* NOSTREAMIO */
76
77template <class T>
78class ListIterator {
79private:
80    List<T> *theList;
81    ListItem<T> *current;
82public:
83    ListIterator();
84    ListIterator( const ListIterator<T>& );
85    ListIterator( const List<T>& );
86    ~ListIterator();
87    ListIterator<T>& operator = ( const ListIterator<T>& );
88    ListIterator<T>& operator = ( const List<T>& );
89    T& getItem() const;
90    int hasItem();
91    void operator++();
92    void operator--();
93    void operator++( int );
94    void operator--( int );
95    void firstItem();
96    void lastItem();
97    void insert( const T& );
98    void append( const T& );
99    void remove( int moveright );
100};
101
102template <class T>
103List<T> Union ( const List<T>&, const List<T>& );
104
105template <class T>
106List<T> Difference ( const List<T>&, const List<T>& );
107
108template <class T>
109List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
110
111template <class T>
112T prod ( const List<T>& );
113
114#endif /* ! INCL_LIST_H */
Note: See TracBrowser for help on using the repository browser.