]> git.lyx.org Git - lyx.git/blob - src/pariterator.h
Simplify the mechanics of generating the 'inactive' pixmap.
[lyx.git] / src / pariterator.h
1 // -*- C++ -*-
2 /* \file pariterator.h
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author unknown
7  * \author Lars Gullik Bjønnes
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #ifndef PARITERATOR_H
13 #define PARITERATOR_H
14
15 #include "dociterator.h"
16
17 #include "support/types.h"
18
19 #include <boost/optional.hpp>
20
21 #include <vector>
22
23
24
25 class InsetBase;
26 class LyXText;
27 class ParagraphList;
28
29
30 class ParIterator : public std::iterator<std::forward_iterator_tag, Paragraph>,
31                     public DocIterator
32 {
33 public:
34         ///
35         ParIterator(InsetBase &, lyx::par_type pit);
36         ///
37         ParIterator(ParIterator const &);
38         ///
39         ParIterator(DocIterator const &);
40
41         ///
42         void operator=(ParIterator const &);
43         ///
44         ParIterator & operator++();
45         ///
46         ParIterator & operator--();
47         ///
48         Paragraph & operator*() const;
49         ///
50         Paragraph * operator->() const;
51         /// This gives us the top-most parent paragraph
52         lyx::par_type outerPar() const;
53         ///
54         lyx::par_type pit() const;
55         ///
56         ParagraphList & plist() const;
57 };
58
59
60 DocIterator makeDocIterator(ParIterator const &, lyx::pos_type);
61
62 ParIterator par_iterator_begin(InsetBase & inset);
63
64 ParIterator par_iterator_end(InsetBase & inset);
65
66
67 ///
68 bool operator==(ParIterator const & iter1, ParIterator const & iter2);
69
70 ///
71 bool operator!=(ParIterator const & iter1, ParIterator const & iter2);
72
73
74 class ParConstIterator : public std::iterator<std::forward_iterator_tag,
75                          Paragraph>,
76                          public DocIterator
77 {
78 public:
79         ///
80         ParConstIterator(ParConstIterator const &);
81         ///
82         ParConstIterator(DocIterator const &);
83         ///
84
85         ParConstIterator & operator++();
86         ///
87         ParConstIterator & operator--();
88         ///
89         Paragraph const & operator*() const;
90         ///
91         Paragraph const * operator->() const;
92         ///
93         ParagraphList const & plist() const;
94 };
95
96 bool operator==(ParConstIterator const & iter1,
97                 ParConstIterator const & iter2);
98
99 bool operator!=(ParConstIterator const & iter1,
100                 ParConstIterator const & iter2);
101
102
103 ParConstIterator par_const_iterator_begin(InsetBase const & inset);
104
105 ParConstIterator par_const_iterator_end(InsetBase const & inset);
106
107
108 #endif