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());
}
}
{}
+void ParIterator::operator=(ParIterator const & pi)
+{
+ ParIterator tmp(pi);
+ pimpl_.swap(tmp.pimpl_);
+}
+
+
ParIterator & ParIterator::operator++()
{
while (!pimpl_->positions.empty()) {
}
// 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();
}
-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;
}
}
+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;
}
// 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();
}
-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;
}