3 * \file math_iterator.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
12 #ifndef MATH_ITERATOR_H
13 #define MATH_ITERATOR_H
15 #include "cursor_slice.h"
20 // this is used for traversing math insets
22 class MathIterator : private std::vector<CursorSlice> {
24 // re-use inherited stuff
25 typedef std::vector<CursorSlice> base_type;
26 using base_type::clear;
27 using base_type::size;
28 using base_type::push_back;
29 using base_type::pop_back;
30 using base_type::back;
31 using base_type::begin;
33 using base_type::erase;
34 using base_type::operator[];
35 using base_type::size_type;
36 using base_type::difference_type;
37 using base_type::const_iterator;
38 friend bool operator!=(MathIterator const &, MathIterator const &);
39 friend bool operator==(MathIterator const &, MathIterator const &);
43 /// read access to top most item
44 MathArray const & cell() const;
48 bool operator==(MathIterator const &, MathIterator const &);
50 bool operator!=(MathIterator const &, MathIterator const &);
53 MathIterator ibegin(MathInset * p);
55 MathIterator iend(MathInset * p);