3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
7 * \author Lars Gullik Bjønnes
9 * Full author contact details are available in file CREDITS.
15 #include "ParagraphList_fwd.h"
16 #include "InsetList.h"
18 #include "support/types.h"
20 #include <boost/optional.hpp>
35 ParPosition(ParagraphList::iterator p, ParagraphList const & pl);
37 ParagraphList::iterator pit;
39 ParagraphList const * plist;
41 boost::optional<InsetList::iterator> it;
43 boost::optional<int> index;
47 class ParIterator : public std::iterator<
48 std::forward_iterator_tag,
49 ParagraphList::value_type> {
52 ParIterator(ParagraphList::iterator pit, ParagraphList const & pl);
56 ParIterator(ParIterator const &);
58 ParIterator(PosIterator const &);
60 void operator=(ParIterator const &);
62 ParIterator & operator++();
64 Paragraph & operator*() const;
66 ParagraphList::iterator operator->() const;
67 /// This gives us the top-most parent paragraph
68 ParagraphList::iterator outerPar() const;
70 ParagraphList::iterator pit() const;
72 ParagraphList & plist() const;
73 /// returns 'innermost' LyXText
74 LyXText * text(Buffer &) const;
75 /// returns innermost inset
76 InsetBase * inset() const;
77 /// returns index of cell in innermost inset
82 void lockPath(BufferView *) const;
84 typedef std::vector<ParPosition> PosHolder;
85 PosHolder const & positions() const
94 bool operator==(ParIterator const & iter1, ParIterator const & iter2);
97 bool operator!=(ParIterator const & iter1, ParIterator const & iter2);
100 class ParConstIterator : public std::iterator<
101 std::forward_iterator_tag,
102 ParagraphList::value_type> {
105 ParConstIterator(ParagraphList::iterator pit, ParagraphList const & pl);
109 ParConstIterator(ParConstIterator const &);
111 ParConstIterator & operator++();
113 ParagraphList::const_iterator pit() const;
115 Paragraph const & operator*() const;
117 ParagraphList::const_iterator operator->() const;
119 ParagraphList const & plist() const;
123 typedef std::vector<ParPosition> PosHolder;
124 PosHolder const & positions() const
129 PosHolder positions_;
132 bool operator==(ParConstIterator const & iter1,
133 ParConstIterator const & iter2);
135 bool operator!=(ParConstIterator const & iter1,
136 ParConstIterator const & iter2);