X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FDocIterator.h;h=6e730ea685018f6b85116c6adbdffdb07469b39e;hb=36dbec45069bf3d9db923200835e44f44d904eb8;hp=fc6125186c460b87f2b8c8e18b49ff31cf9fb528;hpb=95146d3cf911230ee6c810e22d0243f83ce977a3;p=features.git diff --git a/src/DocIterator.h b/src/DocIterator.h index fc6125186c..6e730ea685 100644 --- a/src/DocIterator.h +++ b/src/DocIterator.h @@ -262,6 +262,32 @@ inline bool operator!=(DocIterator const & di1, DocIterator const & di2) } +inline +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(); +} + + +inline +bool operator>(DocIterator const & p, DocIterator const & q) +{ + return q < p; +} + + +inline +bool operator<=(DocIterator const & p, DocIterator const & q) +{ + return !(q < p); +} + + // The difference to a ('non stable') DocIterator is the removed // (overwritten by 0...) part of the CursorSlice data items. So this thing // is suitable for external storage, but not for iteration as such.