]> git.lyx.org Git - lyx.git/blobdiff - src/InsetList.cpp
Update credits
[lyx.git] / src / InsetList.cpp
index 5f6398b48c56d5eb62c923f5fa2b1ac314edf0fa..f32612c5ddf00182d316dd8a8a414343c260aab1 100644 (file)
@@ -3,7 +3,7 @@
  * 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 "InsetList.h"
 
-#include "Buffer.h"
-#include "BufferParams.h"
-#include "BranchList.h"
-#include "debug.h"
+#include "insets/Inset.h"
 
-#include "insets/InsetBranch.h"
+#include "support/debug.h"
 
-using std::endl;
-using std::lower_bound;
+#include <algorithm>
 
+using namespace std;
 
 namespace lyx {
 
 
 namespace {
 
-typedef InsetList::InsetTable Table;
+typedef InsetList::Element Table;
 
-class InsetTablePosLess : public std::binary_function<Table, Table, bool> {
-public:
+struct ElementPosLess
+{
        bool operator()(Table const & t1, Table const & t2) const
        {
                return t1.pos < t2.pos;
        }
 };
 
-} // namespace anon
+} // namespace
 
 
+InsetList::InsetList(InsetList const & il) : list_(il.list_)
+{
+       for (auto & i : list_)
+               i.inset = i.inset->clone();
+}
 
-InsetList::~InsetList()
+
+InsetList::InsetList(InsetList const & il, pos_type beg, pos_type end)
 {
-       // If we begin storing a shared_ptr in the List
-       // this code can be removed. (Lgb)
-       List::iterator it = list_.begin();
-       List::iterator end = list_.end();
-       for (; it != end; ++it) {
-               delete it->inset;
+       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()
+{
+       for (auto & i : list_)
+               delete i.inset;
+}
+
+
+void InsetList::setBuffer(Buffer & 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());
 }
 
 
@@ -76,10 +101,10 @@ void InsetList::insert(Inset * inset, pos_type pos)
        List::iterator end = list_.end();
        List::iterator it = insetIterator(pos);
        if (it != end && it->pos == pos) {
-               lyxerr << "ERROR (InsetList::insert): "
-                      << "There is an inset in position: " << pos << endl;
+               LYXERR0("ERROR (InsetList::insert): "
+                      << "There is an inset in position: " << pos);
        } else {
-               list_.insert(it, InsetTable(pos, inset));
+               list_.insert(it, Element(pos, inset));
        }
 }
 
@@ -101,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;
 }
 
 
@@ -114,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;
 }
 
 
@@ -122,9 +147,8 @@ void InsetList::increasePosAfterPos(pos_type pos)
 {
        List::iterator end = list_.end();
        List::iterator it = insetIterator(pos);
-       for (; it != end; ++it) {
+       for (; it != end; ++it)
                ++it->pos;
-       }
 }
 
 
@@ -132,19 +156,8 @@ void InsetList::decreasePosAfterPos(pos_type pos)
 {
        List::iterator end = list_.end();
        List::iterator it = insetIterator(pos);
-       for (; it != end; ++it) {
-               --it->pos;
-       }
-}
-
-
-InsetList::InsetList(InsetList const & il)
-{
-       list_ = il.list_;
-       List::iterator it = list_.begin();
-       List::iterator end = list_.end();
        for (; it != end; ++it)
-               it->inset = it->inset->clone();
+               --it->pos;
 }