+// -*- C++ -*-
#ifndef MATH_ITERATOR_H
#define MATH_ITERATOR_H
class MathIterator {
public:
/// default constructor, used for end of range
- MathIterator();
- /// start with given formula
+ //MathIterator();
+ /// start with given inset
explicit MathIterator(MathInset * p);
/// start with given position
- explicit MathIterator(MathCursor::cursor_type const & cursor);
+ //explicit MathIterator(MathCursor::cursor_type const & cursor);
///
MathCursorPos const & operator*() const;
///
MathCursorPos const & operator->() const;
- ///
+ /// move on one step
void operator++();
- /// read access to top most item
- MathCursorPos const & position() const;
+ /// move on several steps
+ void jump(MathInset::difference_type);
+ /// read access to top most item (inline after running gprof!)
+ MathCursorPos const & position() const { return cursor_.back(); }
/// write access to top most item
- MathCursorPos & position();
+ MathCursorPos & position() { return cursor_.back(); }
/// read access to full path
MathCursor::cursor_type const & cursor() const;
/// read access to top most inset
- MathInset * par() const;
-
+ MathInset const * par() const;
+ /// read access to top most inset
+ MathInset * par();
+ /// helper for iend
+ void goEnd();
+ /// read access to top most item
+ MathArray const & cell() const;
+
private:
- /// write access to top most item
- MathXArray const & xcell() const;
- /// write access to top most item
- MathInset * nextInset() const;
/// own level down
void push(MathInset *);
/// own level up
///
bool operator!=(MathIterator const &, MathIterator const &);
+///
+MathIterator ibegin(MathInset * p);
+///
+MathIterator iend(MathInset * p);
#endif