2 #ifndef MATH_ITERATOR_H
3 #define MATH_ITERATOR_H
5 #include "math_cursor.h"
7 // this helper struct is used for traversing math insets
11 /// default constructor, used for end of range
13 /// start with given inset
14 explicit MathIterator(MathInset * p);
15 /// start with given position
16 //explicit MathIterator(MathCursor::cursor_type const & cursor);
18 MathCursorPos const & operator*() const;
20 MathCursorPos const & operator->() const;
23 /// move on several steps
24 void jump(MathInset::difference_type);
25 /// read access to top most item (inline after running gprof!)
26 MathCursorPos const & position() const { return cursor_.back(); }
27 /// write access to top most item
28 MathCursorPos & position() { return cursor_.back(); }
29 /// read access to full path
30 MathCursor::cursor_type const & cursor() const;
31 /// read access to top most inset
32 MathInset const * par() const;
33 /// read access to top most inset
37 /// read access to top most item
38 MathArray const & cell() const;
42 void push(MathInset *);
47 MathCursor::cursor_type cursor_;
51 bool operator==(MathIterator const &, MathIterator const &);
53 bool operator!=(MathIterator const &, MathIterator const &);
56 MathIterator ibegin(MathInset * p);
58 MathIterator iend(MathInset * p);