lyx_mirror/src/mathed/math_iterator.h

60 lines
1.4 KiB
C
Raw Normal View History

#ifndef MATH_ITERATOR_H
#define MATH_ITERATOR_H
#include "math_cursor.h"
// this helper struct is used for traversing math insets
class MathIterator {
public:
/// default constructor, used for end of range
//MathIterator();
/// start with given formula
explicit MathIterator(MathAtom & t);
/// start with given position
explicit MathIterator(MathCursor::cursor_type const & cursor);
///
MathCursorPos const & operator*() const;
///
MathCursorPos const & operator->() const;
///
void operator++();
/// read access to top most item
MathCursorPos const & position() const;
/// write access to top most item
MathCursorPos & position();
/// read access to full path
MathCursor::cursor_type const & cursor() const;
/// read access to top most inset
MathAtom const & par() const;
/// read access to top most inset
MathAtom & par();
/// helper for iend
void goEnd();
private:
/// write access to top most item
MathXArray const & xcell() const;
/// write access to top most item
MathAtom * nextInset() const;
/// own level down
void push(MathAtom &);
/// own level up
void pop();
/// current position
MathCursor::cursor_type cursor_;
};
///
bool operator==(MathIterator const &, MathIterator const &);
///
bool operator!=(MathIterator const &, MathIterator const &);
///
MathIterator ibegin(MathAtom & p);
///
MathIterator iend(MathAtom & p);
#endif