prepare for NO_NEXT

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6819 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2003-04-15 19:18:24 +00:00
parent 9de8beeae6
commit f47e421e32
2 changed files with 94 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2003-04-15 Lars Gullik Bjønnes <larsbj@gullik.net>
* ParagraphList.C: prepare for NO_NEXT
2003-04-15 Lars Gullik Bjønnes <larsbj@gullik.net> 2003-04-15 Lars Gullik Bjønnes <larsbj@gullik.net>
* text2.C (getFont): adjust * text2.C (getFont): adjust

View File

@ -33,7 +33,11 @@ ParagraphList::iterator::operator->()
ParagraphList::iterator & ParagraphList::iterator &
ParagraphList::iterator::operator++() ParagraphList::iterator::operator++()
{ {
#ifndef NO_NEXT
ptr = ptr->next_; ptr = ptr->next_;
#else
ptr = ptr->next_par_;
#endif
return *this; return *this;
} }
@ -50,7 +54,11 @@ ParagraphList::iterator::operator++(int)
ParagraphList::iterator & ParagraphList::iterator &
ParagraphList::iterator::operator--() ParagraphList::iterator::operator--()
{ {
#ifndef NO_NEXT
ptr = ptr->previous_; ptr = ptr->previous_;
#else
ptr = ptr->prev_par_;
#endif
return *this; return *this;
} }
@ -88,6 +96,7 @@ ParagraphList::ParagraphList()
ParagraphList::iterator ParagraphList::iterator
ParagraphList::insert(ParagraphList::iterator it, Paragraph * par) ParagraphList::insert(ParagraphList::iterator it, Paragraph * par)
{ {
#ifndef NO_NEXT
if (it != end()) { if (it != end()) {
Paragraph * prev = it->previous_; Paragraph * prev = it->previous_;
par->next_ = &*it; par->next_ = &*it;
@ -105,21 +114,49 @@ ParagraphList::insert(ParagraphList::iterator it, Paragraph * par)
par->previous_ = last; par->previous_ = last;
} }
return iterator(par); return iterator(par);
#else
if (it != end()) {
Paragraph * prev = it->prev_par_;
par->next_par_ = &*it;
par->prev_par_ = prev;
prev->next_par_ = par;
it->prev_ par_= par;
} else if (parlist == 0) {
parlist = par;
} else {
// Find last par.
Paragraph * last = parlist;
while (last->next_par_)
last = last->next_par_;
last->next_par_ = par;
par->prev_par_ = last;
}
return iterator(par);
#endif
} }
void ParagraphList::clear() void ParagraphList::clear()
{ {
#ifndef NO_NEXT
while (parlist) { while (parlist) {
Paragraph * tmp = parlist->next_; Paragraph * tmp = parlist->next_;
delete parlist; delete parlist;
parlist = tmp; parlist = tmp;
} }
#else
while (parlist) {
Paragraph * tmp = parlist->next_par_;
delete parlist;
parlist = tmp;
}
#endif
} }
void ParagraphList::erase(ParagraphList::iterator it) void ParagraphList::erase(ParagraphList::iterator it)
{ {
#ifndef NO_NEXT
Paragraph * prev = it->previous_; Paragraph * prev = it->previous_;
Paragraph * next = it->next_; Paragraph * next = it->next_;
@ -132,6 +169,20 @@ void ParagraphList::erase(ParagraphList::iterator it)
next->previous_ = prev; next->previous_ = prev;
delete &*it; delete &*it;
#else
Paragraph * prev = it->prev_par_;
Paragraph * next = it->next_par_;
if (prev)
prev->next_par_ = next;
else
parlist = next;
if (next)
next->prev_par_ = prev;
delete &*it;
#endif
} }
@ -173,19 +224,33 @@ Paragraph & ParagraphList::front()
Paragraph const & ParagraphList::back() const Paragraph const & ParagraphList::back() const
{ {
#ifndef NO_NEXT
Paragraph * tmp = parlist; Paragraph * tmp = parlist;
while (tmp->next_) while (tmp->next_)
tmp = tmp->next_; tmp = tmp->next_;
return *tmp; return *tmp;
#else
Paragraph * tmp = parlist;
while (tmp->next_par_)
tmp = tmp->next_par_;
return *tmp;
#endif
} }
Paragraph & ParagraphList::back() Paragraph & ParagraphList::back()
{ {
#ifndef NO_NEXT
Paragraph * tmp = parlist; Paragraph * tmp = parlist;
while (tmp->next_) while (tmp->next_)
tmp = tmp->next_; tmp = tmp->next_;
return *tmp; return *tmp;
#else
Paragraph * tmp = parlist;
while (tmp->next_par_)
tmp = tmp->next_par_;
return *tmp;
#endif
} }
@ -197,6 +262,7 @@ void ParagraphList::set(Paragraph * p)
void ParagraphList::push_back(Paragraph * p) void ParagraphList::push_back(Paragraph * p)
{ {
#ifndef NO_NEXT
if (!parlist) { if (!parlist) {
parlist = p; parlist = p;
return; return;
@ -207,11 +273,24 @@ void ParagraphList::push_back(Paragraph * p)
pos = pos->next_; pos = pos->next_;
pos->next_ = p; pos->next_ = p;
p->previous_ = pos; p->previous_ = pos;
#else
if (!parlist) {
parlist = p;
return;
}
Paragraph * pos = parlist;
while (pos->next_par_)
pos = pos->next_par_;
pos->next_par_ = p;
p->prev_par_ = pos;
#endif
} }
int ParagraphList::size() const int ParagraphList::size() const
{ {
#ifndef NO_NEXT
// When we switch to a std::container this will be O(1) // When we switch to a std::container this will be O(1)
// instead of O(n). (Lgb) // instead of O(n). (Lgb)
Paragraph * tmp = parlist; Paragraph * tmp = parlist;
@ -221,6 +300,17 @@ int ParagraphList::size() const
tmp = tmp->next_; tmp = tmp->next_;
} }
return c; return c;
#else
// When we switch to a std::container this will be O(1)
// instead of O(n). (Lgb)
Paragraph * tmp = parlist;
int c = 0;
while (tmp) {
++c;
tmp = tmp->next_par_;
}
return c;
#endif
} }