]> git.lyx.org Git - lyx.git/blobdiff - src/iterators.h
another safety belt
[lyx.git] / src / iterators.h
index ba85b6c46aade4f17485cd46e243a36e40b10147..8bc2128a08c297b9a7fb7e3aa855421c86221704 100644 (file)
@@ -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