3 #include "ParagraphList.h"
7 ////////// The ParagraphList::iterator
9 ParagraphList::iterator::iterator()
14 ParagraphList::iterator::iterator(Paragraph * p)
19 ParagraphList::iterator::reference
20 ParagraphList::iterator::operator*()
26 ParagraphList::iterator::pointer
27 ParagraphList::iterator::operator->()
33 ParagraphList::iterator &
34 ParagraphList::iterator::operator++()
45 ParagraphList::iterator
46 ParagraphList::iterator::operator++(int)
54 ParagraphList::iterator &
55 ParagraphList::iterator::operator--()
66 ParagraphList::iterator
67 ParagraphList::iterator::operator--(int)
75 bool operator==(ParagraphList::iterator const & i1,
76 ParagraphList::iterator const & i2)
78 return &(*const_cast<ParagraphList::iterator&>(i1))
79 == &(*const_cast<ParagraphList::iterator&>(i2));
83 bool operator!=(ParagraphList::iterator const & i1,
84 ParagraphList::iterator const & i2)
90 ////////// The ParagraphList proper
91 ParagraphList::ParagraphList()
96 ParagraphList::iterator
97 ParagraphList::insert(ParagraphList::iterator it, Paragraph * par)
101 Paragraph * prev = it->previous_;
103 par->previous_ = prev;
106 } else if (parlist == 0) {
110 Paragraph * last = parlist;
114 par->previous_ = last;
116 return iterator(par);
119 Paragraph * prev = it->prev_par_;
120 par->next_par_ = &*it;
121 par->prev_par_ = prev;
122 prev->next_par_ = par;
124 } else if (parlist == 0) {
128 Paragraph * last = parlist;
129 while (last->next_par_)
130 last = last->next_par_;
131 last->next_par_ = par;
132 par->prev_par_ = last;
134 return iterator(par);
139 void ParagraphList::clear()
143 Paragraph * tmp = parlist->next_;
149 Paragraph * tmp = parlist->next_par_;
157 void ParagraphList::erase(ParagraphList::iterator it)
160 Paragraph * prev = it->previous_;
161 Paragraph * next = it->next_;
169 next->previous_ = prev;
175 Paragraph * prev = it->prev_par_;
176 Paragraph * next = it->next_par_;
179 prev->next_par_ = next;
184 next->prev_par_ = prev;
191 ParagraphList::iterator ParagraphList::begin()
193 return iterator(parlist);
197 ParagraphList::iterator ParagraphList::begin() const
199 return iterator(parlist);
203 ParagraphList::iterator ParagraphList::end()
209 ParagraphList::iterator ParagraphList::end() const
215 Paragraph const & ParagraphList::front() const
221 Paragraph & ParagraphList::front()
227 Paragraph const & ParagraphList::back() const
230 Paragraph * tmp = parlist;
235 Paragraph * tmp = parlist;
236 while (tmp->next_par_)
237 tmp = tmp->next_par_;
243 Paragraph & ParagraphList::back()
246 Paragraph * tmp = parlist;
251 Paragraph * tmp = parlist;
252 while (tmp->next_par_)
253 tmp = tmp->next_par_;
259 void ParagraphList::set(Paragraph * p)
265 void ParagraphList::push_back(Paragraph * p)
273 Paragraph * pos = parlist;
284 Paragraph * pos = parlist;
285 while (pos->next_par_)
286 pos = pos->next_par_;
293 int ParagraphList::size() const
296 // When we switch to a std::container this will be O(1)
297 // instead of O(n). (Lgb)
298 Paragraph * tmp = parlist;
306 // When we switch to a std::container this will be O(1)
307 // instead of O(n). (Lgb)
308 Paragraph * tmp = parlist;
312 tmp = tmp->next_par_;
319 bool ParagraphList::empty() const