Refactoring. Use QScopedPointer for class Calculator.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2016-05-24 15:25:58 +03:00
parent 83243e5af3
commit 9c0f5f2fa4
9 changed files with 12 additions and 27 deletions

View file

@ -2421,9 +2421,8 @@ bool TMainWindow::EvalFormula(const QString &formula, bool fromUser, VContainer
f = formula;
}
f.replace("\n", " ");
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
qreal result = cal->EvalFormula(data->PlainVariables(), f);
delete cal;
if (qIsInf(result) || qIsNaN(result))
{

View file

@ -310,9 +310,8 @@ bool DialogIncrements::EvalIncrementFormula(const QString &formula, bool fromUse
f = formula;
}
f.replace("\n", " ");
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
const qreal result = cal->EvalFormula(data->PlainVariables(), f);
delete cal;
if (qIsInf(result) || qIsNaN(result))
{

View file

@ -2455,9 +2455,8 @@ qreal VPattern::EvalFormula(VContainer *data, const QString &formula, bool *ok)
// Replace line return character with spaces for calc if exist
QString f = formula;
f.replace("\n", " ");
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
const qreal result = cal->EvalFormula(data->PlainVariables(), f);
delete cal;
(qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true;
return result;

View file

@ -879,9 +879,8 @@ qreal VMeasurements::EvalFormula(VContainer *data, const QString &formula, bool
// Replace line return character with spaces for calc if exist
QString f = formula;
f.replace("\n", " ");
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
const qreal result = cal->EvalFormula(data->PlainVariables(), f);
delete cal;
(qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true;
return result;

View file

@ -48,9 +48,8 @@ class VContainer;
* //Need delete dialog here because parser in dialog don't allow use correct separator for parsing here.
* //Don't know why.
* delete dialog;
* Calculator *cal = new Calculator();
* QScopedPointer<Calculator> cal(new Calculator());
* result = cal->EvalFormula(data->PlainVariables(), formula);
* delete cal;//Here can be memory leak, but dialog already check this formula and probability very low.
* }
*/
class Calculator:public qmu::QmuFormulaBase

View file

@ -234,10 +234,9 @@ void VFormula::Eval()
{
try
{
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
QString expression = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator());
const qreal result = cal->EvalFormula(data->PlainVariables(), expression);
delete cal;
if (qIsInf(result) || qIsNaN(result))
{

View file

@ -449,9 +449,8 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt
formula.replace("\n", " ");
// Translate to internal look.
formula = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator());
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
result = cal->EvalFormula(data->PlainVariables(), formula);
delete cal;
if (qIsInf(result) || qIsNaN(result))
{

View file

@ -294,9 +294,8 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine
Calculator *cal = nullptr;
try
{
cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
result = cal->EvalFormula(data->PlainVariables(), formula);
delete cal;
if (qIsInf(result) || qIsNaN(result))
{
@ -311,11 +310,10 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine
<< "Message: " << e.GetMsg() << "\n"
<< "Expression: " << e.GetExpr() << "\n"
<< "--------------------------------------";
delete cal;
if (qApp->IsAppInGUIMode())
{
DialogUndo *dialogUndo = new DialogUndo(qApp->getMainWindow());
QScopedPointer<DialogUndo> dialogUndo(new DialogUndo(qApp->getMainWindow()));
forever
{
if (dialogUndo->exec() == QDialog::Accepted)
@ -323,8 +321,7 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine
const UndoButton resultUndo = dialogUndo->Result();
if (resultUndo == UndoButton::Fix)
{
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId,
qApp->getMainWindow());
auto *dialog = new DialogEditWrongFormula(data, toolId, qApp->getMainWindow());
dialog->setWindowTitle(tr("Edit wrong formula"));
dialog->SetFormula(formula);
if (dialog->exec() == QDialog::Accepted)
@ -333,10 +330,8 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine
/* Need delete dialog here because parser in dialog don't allow use correct separator for
* parsing here. */
delete dialog;
Calculator *cal1 = new Calculator();
QScopedPointer<Calculator> cal1(new Calculator());
result = cal1->EvalFormula(data->PlainVariables(), formula);
delete cal1; /* Here can be memory leak, but dialog already checked this formula and
probability very low. */
if (qIsInf(result) || qIsNaN(result))
{
@ -358,11 +353,9 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine
}
else
{
delete dialogUndo;
throw;
}
}
delete dialogUndo;
}
else
{

View file

@ -158,9 +158,8 @@ qreal Visualization::FindVal(const QString &expression, const QHash<QString, qre
QString formula = expression;
formula.replace("\n", " ");
formula = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator());
Calculator *cal = new Calculator();
QScopedPointer<Calculator> cal(new Calculator());
val = cal->EvalFormula(vars, formula);
delete cal;
if (qIsInf(val) || qIsNaN(val))
{