X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_rowst.h;h=602198d3095a07b660b9e9af2e520a4c3767844f;hb=d61590ccde8b76f1e324df16a916a41a54ce4a4f;hp=dba14517a7b7e8953c0ca6ed0145be28022f29be;hpb=7e49d156ca23d96cd7bf7aaef56f938fb3706dac;p=lyx.git diff --git a/src/mathed/math_rowst.h b/src/mathed/math_rowst.h index dba14517a7..602198d309 100644 --- a/src/mathed/math_rowst.h +++ b/src/mathed/math_rowst.h @@ -3,6 +3,7 @@ #define MATH_ROWST_H #include +#include "support/LAssert.h" /** The physical structure of a row and aditional information is stored here. It allows to manage the extra info independently of the paragraph data. @@ -72,12 +73,61 @@ public: MathedRowSt * getNext() const; /// ...we couldn't use this. void setNext(MathedRowSt * n); -private: +//private: /// MathedRowSt * next_; }; +// The idea is to change this MathedRowContainer to mimic the behaviour +// of std::list in several small steps. In the end it +// could be replaced by such a list and MathedRowSt can go as well. + +struct MathedRowContainer { + /// + struct iterator { + /// + iterator() : st_(0) {} + /// + explicit iterator(MathedRowSt * st) : st_(st) {} + /// "better" conversion to bool + explicit iterator(MathedRowContainer * m) : st_(m->data_) {} + /// "better" conversion to bool + operator void *() const { return st_; } + /// + MathedRowStruct & operator*() { Assert(st_); return *st_; } + /// + MathedRowStruct * operator->() { return st_; } + /// + MathedRowStruct const * operator->() const { return st_; } + /// + void operator++() { Assert(st_); st_ = st_->next_; } + /// + bool is_last() const { Assert(st_); return st_->next_ == 0; } + /// + bool operator==(const iterator & it) const { return st_ == it.st_; } + + //private: + /// + MathedRowSt * st_; + }; + + /// + MathedRowContainer() : data_(0) {} + /// + MathedRowContainer(MathedRowSt * data) : data_(data) {} + + /// + iterator begin() { return iterator(this); } + /// + bool empty() const { return data_ == 0; } + + /// + MathedRowSt * data_; +}; + + + inline MathedRowSt * MathedRowSt::getNext() const {