lyx_mirror/src/mathed/math_iterator.h
Angus Leeming 1f9e9cf517 Standardise the header blurb in mathed.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7574 a592a061-630c-0410-9148-cb99ea01b6c8
2003-08-19 13:00:56 +00:00

84 lines
1.9 KiB
C++

// -*- C++ -*-
/**
* \file math_iterator.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#ifndef MATH_ITERATOR_H
#define MATH_ITERATOR_H
#include "math_pos.h"
#include <vector>
// this is used for traversing math insets
class MathIterator : private std::vector<CursorPos> {
public:
// re-use inherited stuff
typedef std::vector<CursorPos> base_type;
using base_type::clear;
using base_type::size;
using base_type::push_back;
using base_type::pop_back;
using base_type::back;
using base_type::begin;
using base_type::end;
using base_type::erase;
using base_type::operator[];
using base_type::size_type;
using base_type::difference_type;
using base_type::const_iterator;
friend bool operator!=(MathIterator const &, MathIterator const &);
friend bool operator==(MathIterator const &, MathIterator const &);
/// default constructor
MathIterator();
/// start with given inset
explicit MathIterator(MathInset * p);
///
CursorPos const & operator*() const;
///
CursorPos const & operator->() const;
/// move on one step
void operator++();
/// move on several steps
void jump(difference_type);
/// read access to top most inset
MathInset const * inset() const;
/// read access to top most inset
MathInset * inset();
/// helper for iend
void goEnd();
/// read access to top most item
MathArray const & cell() const;
/// is this a non-end position
bool normal() const;
/// shrinks to at most i levels
void shrink(size_type i);
private:
/// own level down
void push(MathInset *);
/// own level up
void pop();
};
///
bool operator==(MathIterator const &, MathIterator const &);
///
bool operator!=(MathIterator const &, MathIterator const &);
///
MathIterator ibegin(MathInset * p);
///
MathIterator iend(MathInset * p);
#endif