source: git/factory/templates/ftmpl_list.h @ 8c0163

spielwiese
Last change on this file since 8c0163 was 8c0163, checked in by Jens Schmidt <schmidt@…>, 27 years ago
#include <config.h> added the header config.h will be included be makeheader git-svn-id: file:///usr/local/Singular/svn/trunk@161 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.8 KB
Line 
1// emacs edit mode for this file is -*- C++ -*-
2// $Id: ftmpl_list.h,v 1.2 1997-04-15 10:11:37 schmidt Exp $
3
4#ifndef INCL_LIST_H
5#define INCL_LIST_H
6
7/*
8$Log: not supported by cvs2svn $
9Revision 1.1  1997/03/27 10:32:32  schmidt
10stream-io wrapped by NOSTREAMIO
11
12Revision 1.0  1996/05/17 11:06:32  stobbe
13Initial revision
14
15*/
16
17/*MAKEHEADER*/
18#include "templates/config.h"
19
20#ifndef NOSTREAMIO
21#include <iostream.h>
22#endif /* NOSTREAMIO */
23
24
25template <class T>
26class ListItem
27{
28private:
29    ListItem * next;
30    ListItem * prev;
31    T * item;
32public:
33    ListItem( const ListItem<T>& );
34    ListItem( const T&, ListItem<T>*, ListItem<T>* );
35    ListItem( T* , ListItem<T>* , ListItem<T>* );
36    ~ListItem();
37    ListItem<T>& operator= ( const ListItem<T>& );
38    ListItem<T>* getNext();
39    ListItem<T>* getPrev();
40    T& getItem();
41#ifndef NOSTREAMIO
42    void print ( ostream& );
43#endif /* NOSTREAMIO */
44    friend class ListIterator<T>;
45    friend class List<T>;
46};
47
48template <class T>
49class List
50{
51private:
52    ListItem<T> *first;
53    ListItem<T> *last;
54    int _length;
55public:
56    List();
57    List( const List<T>& );
58    List( const T& );
59    ~List();
60    List<T>& operator= ( const List<T>& );
61    void insert ( const T& );
62    void insert ( const T&, int (*cmpf)( const T&, const T& ) );
63    void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
64    void append ( const T& );
65    int isEmpty() const;
66    int length() const;
67    T getFirst() const;
68    void removeFirst();
69    T getLast() const;
70    void removeLast();
71    void sort ( int (*) ( const T&, const T& ) );
72#ifndef NOSTREAMIO
73    void print ( ostream & ) const;
74#endif /* NOSTREAMIO */
75    friend class ListIterator<T>;
76};
77
78#ifndef NOSTREAMIO
79template <class T>
80ostream& operator<<( ostream & os, const List<T> & l );
81#endif /* NOSTREAMIO */
82
83template <class T>
84class ListIterator {
85private:
86    List<T> *theList;
87    ListItem<T> *current;
88public:
89    ListIterator();
90    ListIterator( const ListIterator<T>& );
91    ListIterator( const List<T>& );
92    ~ListIterator();
93    ListIterator<T>& operator = ( const ListIterator<T>& );
94    ListIterator<T>& operator = ( const List<T>& );
95    T& getItem() const;
96    int hasItem();
97    void operator++();
98    void operator--();
99    void operator++( int );
100    void operator--( int );
101    void firstItem();
102    void lastItem();
103    void insert( const T& );
104    void append( const T& );
105    void remove( int moveright );
106};
107
108template <class T>
109List<T> Union ( const List<T>&, const List<T>& );
110
111template <class T>
112List<T> Difference ( const List<T>&, const List<T>& );
113
114template <class T>
115List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
116
117template <class T>
118T prod ( const List<T>& );
119
120#endif /* INCL_LIST_H */
Note: See TracBrowser for help on using the repository browser.