#ifndef ITERATORS_H
#define ITERATORS_H
-#include <vector>
+#include <stack>
#include "paragraph.h"
class ParPosition {
public:
ParPosition(Paragraph * p)
- : par(p), it(p->inset_iterator_begin()), index(-1) {}
+ : par(p), it(p->insetlist.begin()), index(-1) {}
///
Paragraph * par;
///
- Paragraph::inset_iterator it;
+ InsetList::iterator it;
///
int index;
};
class ParIterator {
public:
+ ///
+ typedef std::stack<ParPosition> PosHolder;
///
ParIterator() {}
- //
- ParIterator(Paragraph * par)
- : positions(1, ParPosition(par)) {}
+ ///
+ ParIterator(Paragraph * par) {
+ positions.push(ParPosition(par));
+ }
///
ParIterator & operator++();
///
- Paragraph * operator*() { return positions.back().par; }
+ Paragraph * operator*() {
+ return positions.top().par;
+ }
///
- vector<ParPosition>::size_type size() const
+ PosHolder::size_type size() const
{ return positions.size(); }
///
friend
bool operator==(ParIterator const & iter1, ParIterator const & iter2);
private:
///
- std::vector<ParPosition> positions;
+ PosHolder positions;
};