]> git.lyx.org Git - lyx.git/blobdiff - src/iterators.h
another safety belt
[lyx.git] / src / iterators.h
index b87d16e5373704abc3c374ae5e712eefc5c98ccd..8bc2128a08c297b9a7fb7e3aa855421c86221704 100644 (file)
 class ParPosition {
 public:
        ParPosition(Paragraph * p)
-               : par(p), it(p->inset_iterator_begin()), index(-1) {}
+               : par(p), it(p->insetlist.begin()), index(-1) {}
        ///
        Paragraph * par;
        ///
-       Paragraph::inset_iterator it;
+       InsetList::iterator it;
        ///
        int index;
 };
@@ -74,4 +74,46 @@ bool operator!=(ParIterator const & iter1, ParIterator const & iter2) {
        return !(iter1 == iter2);
 }
 
+
+class ParConstIterator {
+public:
+       ///
+       typedef std::stack<ParPosition> PosHolder;
+       ///
+       ParConstIterator() {}
+       ///
+       ParConstIterator(Paragraph * par) {
+               positions.push(ParPosition(par));
+       }
+       ///
+       ParConstIterator & operator++();
+       ///
+       Paragraph const * operator*() {
+               return positions.top().par;
+       }
+       ///
+       PosHolder::size_type size() const
+               { return positions.size(); }
+       ///
+       friend
+       bool operator==(ParConstIterator const & iter1,
+                       ParConstIterator const & iter2);
+private:
+       ///
+       PosHolder positions;
+};
+
+
+///
+inline
+bool operator==(ParConstIterator const & iter1, ParConstIterator const & iter2) {
+       return iter1.positions == iter2.positions;
+}
+
+///
+inline
+bool operator!=(ParConstIterator const & iter1, ParConstIterator const & iter2) {
+       return !(iter1 == iter2);
+}
+
 #endif