]> git.lyx.org Git - lyx.git/blob - src/iterators.h
undo per inset. still a few crashes...
[lyx.git] / src / iterators.h
1 // -*- C++ -*-
2 /* \file iterators.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 ITERATORS_H
13 #define ITERATORS_H
14
15 #include "ParagraphList_fwd.h"
16
17 #include <boost/scoped_ptr.hpp>
18
19 class LyXText;
20 class InsetOld;
21
22 class ParIterator {
23 public:
24         ///
25         ParIterator(ParagraphList::iterator pit, ParagraphList const & pl);
26         ///
27         ~ParIterator();
28         ///
29         ParIterator(ParIterator const &);
30         ///
31         void operator=(ParIterator const &);
32         ///
33         ParIterator & operator++();
34         ///
35         Paragraph & operator*() const;
36         ///
37         ParagraphList::iterator operator->() const;
38         /// This gives us the top-most parent paragraph
39         ParagraphList::iterator outerPar() const;
40         ///
41         ParagraphList::iterator pit() const;
42         ///
43         ParagraphList & plist() const;
44         /// returns 'innermost' LyXText if in an inset or '0' instead of
45         //bv->text
46         LyXText * text() const;
47         /// returns innermost inset
48         InsetOld * inset() const;
49         /// returns index of cell in innermost inset
50         int index() const;
51         ///
52         size_t size() const;
53         ///
54         friend
55         bool operator==(ParIterator const & iter1, ParIterator const & iter2);
56 private:
57         struct Pimpl;
58         boost::scoped_ptr<Pimpl> pimpl_;
59 };
60
61 ///
62 bool operator==(ParIterator const & iter1, ParIterator const & iter2);
63
64 ///
65 bool operator!=(ParIterator const & iter1, ParIterator const & iter2);
66
67
68 class ParConstIterator {
69 public:
70         ///
71         ParConstIterator(ParagraphList::iterator pit, ParagraphList const & pl);
72         ///
73         ~ParConstIterator();
74         ///
75         ParConstIterator(ParConstIterator const &);
76         ///
77         ParConstIterator & operator++();
78         ///
79         ParagraphList::const_iterator pit() const;
80         ///
81         Paragraph const & operator*() const;
82         ///
83         ParagraphList::const_iterator operator->() const;
84         ///
85         ParagraphList const & plist() const;
86
87         /// depth of nesting
88         size_t size() const;
89         ///
90         friend
91         bool operator==(ParConstIterator const & iter1,
92                         ParConstIterator const & iter2);
93 private:
94         struct Pimpl;
95         boost::scoped_ptr<Pimpl> pimpl_;
96 };
97
98 bool operator==(ParConstIterator const & iter1,
99                 ParConstIterator const & iter2);
100
101 bool operator!=(ParConstIterator const & iter1,
102                 ParConstIterator const & iter2);
103
104 #endif