]> git.lyx.org Git - lyx.git/blob - src/RowList.h
rowlist7
[lyx.git] / src / RowList.h
1 // -*- C++ -*-
2
3 #ifndef ROW_LIST_H
4 #define ROW_LIST_H
5
6 #include <iterator>
7
8 class Row;
9
10 ///
11 class RowList {
12 public:
13         ///
14         class iterator {
15         public:
16                 ///
17                 typedef std::bidirectional_iterator_tag iterator_category;
18                 ///
19                 typedef Row * value_type;
20                 ///
21                 typedef ptrdiff_t difference_type;
22                 ///
23                 typedef Row * pointer;
24                 ///
25                 typedef Row & reference;
26                 ///
27                 iterator();
28                 ///
29                 iterator(value_type);
30                 ///
31                 reference operator*();
32                 ///
33                 pointer operator->();
34                 ///
35                 iterator & operator++();
36                 ///
37                 iterator operator++(int);
38                 ///
39                 iterator & operator--();
40                 ///
41                 iterator operator--(int);
42         private:
43                 ///
44                 Row * ptr;
45         };
46         ///
47         class const_iterator {
48         public:
49                 ///
50                 typedef std::bidirectional_iterator_tag iterator_category;
51                 ///
52                 typedef Row * value_type;
53                 ///
54                 typedef ptrdiff_t difference_type;
55                 ///
56                 typedef Row const * const_pointer;
57                 ///
58                 typedef Row const & const_reference;
59                 ///
60                 const_iterator();
61                 ///
62                 const_iterator(value_type);
63                 ///
64                 const_reference operator*();
65                 ///
66                 const_pointer operator->();
67                 ///
68                 const_iterator & operator++();
69                 ///
70                 const_iterator operator++(int);
71                 ///
72                 const_iterator & operator--();
73                 ///
74                 const_iterator operator--(int);
75         private:
76                 ///
77                 Row * ptr;
78         };
79         ///
80         RowList();
81         ///
82         iterator insert(iterator it, Row * row);
83         ///
84         void clear();
85         ///
86         void erase(iterator it);
87         ///
88         iterator begin();
89         ///
90         const_iterator begin() const;
91         ///
92         iterator end();
93         ///
94         const_iterator end() const;
95         ///
96         void push_back(Row *);
97         ///
98         Row const & front() const;
99         ///
100         Row & front();
101         ///
102         Row const & back() const;
103         ///
104         Row & back();
105         ///
106         int size() const;
107         ///
108         bool empty() const;
109 private:
110         ///
111         Row * rowlist;
112 };
113
114 ///
115 bool operator==(RowList::iterator const & i1,
116                 RowList::iterator const & i2);
117 ///
118 bool operator!=(RowList::iterator const & i1,
119                 RowList::iterator const & i2);
120
121 ///
122 bool operator==(RowList::const_iterator const & i1,
123                 RowList::const_iterator const & i2);
124 ///
125 bool operator!=(RowList::const_iterator const & i1,
126                 RowList::const_iterator const & i2);
127
128 #endif