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
26 MathCursorPos const & position() const;
27 /// write access to top most item
28 MathCursorPos & position();
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;
41 /// read access to top most item
42 MathXArray const & xcell() const;
43 /// write access to top most item
44 MathInset * nextInset() const;
46 void push(MathInset *);
51 MathCursor::cursor_type cursor_;
55 bool operator==(MathIterator const &, MathIterator const &);
57 bool operator!=(MathIterator const &, MathIterator const &);
60 MathIterator ibegin(MathInset * p);
62 MathIterator iend(MathInset * p);