}
+void DocIterator::forwardIdx()
+{
+ CursorSlice & tip = top();
+
+ //prevent endless loops
+ BOOST_ASSERT(tip.idx() < lastidx());
+
+ ++tip.idx();
+ tip.pit() = 0;
+ tip.pos() = 0;
+}
+
+
void DocIterator::forwardChar()
{
forwardPos();
}
+bool operator<(DocIterator const & p, DocIterator const & q)
+{
+ size_t depth = std::min(p.depth(), q.depth());
+ for (size_t i = 0 ; i < depth ; ++i) {
+ if (p[i] != q[i])
+ return p[i] < q[i];
+ }
+ return p.depth() < q.depth();
+}
+
+
+bool operator>(DocIterator const & p, DocIterator const & q)
+{
+ return q < p;
+}
+
+
+bool operator<=(DocIterator const & p, DocIterator const & q)
+{
+ return !(q < p);
+}
+
///////////////////////////////////////////////////////