commit 0baedc03cdc2d1a613018331205e8bd2071828f1
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Tue Apr 29 17:34:58 2025 +0200
Introduce MathData::emplace_back to inset inset pointer
The containing MathAtom will be constructed in place. This method
allows to make the code more readable.
Aditionally, I secretely hope that it will fix a pair Coverity Scan
false positive in InsetMathMacroTemplate::createLook.
---
src/mathed/InsetMathHull.cpp | 2 +-
src/mathed/InsetMathMacroTemplate.cpp | 52 ++++++------
src/mathed/MathData.cpp | 8 ++
src/mathed/MathData.h | 2 +
src/mathed/MathExtern.cpp | 3 +-
src/mathed/MathParser.cpp | 152 +++++++++++++++++-----------------
6 files changed, 113 insertions(+), 106 deletions(-)
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 9d86915687..9966423ca0 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -1796,7 +1796,7 @@ void InsetMathHull::doExtern(Cursor & cur, FuncRequest &
func)
}
MathData eq(buffer_);
- eq.push_back(MathAtom(new InsetMathChar(buffer_, '=')));
+ eq.emplace_back(new InsetMathChar(buffer_, '='));
// go to first item in line
cur.idx() -= cur.idx() % ncols();
diff --git a/src/mathed/InsetMathMacroTemplate.cpp
b/src/mathed/InsetMathMacroTemplate.cpp
index 930b91697e..f1de19bc1e 100644
--- a/src/mathed/InsetMathMacroTemplate.cpp
+++ b/src/mathed/InsetMathMacroTemplate.cpp
@@ -489,64 +489,64 @@ void InsetMathMacroTemplate::createLook(int args) const
argsInLook_ = args;
// \foo
- look_.push_back(MathAtom(
- new InsetLabelBox(buffer_, _("Name"), *this, false)));
+ look_.emplace_back(
+ new InsetLabelBox(buffer_, _("Name"), *this, false));
MathData & nameData = look_[look_.size() - 1].nucleus()->cell(0);
- nameData.push_back(MathAtom(new InsetNameWrapper(buffer_, &cell(0),
*this)));
+ nameData.emplace_back(new InsetNameWrapper(buffer_, &cell(0), *this));
// [#1][#2]
int i = 0;
if (optionals_ > 0) {
- look_.push_back(MathAtom(
- new InsetLabelBox(buffer_, _("optional"), *this,
false)));
+ look_.emplace_back(
+ new InsetLabelBox(buffer_, _("optional"), *this,
false));
MathData * optData = &look_[look_.size() -
1].nucleus()->cell(0);
for (; i < optionals_; ++i) {
// color it light grey, if it is to be removed when the
cursor leaves
if (i == argsInLook_) {
- optData->push_back(MathAtom(
- new InsetColoredCell(buffer_,
Color_mathmacrooldarg)));
+ optData->emplace_back(
+ new InsetColoredCell(buffer_,
Color_mathmacrooldarg));
optData = &(*optData)[optData->size() -
1].nucleus()->cell(0);
}
- optData->push_back(MathAtom(new InsetMathChar(buffer_,
'[')));
- optData->push_back(MathAtom(new
InsetMathWrapper(buffer_, &cell(1 + i))));
- optData->push_back(MathAtom(new InsetMathChar(buffer_,
']')));
+ optData->emplace_back(new InsetMathChar(buffer_, '['));
+ optData->emplace_back(new InsetMathWrapper(buffer_,
&cell(1 + i)));
+ optData->emplace_back(new InsetMathChar(buffer_, ']'));
}
}
// {#3}{#4}
for (; i < numargs_; ++i) {
MathData arg(buffer_);
- arg.push_back(MathAtom(new InsetMathMacroArgument(buffer_, i +
1)));
+ arg.emplace_back(new InsetMathMacroArgument(buffer_, i + 1));
if (i >= argsInLook_) {
- look_.push_back(MathAtom(new InsetColoredCell(buffer_,
+ look_.emplace_back(new InsetColoredCell(buffer_,
Color_mathmacrooldarg,
- MathAtom(new InsetMathBrace(buffer_, arg)))));
+ MathAtom(new InsetMathBrace(buffer_, arg))));
} else
- look_.push_back(MathAtom(new InsetMathBrace(buffer_,
arg)));
+ look_.emplace_back(new InsetMathBrace(buffer_, arg));
}
for (; i < argsInLook_; ++i) {
MathData arg(buffer_);
- arg.push_back(MathAtom(new InsetMathMacroArgument(buffer_, i +
1)));
- look_.push_back(MathAtom(new InsetColoredCell(buffer_,
+ arg.emplace_back(new InsetMathMacroArgument(buffer_, i + 1));
+ look_.emplace_back(new InsetColoredCell(buffer_,
Color_mathmacronewarg,
- MathAtom(new InsetMathBrace(buffer_, arg)))));
+ MathAtom(new InsetMathBrace(buffer_, arg))));
}
// :=
- look_.push_back(MathAtom(new InsetMathChar(buffer_, ':')));
- look_.push_back(MathAtom(new InsetMathChar(buffer_, '=')));
+ look_.emplace_back(new InsetMathChar(buffer_, ':'));
+ look_.emplace_back(new InsetMathChar(buffer_, '='));
// definition
- look_.push_back(MathAtom(
+ look_.emplace_back(
new InsetLabelBox(buffer_, MathAtom(
- new InsetMathWrapper(buffer_, &cell(defIdx()))),
_("TeX"), *this, true)));
+ new InsetMathWrapper(buffer_, &cell(defIdx()))),
_("TeX"), *this, true));
// display
- look_.push_back(MathAtom(
+ look_.emplace_back(
new InsetDisplayLabelBox(buffer_, MathAtom(
- new InsetMathWrapper(buffer_, &cell(displayIdx()))),
_("LyX"), *this)));
+ new InsetMathWrapper(buffer_, &cell(displayIdx()))),
_("LyX"), *this));
look_.setContentsBuffer();
}
@@ -727,7 +727,7 @@ void InsetMathMacroTemplate::insertMissingArguments(int
maxArg)
if (found[i])
continue;
- cell(idx).push_back(MathAtom(new
InsetMathMacroArgument(buffer_, i + 1)));
+ cell(idx).emplace_back(new InsetMathMacroArgument(buffer_, i +
1));
}
}
@@ -897,9 +897,9 @@ void InsetMathMacroTemplate::insertParameter(Cursor & cur,
if (addarg) {
shiftArguments(pos, 1);
- cell(defIdx()).push_back(MathAtom(new
InsetMathMacroArgument(buffer_, pos + 1)));
+ cell(defIdx()).emplace_back(new
InsetMathMacroArgument(buffer_, pos + 1));
if (!cell(displayIdx()).empty())
- cell(displayIdx()).push_back(MathAtom(new
InsetMathMacroArgument(buffer_, pos + 1)));
+ cell(displayIdx()).emplace_back(new
InsetMathMacroArgument(buffer_, pos + 1));
}
if (!greedy) {
diff --git a/src/mathed/MathData.cpp b/src/mathed/MathData.cpp
index 9be0b6100e..ed1c1dffa3 100644
--- a/src/mathed/MathData.cpp
+++ b/src/mathed/MathData.cpp
@@ -112,6 +112,14 @@ void MathData::push_back(MathAtom const & t)
}
+void MathData::emplace_back(InsetMath * ins)
+{
+ base_type::emplace_back(ins);
+ if (buffer_)
+ back()->setBuffer(*buffer_);
+}
+
+
void MathData::append(MathData const & md)
{
insert(size(), md);
diff --git a/src/mathed/MathData.h b/src/mathed/MathData.h
index 4271b80476..12af4c69ed 100644
--- a/src/mathed/MathData.h
+++ b/src/mathed/MathData.h
@@ -83,6 +83,8 @@ public:
void insert(size_type pos, MathData const & md);
/// inserts single atom at end
void push_back(MathAtom const & at);
+ /// construct single atom at end
+ void emplace_back(InsetMath * ins);
/// erase range from pos1 to pos2
void erase(iterator pos1, iterator pos2);
diff --git a/src/mathed/MathExtern.cpp b/src/mathed/MathExtern.cpp
index 349aa6a003..7afc14e6f0 100644
--- a/src/mathed/MathExtern.cpp
+++ b/src/mathed/MathExtern.cpp
@@ -1349,8 +1349,7 @@ namespace {
if (mat->ncols() == 1 && mat->nrows() == 1)
res.append(mat->cell(0));
else {
- res.push_back(MathAtom(
- new InsetMathDelim(buf, from_ascii("("),
from_ascii(")"))));
+ res.emplace_back(new InsetMathDelim(buf,
from_ascii("("), from_ascii(")")));
res.back().nucleus()->cell(0).push_back(at);
}
return res;
diff --git a/src/mathed/MathParser.cpp b/src/mathed/MathParser.cpp
index ed0102d7c9..ad81d30e83 100644
--- a/src/mathed/MathParser.cpp
+++ b/src/mathed/MathParser.cpp
@@ -873,7 +873,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
if (n.cat() == catMath) {
// TeX's $$...$$ syntax for displayed
math
if (mode == InsetMath::UNDECIDED_MODE) {
- cell->push_back(MathAtom(new
InsetMathHull(buf, hullEquation)));
+ cell->emplace_back(new
InsetMathHull(buf, hullEquation));
parse2(cell->back(),
FLAG_SIMPLE, InsetMath::MATH_MODE, false);
getToken(); // skip the second
'$' token
} else {
@@ -886,11 +886,11 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
// simple $...$ stuff
putback();
if (mode == InsetMath::UNDECIDED_MODE) {
- cell->push_back(MathAtom(new
InsetMathHull(buf, hullSimple)));
+ cell->emplace_back(new
InsetMathHull(buf, hullSimple));
parse2(cell->back(),
FLAG_SIMPLE, InsetMath::MATH_MODE, false);
} else {
// Don't create nested math
hulls (bug #5392)
- cell->push_back(MathAtom(new
InsetMathEnsureMath(buf)));
+ cell->emplace_back(new
InsetMathEnsureMath(buf));
parse(cell->back().nucleus()->cell(0), FLAG_SIMPLE, InsetMath::MATH_MODE);
}
}
@@ -912,37 +912,37 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
// are inside a text mode user macro.
We have no way to tell, so
// let's play safe by using
\ensuremath, as it will work in any case.
putback();
- cell->push_back(MathAtom(new
InsetMathEnsureMath(buf)));
+ cell->emplace_back(new
InsetMathEnsureMath(buf));
parse(cell->back().nucleus()->cell(0),
FLAG_SIMPLE, InsetMath::MATH_MODE);
}
}
}
else if (t.cat() == catLetter)
- cell->push_back(MathAtom(new InsetMathChar(buf,
t.character())));
+ cell->emplace_back(new InsetMathChar(buf,
t.character()));
else if (t.cat() == catSpace && mode != InsetMath::MATH_MODE) {
if (cell->empty() || cell->back()->getChar() != ' ')
- cell->push_back(MathAtom(new InsetMathChar(buf,
t.character())));
+ cell->emplace_back(new InsetMathChar(buf,
t.character()));
}
else if (t.cat() == catNewline && mode != InsetMath::MATH_MODE)
{
if (cell->empty() || cell->back()->getChar() != ' ')
- cell->push_back(MathAtom(new InsetMathChar(buf,
' ')));
+ cell->emplace_back(new InsetMathChar(buf, ' '));
}
else if (t.cat() == catParameter) {
Token const & n = nextToken();
char_type c = n.character();
if (c && '0' < c && c <= '9') {
- cell->push_back(MathAtom(new
InsetMathMacroArgument(buf, c - '0')));
+ cell->emplace_back(new
InsetMathMacroArgument(buf, c - '0'));
getToken();
} else
- cell->push_back(MathAtom(new
InsetMathHash(buf)));
+ cell->emplace_back(new InsetMathHash(buf));
}
else if (t.cat() == catActive)
- cell->push_back(MathAtom(new InsetMathSpace(buf,
string(1, t.character()), "")));
+ cell->emplace_back(new InsetMathSpace(buf, string(1,
t.character()), ""));
else if (t.cat() == catBegin) {
MathData md(buf);
@@ -952,7 +952,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
if (md.size() == 1 && md[0]->extraBraces())
cell->append(md);
else
- cell->push_back(MathAtom(new
InsetMathBrace(buf, md)));
+ cell->emplace_back(new InsetMathBrace(buf, md));
}
else if (t.cat() == catEnd) {
@@ -977,12 +977,12 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
// we need no new script inset if the last thing was a
scriptinset,
// which has that script already not the same script
already
if (cell->empty())
- cell->push_back(MathAtom(new
InsetMathScript(buf, up)));
+ cell->emplace_back(new InsetMathScript(buf,
up));
else if (cell->back()->asScriptInset() &&
!cell->back()->asScriptInset()->has(up))
cell->back().nucleus()->asScriptInset()->ensure(up);
else if (cell->back()->asScriptInset())
- cell->push_back(MathAtom(new
InsetMathScript(buf, up)));
+ cell->emplace_back(new InsetMathScript(buf,
up));
else
cell->back() = MathAtom(new
InsetMathScript(buf, cell->back(), up));
InsetMathScript * p =
cell->back().nucleus()->asScriptInset();
@@ -1020,14 +1020,14 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
|| mode_ & Parse::VERBATIM
|| !(mode_ & Parse::USETEXT)
|| mode == InsetMath::TEXT_MODE) {
- cell->push_back(MathAtom(new InsetMathChar(buf,
c)));
+ cell->emplace_back(new InsetMathChar(buf, c));
} else {
MathAtom at = createInsetMath("text", buf);
- at.nucleus()->cell(0).push_back(MathAtom(new
InsetMathChar(buf, c)));
+ at.nucleus()->cell(0).emplace_back(new
InsetMathChar(buf, c));
while (nextToken().cat() == catOther
&&
Encodings::isUnicodeTextOnly(nextToken().character())) {
c = getToken().character();
-
at.nucleus()->cell(0).push_back(MathAtom(new InsetMathChar(buf, c)));
+ at.nucleus()->cell(0).emplace_back(new
InsetMathChar(buf, c));
}
cell->push_back(at);
}
@@ -1041,7 +1041,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
break;
s += tt.asInput();
}
- cell->push_back(MathAtom(new InsetMathComment(buf, s)));
+ cell->emplace_back(new InsetMathComment(buf, s));
skipSpaces();
}
@@ -1081,9 +1081,9 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
+ cell->emplace_back(new InsetMathMacroTemplate(buf,
name, nargs, 0, MacroTypeDef,
- vector<MathData>(), def, display)));
+ vector<MathData>(), def, display));
if (buf && (mode_ & Parse::TRACKMACRO))
buf->usermacros.insert(name);
@@ -1129,9 +1129,9 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
+ cell->emplace_back(new InsetMathMacroTemplate(buf,
name, nargs, optionals, MacroTypeNewcommand,
- optionalValues, def, display)));
+ optionalValues, def, display));
if (buf && (mode_ & Parse::TRACKMACRO))
buf->usermacros.insert(name);
@@ -1250,9 +1250,9 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
+ cell->emplace_back(new InsetMathMacroTemplate(buf,
name, nargs, optionals, MacroTypeNewcommandx,
- optionalValues, def, display)));
+ optionalValues, def, display));
if (buf && (mode_ & Parse::TRACKMACRO))
buf->usermacros.insert(name);
@@ -1260,11 +1260,11 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
else if (t.cs() == "(") {
if (mode == InsetMath::UNDECIDED_MODE) {
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullSimple)));
+ cell->emplace_back(new InsetMathHull(buf,
hullSimple));
parse2(cell->back(), FLAG_SIMPLE2,
InsetMath::MATH_MODE, false);
} else {
// Don't create nested math hulls (bug #5392)
- cell->push_back(MathAtom(new
InsetMathEnsureMath(buf)));
+ cell->emplace_back(new
InsetMathEnsureMath(buf));
parse(cell->back().nucleus()->cell(0),
FLAG_SIMPLE2, InsetMath::MATH_MODE);
}
}
@@ -1274,7 +1274,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
error("bad math environment [");
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullEquation)));
+ cell->emplace_back(new InsetMathHull(buf,
hullEquation));
parse2(cell->back(), FLAG_EQUATION,
InsetMath::MATH_MODE, false);
}
@@ -1400,7 +1400,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
} else {
MathAtom at = MathAtom(new InsetMathMacro(buf,
t.cs()));
cell->push_back(at);
- cell->push_back(MathAtom(new
InsetMathBrace(buf, count)));
+ cell->emplace_back(new InsetMathBrace(buf,
count));
}
}
@@ -1429,17 +1429,17 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
MathData md(buf);
parse(md, FLAG_OPTION, mode);
if (!md.empty()) {
- cell->push_back(MathAtom(new
InsetMathRoot(buf)));
+ cell->emplace_back(new InsetMathRoot(buf));
cell->back().nucleus()->cell(1) = md;
} else
- cell->push_back(MathAtom(new
InsetMathSqrt(buf)));
+ cell->emplace_back(new InsetMathSqrt(buf));
parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode);
}
else if (t.cs() == "cancelto") {
MathData md(buf);
parse(md, FLAG_ITEM, mode);
- cell->push_back(MathAtom(new
InsetMathCancelto(buf)));
+ cell->emplace_back(new InsetMathCancelto(buf));
cell->back().nucleus()->cell(1) = md;
parse(cell->back().nucleus()->cell(0),
FLAG_ITEM, mode);
}
@@ -1449,11 +1449,11 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
MathData md(buf);
parse(md, FLAG_OPTION, mode);
if (!md.empty()) {
- cell->push_back(MathAtom(new InsetMathFrac(buf,
InsetMathFrac::UNIT)));
+ cell->emplace_back(new InsetMathFrac(buf,
InsetMathFrac::UNIT));
cell->back().nucleus()->cell(0) = md;
parse(cell->back().nucleus()->cell(1),
FLAG_ITEM, mode);
} else {
- cell->push_back(MathAtom(new InsetMathFrac(buf,
InsetMathFrac::UNIT, 1)));
+ cell->emplace_back(new InsetMathFrac(buf,
InsetMathFrac::UNIT, 1));
parse(cell->back().nucleus()->cell(0),
FLAG_ITEM, mode);
}
}
@@ -1463,10 +1463,10 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
MathData md(buf);
parse(md, FLAG_OPTION, mode);
if (!md.empty()) {
- cell->push_back(MathAtom(new InsetMathFrac(buf,
InsetMathFrac::UNITFRAC, 3)));
+ cell->emplace_back(new InsetMathFrac(buf,
InsetMathFrac::UNITFRAC, 3));
cell->back().nucleus()->cell(2) = md;
} else {
- cell->push_back(MathAtom(new InsetMathFrac(buf,
InsetMathFrac::UNITFRAC)));
+ cell->emplace_back(new InsetMathFrac(buf,
InsetMathFrac::UNITFRAC));
}
parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode);
parse(cell->back().nucleus()->cell(1), FLAG_ITEM, mode);
@@ -1477,11 +1477,11 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
docstring const arg = getArg('[', ']');
//lyxerr << "got so far: '" << arg << "'" << endl;
if (arg == "l")
- cell->push_back(MathAtom(new
InsetMathFrac(buf, InsetMathFrac::CFRACLEFT)));
+ cell->emplace_back(new
InsetMathFrac(buf, InsetMathFrac::CFRACLEFT));
else if (arg == "r")
- cell->push_back(MathAtom(new
InsetMathFrac(buf, InsetMathFrac::CFRACRIGHT)));
+ cell->emplace_back(new
InsetMathFrac(buf, InsetMathFrac::CFRACRIGHT));
else if (arg.empty() || arg == "c")
- cell->push_back(MathAtom(new
InsetMathFrac(buf, InsetMathFrac::CFRAC)));
+ cell->emplace_back(new
InsetMathFrac(buf, InsetMathFrac::CFRAC));
else {
error("found invalid optional
argument");
break;
@@ -1500,7 +1500,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
script[i] =
md[i][0].nucleus()->asScriptInset();
}
bool const hasscript[2] = {script[0] != nullptr,
script[1] != nullptr};
- cell->push_back(MathAtom(new InsetMathSideset(buf,
hasscript[0], hasscript[1])));
+ cell->emplace_back(new InsetMathSideset(buf,
hasscript[0], hasscript[1]));
if (hasscript[0]) {
if (script[0]->hasDown())
cell->back().nucleus()->cell(1) =
script[0]->down();
@@ -1522,7 +1522,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
// Here allowed formats are
\stackrel[subscript]{superscript}{operator}
MathData md(buf);
parse(md, FLAG_OPTION, mode);
- cell->push_back(MathAtom(new InsetMathStackrel(buf,
!md.empty())));
+ cell->emplace_back(new InsetMathStackrel(buf,
!md.empty()));
if (!md.empty())
cell->back().nucleus()->cell(2) = md;
parse(cell->back().nucleus()->cell(1), FLAG_ITEM, mode);
@@ -1551,7 +1551,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
|| t.cs() == "nameref" || t.cs() == "pageref" ||
t.cs() == "cpageref"
|| t.cs() == "vpageref" || t.cs() == "vref"
|| t.cs() == "formatted" || t.cs() == "labelonly") {
- cell->push_back(MathAtom(new InsetMathRef(buf,
t.cs())));
+ cell->emplace_back(new InsetMathRef(buf, t.cs()));
docstring const opt = parse_verbatim_option();
docstring const ref = parse_verbatim_item();
if (!opt.empty()) {
@@ -1576,7 +1576,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
skipSpaces();
Token const & tr = getToken();
docstring const r = tr.cs() == "|" ? from_ascii("Vert")
: tr.asString();
- cell->push_back(MathAtom(new InsetMathDelim(buf, l, r,
md)));
+ cell->emplace_back(new InsetMathDelim(buf, l, r, md));
}
else if (t.cs() == "right") {
@@ -1601,16 +1601,16 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
if (name == "array" || name == "subarray") {
docstring const valign =
parse_verbatim_option() + 'c';
docstring const halign = parse_verbatim_item();
- cell->push_back(MathAtom(new
InsetMathArray(buf, name,
- InsetMathGrid::guessColumns(halign), 1,
(char)valign[0], halign)));
+ cell->emplace_back(new InsetMathArray(buf, name,
+ InsetMathGrid::guessColumns(halign), 1,
(char)valign[0], halign));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, false);
}
else if (name == "tabular") {
docstring const valign =
parse_verbatim_option() + 'c';
docstring const halign = parse_verbatim_item();
- cell->push_back(MathAtom(new
InsetMathTabular(buf, name,
- InsetMathGrid::guessColumns(halign), 1,
(char)valign[0], halign)));
+ cell->emplace_back(new InsetMathTabular(buf,
name,
+ InsetMathGrid::guessColumns(halign), 1,
(char)valign[0], halign));
parse2(cell->back(), FLAG_END,
InsetMath::TEXT_MODE, false);
}
@@ -1623,17 +1623,17 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
docstring const valign =
parse_verbatim_option() + 'c';
// ignore this for a while
getArg('{', '}');
- cell->push_back(MathAtom(new
InsetMathSplit(buf, name, (char)valign[0])));
+ cell->emplace_back(new InsetMathSplit(buf,
name, (char)valign[0]));
parse2(cell->back(), FLAG_END, mode, false);
}
else if (name == "math") {
if (mode == InsetMath::UNDECIDED_MODE) {
- cell->push_back(MathAtom(new
InsetMathHull(buf, hullSimple)));
+ cell->emplace_back(new
InsetMathHull(buf, hullSimple));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, false);
} else {
// Don't create nested math hulls (bug
#5392)
- cell->push_back(MathAtom(new
InsetMathEnsureMath(buf)));
+ cell->emplace_back(new
InsetMathEnsureMath(buf));
parse(cell->back().nucleus()->cell(0),
FLAG_END, InsetMath::MATH_MODE);
}
}
@@ -1644,7 +1644,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
error("bad math environment " + name);
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullEquation)));
+ cell->emplace_back(new InsetMathHull(buf,
hullEquation));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, (name == "equation"));
}
@@ -1653,17 +1653,17 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
error("bad math environment " + name);
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullEqnArray)));
+ cell->emplace_back(new InsetMathHull(buf,
hullEqnArray));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
else if (name == "align" || name == "align*") {
if (mode == InsetMath::UNDECIDED_MODE) {
- cell->push_back(MathAtom(new
InsetMathHull(buf, hullAlign)));
+ cell->emplace_back(new
InsetMathHull(buf, hullAlign));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
} else {
- cell->push_back(MathAtom(new
InsetMathSplit(buf, name,
- 'c', !stared(name))));
+ cell->emplace_back(new
InsetMathSplit(buf, name,
+ 'c', !stared(name)));
parse2(cell->back(), FLAG_END, mode,
!stared(name));
}
}
@@ -1673,7 +1673,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
error("bad math environment " + name);
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullFlAlign)));
+ cell->emplace_back(new InsetMathHull(buf,
hullFlAlign));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1684,7 +1684,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
}
// ignore this for a while
getArg('{', '}');
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullAlignAt)));
+ cell->emplace_back(new InsetMathHull(buf,
hullAlignAt));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1695,7 +1695,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
}
// ignore this for a while
getArg('{', '}');
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullXAlignAt)));
+ cell->emplace_back(new InsetMathHull(buf,
hullXAlignAt));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1706,7 +1706,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
}
// ignore this for a while
getArg('{', '}');
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullXXAlignAt)));
+ cell->emplace_back(new InsetMathHull(buf,
hullXXAlignAt));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1715,7 +1715,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
error("bad math environment " + name);
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullMultline)));
+ cell->emplace_back(new InsetMathHull(buf,
hullMultline));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1724,7 +1724,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
error("bad math environment " + name);
break;
}
- cell->push_back(MathAtom(new InsetMathHull(buf,
hullGather)));
+ cell->emplace_back(new InsetMathHull(buf,
hullGather));
parse2(cell->back(), FLAG_END,
InsetMath::MATH_MODE, !stared(name));
}
@@ -1734,8 +1734,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
parse2(cell->back(), FLAG_END, mode,
false);
} else if (l->inset == "split") {
docstring const valign =
parse_verbatim_option() + 'c';
- cell->push_back(MathAtom(
- new InsetMathSplit(buf, name,
(char)valign[0])));
+ cell->emplace_back(new
InsetMathSplit(buf, name, (char)valign[0]));
parse2(cell->back(), FLAG_END, mode,
false);
} else {
success_ = false;
@@ -1748,7 +1747,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
<< "'." << endl;
}
// create generic environment inset
- cell->push_back(MathAtom(new
InsetMathEnv(buf, name)));
+ cell->emplace_back(new
InsetMathEnv(buf, name));
parse(cell->back().nucleus()->cell(0),
FLAG_END, mode);
}
}
@@ -1762,7 +1761,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
<< to_utf8(name) << "'" << endl;
}
// create generic environment inset
- cell->push_back(MathAtom(new InsetMathEnv(buf,
name)));
+ cell->emplace_back(new InsetMathEnv(buf, name));
parse(cell->back().nucleus()->cell(0),
FLAG_END, mode);
}
}
@@ -1785,9 +1784,9 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
break;
}
if (s.empty())
- cell->push_back(MathAtom(new
InsetMathMacro(buf, t.cs())));
+ cell->emplace_back(new InsetMathMacro(buf,
t.cs()));
else
- cell->push_back(MathAtom(new InsetMathKern(buf,
s)));
+ cell->emplace_back(new InsetMathKern(buf, s));
}
else if (t.cs() == "label") {
@@ -1799,7 +1798,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
grid.asHullInset()->label(cellrow, label);
} else {
cell->push_back(createInsetMath(t.cs(), buf));
- cell->push_back(MathAtom(new
InsetMathBrace(buf, md)));
+ cell->emplace_back(new InsetMathBrace(buf, md));
}
}
@@ -1816,14 +1815,14 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
else if (t.cs() == "color") {
docstring const color = parse_verbatim_item();
- cell->push_back(MathAtom(new InsetMathColor(buf, true,
color)));
+ cell->emplace_back(new InsetMathColor(buf, true,
color));
parse(cell->back().nucleus()->cell(0), flags, mode);
return success_;
}
else if (t.cs() == "textcolor") {
docstring const color = parse_verbatim_item();
- cell->push_back(MathAtom(new InsetMathColor(buf, false,
color)));
+ cell->emplace_back(new InsetMathColor(buf, false,
color));
parse(cell->back().nucleus()->cell(0), FLAG_ITEM,
InsetMath::TEXT_MODE);
}
@@ -1888,13 +1887,13 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
docstring const arg = parse_verbatim_item();
Length length;
if (prot && arg == "\\fill")
- cell->push_back(MathAtom(new
InsetMathSpace(buf, "hspace*{\\fill}", "")));
+ cell->emplace_back(new InsetMathSpace(buf,
"hspace*{\\fill}", ""));
else if (isValidLength(to_utf8(arg), &length))
- cell->push_back(MathAtom(new
InsetMathSpace(buf, length, prot)));
+ cell->emplace_back(new InsetMathSpace(buf,
length, prot));
else {
// Since the Length class cannot use length
variables
// we must not create an InsetMathSpace.
- cell->push_back(MathAtom(new
InsetMathMacro(buf, name)));
+ cell->emplace_back(new InsetMathMacro(buf,
name));
MathData md(buf);
mathed_parse_cell(md, '{' + arg + '}', mode_);
cell->append(md);
@@ -1913,7 +1912,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
parse(cell->back().nucleus()->cell(0),
FLAG_ITEM, mode);
} else {
docstring const arg =
parse_verbatim_item();
- cell->push_back(MathAtom(new
InsetMathMacro(buf, t.cs())));
+ cell->emplace_back(new
InsetMathMacro(buf, t.cs()));
MathData md(buf);
mathed_parse_cell(md, '[' + opt + ']',
mode_);
cell->append(md);
@@ -1965,10 +1964,10 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned
flags,
Encodings::MATH_CMD |
Encodings::TEXT_CMD,
termination, rem);
for (char_type c : cmd)
- cell->push_back(MathAtom(new
InsetMathChar(buf, c)));
+ cell->emplace_back(new
InsetMathChar(buf, c));
if (!rem.empty()) {
char_type c = rem[0];
- cell->push_back(MathAtom(new
InsetMathChar(buf, c)));
+ cell->emplace_back(new
InsetMathChar(buf, c));
cmd = rem.substr(1);
rem.clear();
} else
@@ -1993,8 +1992,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
skipSpaces();
docstring const delim =
getToken().asInput();
if
(InsetMathBig::isBigInsetDelim(delim))
- cell->push_back(MathAtom(
-
new InsetMathBig(buf, t.cs(), delim)));
+ cell->emplace_back(new
InsetMathBig(buf, t.cs(), delim));
else {
cell->push_back(createInsetMath(t.cs(), buf));
// For some reason delim.empty()
@@ -2094,7 +2092,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
}
}
is_unicode_symbol = true;
- cell->push_back(MathAtom(new
InsetMathChar(buf, c)));
+ cell->emplace_back(new
InsetMathChar(buf, c));
} else {
while (num_tokens--)
putback();
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs