Consider the case where there is not any layout name.
[lyx.git] / src / pariterator.h
blob1dbd705d7bdff5bd50804c50600a936e8cfcbded
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.
6 * \author unknown
7 * \author Lars Gullik Bjønnes
9 * Full author contact details are available in file CREDITS.
12 #ifndef PARITERATOR_H
13 #define PARITERATOR_H
15 #include "dociterator.h"
17 #include "support/types.h"
19 #include <boost/optional.hpp>
21 #include <vector>
25 class InsetBase;
26 class LyXText;
27 class ParagraphList;
30 class ParIterator : public std::iterator<std::forward_iterator_tag, Paragraph>,
31 public DocIterator
33 public:
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;
41 ///
42 ParIterator() : DocIterator() {}
45 ///
46 ParIterator(InsetBase &, lyx::pit_type pit);
47 ///
48 ParIterator(ParIterator const &);
49 ///
50 ParIterator(DocIterator const &);
52 /// This really should be implemented...
53 //ParIterator & operator=(ParIterator const &);
54 ///
55 ParIterator & operator++();
56 ///
57 ParIterator operator++(int);
58 /// See comment in pariterator.C
59 //ParIterator & operator--();
60 ///
61 Paragraph & operator*() const;
62 ///
63 Paragraph * operator->() const;
64 /// This gives us the top-most parent paragraph
65 lyx::pit_type outerPar() const;
66 ///
67 lyx::pit_type pit() const;
68 ///
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);
80 ///
81 bool operator==(ParIterator const & iter1, ParIterator const & iter2);
83 ///
84 bool operator!=(ParIterator const & iter1, ParIterator const & iter2);
87 class ParConstIterator : public std::iterator<std::forward_iterator_tag,
88 Paragraph>,
89 public DocIterator
91 public:
92 ///
93 ParConstIterator(ParConstIterator const &);
94 ///
95 ParConstIterator(DocIterator const &);
96 ///
98 ParConstIterator & operator++();
99 ///
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);
121 #endif