X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FParIterator.h;h=2253a1d7bb69845e4e3677d33a5247ed7242243f;hb=4ed0312c51704780af1c452d3a82a84171b3725a;hp=2d16dcce33af09078ccfd6fa2eebf463ee992619;hpb=32871c1284f15265f652ff01c438e539a7c8181f;p=lyx.git diff --git a/src/ParIterator.h b/src/ParIterator.h index 2d16dcce33..2253a1d7bb 100644 --- a/src/ParIterator.h +++ b/src/ParIterator.h @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author unknown - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * * Full author contact details are available in file CREDITS. */ @@ -16,36 +16,26 @@ #include "support/types.h" -#include - namespace lyx { +class Buffer; class Inset; -class LyXText; +class Paragraph; class ParagraphList; -class ParIterator : public std::iterator, - public DocIterator +class ParIterator : public DocIterator { public: - typedef std::iterator StdIt; - - typedef StdIt::value_type value_type; - typedef StdIt::difference_type difference_type; - typedef StdIt::pointer pointer; - typedef StdIt::reference reference; - /// - ParIterator() : DocIterator() {} - - /// - ParIterator(Inset &, pit_type pit); + ParIterator(Buffer * buf) : DocIterator(buf) {} /// - ParIterator(ParIterator const &); + ParIterator(ParIterator const & pi) : + DocIterator(DocIterator(pi)) {} /// - ParIterator(DocIterator const &); + explicit ParIterator(DocIterator const & dit) : + DocIterator(dit) {} /// This really should be implemented... //ParIterator & operator=(ParIterator const &); @@ -71,32 +61,37 @@ public: }; -DocIterator makeDocIterator(ParIterator const &, pos_type); - ParIterator par_iterator_begin(Inset & inset); ParIterator par_iterator_end(Inset & inset); /// -bool operator==(ParIterator const & iter1, ParIterator const & iter2); +//bool operator==(ParIterator const & it1, ParIterator const & it2); -/// -bool operator!=(ParIterator const & iter1, ParIterator const & iter2); +// FIXME: Unfortunately operator!=(ParIterator &, ParIterator &) is +// implemented with operator!=(DocIterator &, DocIterator &) that gives +// false if the positions are different, even if the pars are the same. +// So ultimately it's a bug in operator!=(ParIterator &, ParIterator &) +// I'd say (nevertheless, I would be reluctant to change it, because I +// fear that some part of the code could rely on this "bug". --Alfredo +//bool operator!=(ParIterator const & it1, ParIterator const & it2); -class ParConstIterator : public std::iterator, - public DocIterator +class ParConstIterator : public DocIterator { public: /// - ParConstIterator(): DocIterator() {} + ParConstIterator(Buffer const * buf) + : DocIterator(const_cast(buf)) {} /// - ParConstIterator(ParConstIterator const &); + ParConstIterator(ParConstIterator const & pi) + : DocIterator(DocIterator(pi)) {} /// - ParConstIterator(DocIterator const &); + explicit ParConstIterator(DocIterator const & dit) + : DocIterator(dit) {} /// + void push_back(Inset const &); ParConstIterator & operator++(); /// @@ -109,17 +104,9 @@ public: ParagraphList const & plist() const; }; -bool operator==(ParConstIterator const & iter1, - ParConstIterator const & iter2); - -bool operator!=(ParConstIterator const & iter1, - ParConstIterator const & iter2); - - -ParConstIterator par_const_iterator_begin(Inset const & inset); - -ParConstIterator par_const_iterator_end(Inset const & inset); +//bool operator==(ParConstIterator const & it1, ParConstIterator const & it2); +//bool operator!=(ParConstIterator const & it1, ParConstIterator const & it2); } // namespace lyx