Warning, file /education/cantor/src/backends/kalgebra/kalgebraexpression.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2009 Aleix Pol <aleixpol@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kalgebraexpression.h" 0008 0009 #include "textresult.h" 0010 #include "helpresult.h" 0011 #include "kalgebrasession.h" 0012 #include <KLocalizedString> 0013 0014 #include <analitza/expression.h> 0015 #include <analitza/expressionstream.h> 0016 #include <analitza/analyzer.h> 0017 0018 KAlgebraExpression::KAlgebraExpression( KAlgebraSession* session, bool internal) 0019 : Cantor::Expression(session, internal) 0020 {} 0021 0022 void KAlgebraExpression::evaluate() 0023 { 0024 setStatus(Cantor::Expression::Computing); 0025 0026 Analitza::Analyzer* a=static_cast<KAlgebraSession*>(session())->analyzer(); 0027 Analitza::Expression res; 0028 QString cmd = command(); 0029 QTextStream stream(&cmd); 0030 0031 Analitza::ExpressionStream s(&stream); 0032 for(; !s.atEnd();) { 0033 a->setExpression(s.next()); 0034 res = a->evaluate(); 0035 0036 if(!a->isCorrect()) 0037 break; 0038 } 0039 0040 if(a->isCorrect()) { 0041 setResult(new Cantor::TextResult(res.toString())); 0042 setStatus(Cantor::Expression::Done); 0043 } else { 0044 setErrorMessage(i18n("Error: %1", a->errors().join(QLatin1String("\n")))); 0045 setStatus(Cantor::Expression::Error); 0046 } 0047 }