mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
mathed34.diff
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1578 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
04a2d2ddb0
commit
fbb9a99704
@ -9,6 +9,8 @@
|
||||
|
||||
* math_cursor.C: make selarray a proper MathArray
|
||||
|
||||
* several files: Change "MathedArray *" to "MathedArray &"
|
||||
|
||||
|
||||
2001-02-19 Dekel Tsur <dekelts@tau.ac.il>
|
||||
|
||||
|
@ -305,7 +305,8 @@ void InsetFormula::Read(Buffer const *, LyXLex & lex)
|
||||
// Silly hack to read labels.
|
||||
mathed_label.erase();
|
||||
|
||||
mathed_parse(0, 0, &par);
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, 0, &par);
|
||||
par->Metrics();
|
||||
disp_flag = (par->GetType() > 0);
|
||||
|
||||
|
@ -101,7 +101,8 @@ void InsetFormulaMacro::Read(Buffer const *, LyXLex & lex)
|
||||
{
|
||||
istream & is = lex.getStream();
|
||||
mathed_parser_file(is, lex.GetLineNo());
|
||||
mathed_parse(0, 0, reinterpret_cast<MathParInset **>(&tmacro));
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, 0, reinterpret_cast<MathParInset **>(&tmacro));
|
||||
|
||||
// Update line number
|
||||
lex.setLineNo(mathed_parser_lineno());
|
||||
|
@ -405,7 +405,7 @@ MathedInset * doAccent(MathedInset * p)
|
||||
}
|
||||
|
||||
|
||||
MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
void mathed_parse(MathedArray & array, unsigned flags = 0,
|
||||
MathParInset ** mtx = 0)
|
||||
{
|
||||
int t = yylex();
|
||||
@ -424,8 +424,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
MathedRowSt * crow = (mt) ? mt->getRowSt() : 0;
|
||||
|
||||
++plevel;
|
||||
if (!array) array = new MathedArray;
|
||||
MathedIter data(array);
|
||||
MathedIter data(&array);
|
||||
while (t) {
|
||||
if ((flags & FLAG_BRACE) && t != LM_TK_OPEN) {
|
||||
if ((flags & FLAG_BRACK_ARG) && t == '[') {
|
||||
@ -469,7 +468,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
macro = new MathMacroTemplate(name, na);
|
||||
flags = FLAG_BRACE|FLAG_BRACE_LAST;
|
||||
*mtx = macro;
|
||||
macro->setData(*array);
|
||||
macro->setData(array);
|
||||
break;
|
||||
}
|
||||
case LM_TK_SPECIAL:
|
||||
@ -524,7 +523,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
}
|
||||
if (brace == 0 && (flags & FLAG_BRACE_LAST)) {
|
||||
--plevel;
|
||||
return array;
|
||||
return;
|
||||
} else {
|
||||
data.insert('}', LM_TC_TEX);
|
||||
}
|
||||
@ -550,7 +549,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
{
|
||||
if (flags & FLAG_BRACK_END) {
|
||||
--plevel;
|
||||
return array;
|
||||
return;
|
||||
} else
|
||||
data.insert(']', LM_TC_CONST);
|
||||
break;
|
||||
@ -559,8 +558,9 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
case '^':
|
||||
{
|
||||
MathParInset * p = new MathParInset(size, "", LM_OT_SCRIPT);
|
||||
MathedArray * ar = mathed_parse(FLAG_BRACE_OPT|FLAG_BRACE_LAST, 0);
|
||||
p->setData(*ar);
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACE_OPT|FLAG_BRACE_LAST);
|
||||
p->setData(ar);
|
||||
// lyxerr << "UP[" << p->GetStyle() << "]" << endl;
|
||||
data.insertInset(p, LM_TC_UP);
|
||||
break;
|
||||
@ -568,8 +568,9 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
case '_':
|
||||
{
|
||||
MathParInset * p = new MathParInset(size, "", LM_OT_SCRIPT);
|
||||
MathedArray * ar = mathed_parse(FLAG_BRACE_OPT|FLAG_BRACE_LAST, 0);
|
||||
p->setData(*ar);
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACE_OPT|FLAG_BRACE_LAST);
|
||||
p->setData(ar);
|
||||
data.insertInset(p, LM_TC_DOWN);
|
||||
break;
|
||||
}
|
||||
@ -670,9 +671,11 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
case LM_TK_FRAC:
|
||||
{
|
||||
MathFracInset * fc = new MathFracInset(fractype);
|
||||
MathedArray * num = mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
MathedArray * den = mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
fc->SetData(*num, *den);
|
||||
MathedArray num;
|
||||
mathed_parse(num, FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
MathedArray den;
|
||||
mathed_parse(den, FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
fc->SetData(num, den);
|
||||
data.insertInset(fc, LM_TC_ACTIVE_INSET);
|
||||
break;
|
||||
}
|
||||
@ -685,13 +688,17 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
if (c == '[') {
|
||||
rt = new MathRootInset(size);
|
||||
rt->setArgumentIdx(0);
|
||||
rt->setData(*mathed_parse(FLAG_BRACK_END, 0, &rt));
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACK_END, &rt);
|
||||
rt->setData(ar);
|
||||
rt->setArgumentIdx(1);
|
||||
} else {
|
||||
yyis->putback(c);
|
||||
rt = new MathSqrtInset(size);
|
||||
}
|
||||
rt->setData(*mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST, 0, &rt));
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACE|FLAG_BRACE_LAST, &rt);
|
||||
rt->setData(ar);
|
||||
data.insertInset(rt, LM_TC_ACTIVE_INSET);
|
||||
break;
|
||||
}
|
||||
@ -702,13 +709,14 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
if (lfd == LM_TK_SYM || lfd == LM_TK_STR || lfd == LM_TK_BOP|| lfd == LM_TK_SPECIAL)
|
||||
lfd = (lfd == LM_TK_SYM) ? yylval.l->id: yylval.i;
|
||||
// lyxerr << "L[" << lfd << " " << lfd << "]";
|
||||
MathedArray * a = mathed_parse(FLAG_RIGHT);
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_RIGHT);
|
||||
int rgd = yylex();
|
||||
// lyxerr << "R[" << rgd << "]";
|
||||
if (rgd == LM_TK_SYM || rgd == LM_TK_STR || rgd == LM_TK_BOP || rgd == LM_TK_SPECIAL)
|
||||
rgd = (rgd == LM_TK_SYM) ? yylval.l->id: yylval.i;
|
||||
MathDelimInset * dl = new MathDelimInset(lfd, rgd);
|
||||
dl->setData(*a);
|
||||
dl->setData(ar);
|
||||
data.insertInset(dl, LM_TC_ACTIVE_INSET);
|
||||
// lyxerr << "RL[" << lfd << " " << rgd << "]";
|
||||
break;
|
||||
@ -717,7 +725,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
{
|
||||
if (flags & FLAG_RIGHT) {
|
||||
--plevel;
|
||||
return array;
|
||||
return;
|
||||
} else {
|
||||
mathPrintError("Unmatched right delimiter");
|
||||
// panic = true;
|
||||
@ -736,7 +744,9 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
{
|
||||
MathDecorationInset * sq = new MathDecorationInset(yylval.l->id,
|
||||
size);
|
||||
sq->setData(*mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST));
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
sq->setData(ar);
|
||||
data.insertInset(sq, LM_TC_ACTIVE_INSET);
|
||||
break;
|
||||
}
|
||||
@ -780,8 +790,11 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
data.insertInset(doAccent(p), p->getTCode());
|
||||
else
|
||||
data.insertInset(p, p->getTCode());
|
||||
for (int i = 0; p->setArgumentIdx(i); ++i)
|
||||
p->setData(*mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST));
|
||||
for (int i = 0; p->setArgumentIdx(i); ++i) {
|
||||
MathedArray ar;
|
||||
mathed_parse(ar, FLAG_BRACE|FLAG_BRACE_LAST);
|
||||
p->setData(ar);
|
||||
}
|
||||
}
|
||||
else {
|
||||
MathedInset * q = new MathFuncInset(yylval.s, LM_OT_UNDEF);
|
||||
@ -802,10 +815,10 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
lyxerr << "[" << yylval.i << "]" << endl;
|
||||
--plevel;
|
||||
if (mt) { // && (flags & FLAG_END)) {
|
||||
mt->setData(*array);
|
||||
array = 0;
|
||||
mt->setData(array);
|
||||
array.clear();
|
||||
}
|
||||
return array;
|
||||
return;
|
||||
}
|
||||
case LM_TK_BEGIN:
|
||||
{
|
||||
@ -822,7 +835,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
MathParInset * mm = new MathMatrixInset(nc, 0);
|
||||
mm->SetAlign(ar2[0], ar);
|
||||
data.insertInset(mm, LM_TC_ACTIVE_INSET);
|
||||
mathed_parse(FLAG_END, &mm->GetData(), &mm);
|
||||
mathed_parse(mm->GetData(), FLAG_END, &mm);
|
||||
} else if (is_eqn_type(yylval.i)) {
|
||||
if (plevel!= 0) {
|
||||
mathPrintError("Misplaced environment");
|
||||
@ -873,7 +886,7 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
if (p) {
|
||||
data.insertInset(p, p->getTCode());
|
||||
p->setArgumentIdx(0);
|
||||
mathed_parse(FLAG_END, &p->GetData(), reinterpret_cast<MathParInset**>(&p));
|
||||
mathed_parse(p->GetData(), FLAG_END, reinterpret_cast<MathParInset**>(&p));
|
||||
// for (int i = 0; p->setArgumentIdx(i); ++i)
|
||||
// p->SetData(mathed_parse(FLAG_BRACE|FLAG_BRACE_LAST));
|
||||
} else
|
||||
@ -939,7 +952,6 @@ MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
}
|
||||
}
|
||||
--plevel;
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,8 +36,7 @@ extern math_deco_struct const * search_deco(int code);
|
||||
|
||||
/// math_parser.C
|
||||
extern
|
||||
MathedArray * mathed_parse(unsigned flags, MathedArray * data,
|
||||
MathParInset ** mt);
|
||||
void mathed_parse(MathedArray & data, unsigned flags, MathParInset ** mt);
|
||||
|
||||
/// math_parser.C
|
||||
extern
|
||||
|
Loading…
Reference in New Issue
Block a user