]> git.lyx.org Git - lyx.git/blobdiff - src/PosIterator.h
more cursor dispatch
[lyx.git] / src / PosIterator.h
index 19449c1c0be6278e59c8c4747d34ca2091894fb7..cc6107e368e169bc6c7be8163dc35fde92aebc1a 100644 (file)
@@ -35,13 +35,17 @@ struct PosIteratorItem {
 };
 
 
-class PosIterator {
+class PosIterator : public std::iterator<
+       std::bidirectional_iterator_tag,
+        ParagraphList::value_type> {
 public:
+       // Creates a singular.
+       PosIterator() {};
+
        PosIterator(BufferView & bv);
-       PosIterator(ParIterator & par, lyx::pos_type pos);
        PosIterator(ParagraphList * pl, ParagraphList::iterator pit,
                    lyx::pos_type pos);
-       PosIterator(ParIterator const & parit, lyx::pos_type p);
+       PosIterator(ParIterator const & par, lyx::pos_type pos);
        PosIterator & operator++();
        PosIterator & operator--();
        friend bool operator==(PosIterator const &, PosIterator const &);
@@ -50,21 +54,22 @@ public:
        lyx::pos_type pos() const { return stack_.back().pos; }
        bool at_end() const;
        InsetBase * inset() const;
-       friend PosIterator ParIterator::asPosIterator(lyx::pos_type) const;
        friend ParIterator::ParIterator(PosIterator const &);
-       
 private:
-       PosIterator() {};
-       //this is conceptually a stack, but we need random access sometimes
+       void setFrom(ParIterator const & par, lyx::pos_type pos);
+       // This is conceptually a stack,
+       // but we need random access sometimes.
        std::vector<PosIteratorItem> stack_;
 };
 
 
-bool operator!=(PosIterator const &, PosIterator const &);
 bool operator==(PosIterator const &, PosIterator const &);
 
-int distance(PosIterator const &, PosIterator const &);
-void advance(PosIterator &, int);
 
-#endif
+inline
+bool operator!=(PosIterator const & lhs, PosIterator const & rhs)
+{
+       return !(lhs == rhs);
+}
 
+#endif