int acc_brace = 0;
int acc_braces[8];
MathParInset * mt = (mtx) ? *mtx : 0;
+ MathedRowContainer::iterator crow;
+ if (mt)
+ crow = mt->getRowSt().begin();
++plevel;
MathedIter data(&array);
case LM_TK_NEWLINE:
if (mt && (flags & FLAG_END)) {
if (mt->Permit(LMPF_ALLOW_CR)) {
- mt->getRowSt().push_back();
+ mt->getRowSt().insert(crow);
+ ++crow;
data.insert('K', LM_TC_CR);
} else
mathPrintError("Unexpected newline");
break;
case LM_TK_NONUM:
- if (mt) {
- if (!mt->getRowSt().data_.size())
- mt->getRowSt().push_back();
- mt->getRowSt().back().setNumbered(false);
- }
+ if (crow)
+ crow->setNumbered(false);
break;
case LM_TK_PMOD:
}
mt->SetStyle(size);
mt->SetType(mathed_env);
+ crow = mt->getRowSt().begin();
}
lyxerr[Debug::MATHED] << "MATH BEGIN[" << mathed_env << "]" << endl;
panic = true;
break;
}
- if (mt) {
- mt->getRowSt().back().setLabel(yytext.data());
+ if (crow) {
+ crow->setLabel(yytext.data());
} else {
mathed_label = yytext.data();
}
void setNumbered(bool nf);
///
void setTab(unsigned int i, int t);
+ ///
+ friend class MathedRowSt;
protected:
- /// verticals
+ /// Vericals
int asc_;
///
int desc_;
-class MathedRowContainer {
-private:
- ///
+// The idea is to change this MathedRowContainer to mimic the behaviour
+// of std::list<MathedRowStruct> 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), pos_(0) {}
///
MathedRowStruct & operator*() { Assert(st_); return st_->data_[pos_]; }
///
- MathedRowStruct * operator->() { Assert(st_); return &st_->data_[pos_]; }
+ MathedRowStruct * operator->() { return &st_->data_[pos_]; }
///
- MathedRowStruct const * operator->() const { Assert(st_); return &st_->data_[pos_]; }
+ MathedRowStruct const * operator->() const { return &st_->data_[pos_]; }
///
void operator++() { Assert(st_); ++pos_; }
///
{ return st_ == it.st_ && pos_ == it.pos_; }
//private:
- ///
- friend class MathedRowContainer;
-
- /// pointer to the container to which we belong
MathedRowContainer * st_;
- /// position in this container, e.g. row number
+ ///
unsigned int pos_;
};
-public:
- ///
+ ///
iterator begin() { return iterator(this); }
///
bool empty() const { return data_.size() == 0; }
- /// insert item before 'it'
+ /// insert 'item' before 'iterator'
void insert(iterator const & it) {
Assert(it.st_ == this);
data_.insert(data_.begin() + it.pos_, MathedRowStruct());
}
-
- /// erase item pointed to by 'it'
+
+ /// insert 'item' before 'iterator'
void erase(iterator & it) {
Assert(it.st_ == this);
data_.erase(data_.begin() + it.pos_);
}
- /// access to last item
- MathedRowStruct & back() {
- Assert(data_.size());
- return data_.back();
- }
-
- /// append empty element
- void push_back() {
- data_.push_back(MathedRowStruct());
- }
-
-
///
std::vector<MathedRowStruct> data_;