X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FInsetList.cpp;h=f32612c5ddf00182d316dd8a8a414343c260aab1;hb=21c92c8a129b5f3ff56de33bf2941a25967cffbb;hp=057c82d00ec1c376510d9a949a83848f7d4a1e9b;hpb=396a90decb79a13a0ead2072cdacd52dcdf07842;p=lyx.git diff --git a/src/InsetList.cpp b/src/InsetList.cpp index 057c82d00e..f32612c5dd 100644 --- a/src/InsetList.cpp +++ b/src/InsetList.cpp @@ -3,25 +3,22 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Martin Vermeer * * Full author contact details are available in file CREDITS. */ #include -#include #include "InsetList.h" -#include "Buffer.h" -#include "BufferParams.h" -#include "BranchList.h" - -#include "insets/InsetBranch.h" +#include "insets/Inset.h" #include "support/debug.h" +#include + using namespace std; namespace lyx { @@ -29,9 +26,9 @@ namespace lyx { namespace { -typedef InsetList::InsetTable Table; +typedef InsetList::Element Table; -struct InsetTablePosLess +struct ElementPosLess { bool operator()(Table const & t1, Table const & t2) const { @@ -39,50 +36,63 @@ struct InsetTablePosLess } }; -} // namespace anon +} // namespace -InsetList::InsetList(InsetList const & il) +InsetList::InsetList(InsetList const & il) : list_(il.list_) { - list_ = il.list_; - List::iterator it = list_.begin(); - List::iterator end = list_.end(); - for (; it != end; ++it) - it->inset = it->inset->clone(); + for (auto & i : list_) + i.inset = i.inset->clone(); +} + + +InsetList::InsetList(InsetList const & il, pos_type beg, pos_type end) +{ + for (auto const & ci : il) { + if (ci.pos < beg) + continue; + if (ci.pos >= end) + break; + // Add a new entry in the insetlist_. + insert(ci.inset->clone(), ci.pos - beg); + } } InsetList::~InsetList() { - List::iterator it = list_.begin(); - List::iterator end = list_.end(); - for (; it != end; ++it) - delete it->inset; + for (auto & i : list_) + delete i.inset; } void InsetList::setBuffer(Buffer & b) { - List::iterator it = list_.begin(); - List::iterator end = list_.end(); - for (; it != end; ++it) - it->inset->setBuffer(b); + for (auto & i : list_) + i.inset->setBuffer(b); +} + + +void InsetList::resetBuffer() +{ + for (auto & i : list_) + i.inset->resetBuffer(); } InsetList::iterator InsetList::insetIterator(pos_type pos) { - InsetTable search_elem(pos, 0); + Element search_elem(pos, nullptr); return lower_bound(list_.begin(), list_.end(), search_elem, - InsetTablePosLess()); + ElementPosLess()); } InsetList::const_iterator InsetList::insetIterator(pos_type pos) const { - InsetTable search_elem(pos, 0); + Element search_elem(pos, nullptr); return lower_bound(list_.begin(), list_.end(), search_elem, - InsetTablePosLess()); + ElementPosLess()); } @@ -94,7 +104,7 @@ void InsetList::insert(Inset * inset, pos_type pos) LYXERR0("ERROR (InsetList::insert): " << "There is an inset in position: " << pos); } else { - list_.insert(it, InsetTable(pos, inset)); + list_.insert(it, Element(pos, inset)); } } @@ -116,10 +126,10 @@ Inset * InsetList::release(pos_type pos) List::iterator it = insetIterator(pos); if (it != end && it->pos == pos) { Inset * tmp = it->inset; - it->inset = 0; + it->inset = nullptr; return tmp; } - return 0; + return nullptr; } @@ -129,7 +139,7 @@ Inset * InsetList::get(pos_type pos) const List::const_iterator it = insetIterator(pos); if (it != end && it->pos == pos) return it->inset; - return 0; + return nullptr; }