]> git.lyx.org Git - features.git/blobdiff - src/iterators.C
parlist-23-a,diff
[features.git] / src / iterators.C
index 7f067728d1e14549f9a3740fede79f14851af54b..72d8627044091de1c1c9afbe3e1f56d087a7593e 100644 (file)
@@ -45,7 +45,7 @@ public:
 ParPosition::ParPosition(ParagraphList::iterator p, ParagraphList const & pl)
        : pit(p), plist(&pl)
 {
-       if (p != pl.end()) {
+       if (p != const_cast<ParagraphList&>(pl).end()) {
                it.reset(p->insetlist.begin());
        }
 }
@@ -88,6 +88,13 @@ ParIterator::ParIterator(ParIterator const & pi)
 {}
 
 
+void ParIterator::operator=(ParIterator const & pi)
+{
+       ParIterator tmp(pi);
+       pimpl_.swap(tmp.pimpl_);
+}
+
+
 ParIterator & ParIterator::operator++()
 {
        while (!pimpl_->positions.empty()) {
@@ -120,7 +127,7 @@ ParIterator & ParIterator::operator++()
                }
 
                // Try to go to the next paragarph
-               if (next(p.pit) != p.plist->end()
+               if (next(p.pit) != const_cast<ParagraphList*>(p.plist)->end()
                    || pimpl_->positions.size() == 1) {
                        ++p.pit;
                        p.index.reset();
@@ -136,13 +143,13 @@ ParIterator & ParIterator::operator++()
 }
 
 
-ParagraphList::iterator ParIterator::operator*()
+ParagraphList::iterator ParIterator::operator*() const
 {
        return pimpl_->positions.top().pit;
 }
 
 
-ParagraphList::iterator ParIterator::operator->()
+ParagraphList::iterator ParIterator::operator->() const
 {
        return pimpl_->positions.top().pit;
 }
@@ -154,6 +161,12 @@ size_t ParIterator::size() const
 }
 
 
+ParagraphList & ParIterator::plist() const
+{
+       return *const_cast<ParagraphList*>(pimpl_->positions.top().plist);
+}
+
+
 bool operator==(ParIterator const & iter1, ParIterator const & iter2)
 {
        return iter1.pimpl_->positions == iter2.pimpl_->positions;
@@ -226,7 +239,7 @@ ParConstIterator & ParConstIterator::operator++()
                }
 
                // Try to go to the next paragarph
-               if (next(p.pit) != p.plist->end()
+               if (next(p.pit) != const_cast<ParagraphList*>(p.plist)->end()
                    || pimpl_->positions.size() == 1) {
                        ++p.pit;
                        p.index.reset();
@@ -243,13 +256,13 @@ ParConstIterator & ParConstIterator::operator++()
 }
 
 
-ParagraphList::iterator ParConstIterator::operator*()
+ParagraphList::iterator ParConstIterator::operator*() const
 {
        return pimpl_->positions.top().pit;
 }
 
 
-ParagraphList::iterator ParConstIterator::operator->()
+ParagraphList::iterator ParConstIterator::operator->() const
 {
        return pimpl_->positions.top().pit;
 }