source: git/factory/templates/ftmpl_list.h @ dce1e3

spielwiese
Last change on this file since dce1e3 was 341696, checked in by Hans Schönemann <hannes@…>, 14 years ago
Adding Id property to all files git-svn-id: file:///usr/local/Singular/svn/trunk@12231 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.9 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id$ */
3
4#ifndef INCL_LIST_H
5#define INCL_LIST_H
6
7#include <factoryconf.h>
8
9#ifndef NOSTREAMIO
10#ifdef HAVE_IOSTREAM
11#include <iostream>
12#define OSTREAM std::ostream
13#elif defined(HAVE_IOSTREAM_H)
14#include <iostream.h>
15#define OSTREAM ostream
16#endif
17#endif /* NOSTREAMIO */
18
19template <class T>
20class ListIterator;
21
22template <class T>
23class List;
24
25#ifndef NOSTREAMIO
26template <class T>
27OSTREAM& operator<< ( OSTREAM &, const List<T> &);
28#endif
29
30template <class T>
31class ListItem
32{
33private:
34    ListItem * next;
35    ListItem * prev;
36    T * item;
37public:
38    ListItem( const ListItem<T>& );
39    ListItem( const T&, ListItem<T>*, ListItem<T>* );
40    ListItem( T* , ListItem<T>* , ListItem<T>* );
41    ~ListItem();
42    ListItem<T>& operator= ( const ListItem<T>& );
43    ListItem<T>* getNext();
44    ListItem<T>* getPrev();
45    T& getItem();
46#ifndef NOSTREAMIO
47    void print ( OSTREAM& );
48#endif /* NOSTREAMIO */
49    friend class ListIterator<T>;
50    friend class List<T>;
51};
52
53template <class T>
54class List
55{
56private:
57    ListItem<T> *first;
58    ListItem<T> *last;
59    int _length;
60public:
61    List();
62    List( const List<T>& );
63    List( const T& );
64    ~List();
65    List<T>& operator= ( const List<T>& );
66    void insert ( const T& );
67    void insert ( const T&, int (*cmpf)( const T&, const T& ) );
68    void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
69    void append ( const T& );
70    int isEmpty() const;
71    int length() const;
72    T getFirst() const;
73    void removeFirst();
74    T getLast() const;
75    void removeLast();
76    void sort ( int (*) ( const T&, const T& ) );
77#ifndef NOSTREAMIO
78    void print ( OSTREAM & ) const;
79    friend OSTREAM& operator<< <T>( OSTREAM & os, const List<T> & l );
80#endif /* NOSTREAMIO */
81    friend class ListIterator<T>;
82};
83
84#ifndef NOSTREAMIO
85template <class T>
86OSTREAM& operator<< ( OSTREAM & os, const List<T> & l );
87#endif /* NOSTREAMIO */
88
89template <class T>
90class ListIterator {
91private:
92    List<T> *theList;
93    ListItem<T> *current;
94public:
95    ListIterator();
96    ListIterator( const ListIterator<T>& );
97    ListIterator( const List<T>& );
98    ~ListIterator();
99    ListIterator<T>& operator = ( const ListIterator<T>& );
100    ListIterator<T>& operator = ( const List<T>& );
101    T& getItem() const;
102    int hasItem();
103    void operator++();
104    void operator--();
105    void operator++( int );
106    void operator--( int );
107    void firstItem();
108    void lastItem();
109    void insert( const T& );
110    void append( const T& );
111    void remove( int moveright );
112};
113
114template <class T>
115List<T> Union ( const List<T>&, const List<T>& );
116
117template <class T>
118List<T> Difference ( const List<T>&, const List<T>& );
119
120template <class T>
121List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
122
123template <class T>
124T prod ( const List<T>& );
125
126template <class T>
127bool find (const List<T>&, const T& t);
128
129#endif /* ! INCL_LIST_H */
Note: See TracBrowser for help on using the repository browser.