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().insert(crow);
- ++crow;
+ mt->getRowSt().push_back();
data.insert('K', LM_TC_CR);
} else
mathPrintError("Unexpected newline");
break;
case LM_TK_NONUM:
- if (crow)
- crow->setNumbered(false);
+ if (mt) {
+ if (!mt->getRowSt().data_.size())
+ mt->getRowSt().push_back();
+ mt->getRowSt().back().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 (crow) {
- crow->setLabel(yytext.data());
+ if (mt) {
+ mt->getRowSt().back().setLabel(yytext.data());
} else {
mathed_label = yytext.data();
}
void setNumbered(bool nf);
///
void setTab(unsigned int i, int t);
- ///
- friend class MathedRowSt;
protected:
- /// Vericals
+ /// verticals
int asc_;
///
int desc_;
};
-// 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 {
+class MathedRowContainer {
+private:
///
struct iterator {
///
///
MathedRowStruct & operator*() { Assert(st_); return st_->data_[pos_]; }
///
- MathedRowStruct * operator->() { return &st_->data_[pos_]; }
+ MathedRowStruct * operator->() { Assert(st_); return &st_->data_[pos_]; }
///
- MathedRowStruct const * operator->() const { return &st_->data_[pos_]; }
+ MathedRowStruct const * operator->() const { Assert(st_); return &st_->data_[pos_]; }
///
void operator++() { Assert(st_); ++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 'iterator'
+ /// insert item before 'it'
void insert(iterator const & it) {
Assert(it.st_ == this);
data_.insert(data_.begin() + it.pos_, MathedRowStruct());
}
+ /// erase item pointed to by 'it'
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_;