12 ParPosition(Paragraph * p)
13 : par(p), it(p->insetlist.begin()), index(-1) {}
17 InsetList::iterator it;
24 bool operator==(ParPosition const & pos1, ParPosition const & pos2) {
25 return pos1.par == pos2.par &&
27 pos1.index == pos2.index;
31 bool operator!=(ParPosition const & pos1, ParPosition const & pos2) {
32 return !(pos1 == pos2);
39 typedef std::stack<ParPosition> PosHolder;
43 ParIterator(Paragraph * par) {
44 positions.push(ParPosition(par));
47 ParIterator & operator++();
49 Paragraph * operator*() {
50 return positions.top().par;
53 PosHolder::size_type size() const
54 { return positions.size(); }
57 bool operator==(ParIterator const & iter1, ParIterator const & iter2);
66 bool operator==(ParIterator const & iter1, ParIterator const & iter2) {
67 return iter1.positions == iter2.positions;
73 bool operator!=(ParIterator const & iter1, ParIterator const & iter2) {
74 return !(iter1 == iter2);
78 class ParConstIterator {
81 typedef std::stack<ParPosition> PosHolder;
85 ParConstIterator(Paragraph * par) {
86 positions.push(ParPosition(par));
89 ParConstIterator & operator++();
91 Paragraph const * operator*() {
92 return positions.top().par;
95 PosHolder::size_type size() const
96 { return positions.size(); }
99 bool operator==(ParConstIterator const & iter1,
100 ParConstIterator const & iter2);
109 bool operator==(ParConstIterator const & iter1, ParConstIterator const & iter2) {
110 return iter1.positions == iter2.positions;
115 bool operator!=(ParConstIterator const & iter1, ParConstIterator const & iter2) {
116 return !(iter1 == iter2);