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 "dociterator.h"
17 #include "support/types.h"
19 #include <boost/optional.hpp>
30 class ParIterator
: public std::iterator
<std::forward_iterator_tag
, Paragraph
>,
34 typedef std::iterator
<std::forward_iterator_tag
, Paragraph
> StdIt
;
36 typedef StdIt::value_type value_type
;
37 typedef StdIt::difference_type difference_type
;
38 typedef StdIt::pointer pointer
;
39 typedef StdIt::reference reference
;
42 ParIterator() : DocIterator() {}
46 ParIterator(InsetBase
&, lyx::pit_type pit
);
48 ParIterator(ParIterator
const &);
50 ParIterator(DocIterator
const &);
52 /// This really should be implemented...
53 //ParIterator & operator=(ParIterator const &);
55 ParIterator
& operator++();
57 ParIterator
operator++(int);
58 /// See comment in pariterator.C
59 //ParIterator & operator--();
61 Paragraph
& operator*() const;
63 Paragraph
* operator->() const;
64 /// This gives us the top-most parent paragraph
65 lyx::pit_type
outerPar() const;
67 lyx::pit_type
pit() const;
69 ParagraphList
& plist() const;
73 DocIterator
makeDocIterator(ParIterator
const &, lyx::pos_type
);
75 ParIterator
par_iterator_begin(InsetBase
& inset
);
77 ParIterator
par_iterator_end(InsetBase
& inset
);
81 bool operator==(ParIterator
const & iter1
, ParIterator
const & iter2
);
84 bool operator!=(ParIterator
const & iter1
, ParIterator
const & iter2
);
87 class ParConstIterator
: public std::iterator
<std::forward_iterator_tag
,
93 ParConstIterator(ParConstIterator
const &);
95 ParConstIterator(DocIterator
const &);
98 ParConstIterator
& operator++();
100 ParConstIterator
& operator--();
102 Paragraph
const & operator*() const;
104 Paragraph
const * operator->() const;
106 ParagraphList
const & plist() const;
109 bool operator==(ParConstIterator
const & iter1
,
110 ParConstIterator
const & iter2
);
112 bool operator!=(ParConstIterator
const & iter1
,
113 ParConstIterator
const & iter2
);
116 ParConstIterator
par_const_iterator_begin(InsetBase
const & inset
);
118 ParConstIterator
par_const_iterator_end(InsetBase
const & inset
);