3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Alfredo Braunstein
8 * Full author contact details are available in file CREDITS.
14 #include "ParagraphList_fwd.h"
16 #include "iterators.h"
18 #include "support/types.h"
25 struct PosIteratorItem
27 PosIteratorItem(ParagraphList * pl): pl(pl), pit(pl->begin()),
29 PosIteratorItem(ParagraphList * pl,
30 ParagraphList::iterator pit,
33 : pl(pl), pit(pit), pos(pos), index(index) {};
35 ParagraphList::iterator pit;
44 PosIterator(BufferView & bv);
45 PosIterator(ParIterator & par, lyx::pos_type pos);
46 PosIterator(ParagraphList * pl);
47 PosIterator(ParagraphList * pl, ParagraphList::iterator pit,
49 PosIterator(ParIterator const & parit, lyx::pos_type p);
50 PosIterator & operator++();
51 PosIterator & operator--();
52 friend bool operator==(PosIterator const &, PosIterator const &);
54 ParagraphList::iterator pit() const { return stack_.top().pit; }
55 lyx::pos_type pos() const { return stack_.top().pos; }
57 friend PosIterator ParIterator::asPosIterator(lyx::pos_type) const;
61 std::stack<PosIteratorItem> stack_;
64 bool operator!=(PosIterator const &, PosIterator const &);
65 bool operator==(PosIterator const &, PosIterator const &);
67 int distance(PosIterator const &, PosIterator const &);
68 void advance(PosIterator &, int);