diff --git a/CMakeLists.txt b/CMakeLists.txt index 95c9f964..c7bcfe58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake project(pip) set(pip_MAJOR 2) set(pip_MINOR 14) -set(pip_REVISION 0) -set(pip_SUFFIX beta) +set(pip_REVISION 1) +set(pip_SUFFIX ) set(pip_COMPANY SHS) set(pip_DOMAIN org.SHS) diff --git a/libs/main/math/pievaluator.cpp b/libs/main/math/pievaluator.cpp index 06e3fbf2..87414136 100644 --- a/libs/main/math/pievaluator.cpp +++ b/libs/main/math/pievaluator.cpp @@ -330,8 +330,10 @@ void PIEvaluator::makeOutput(PIString & string) { void PIEvaluator::findUnknownVariables() { PIString cvar; unknownVars.clear(); + usedVars.clear(); for (int i = 0; i < currentString.length(); i++) { - if (elements[i].var_num == -666) cvar += currentString[i]; + if (elements[i].var_num >= 0) usedVars << content.variable(elements[i].var_num).name; + else if (elements[i].var_num == -666) cvar += currentString[i]; else { if (cvar.length() == 0) continue; unknownVars << cvar; @@ -340,6 +342,7 @@ void PIEvaluator::findUnknownVariables() { } if (cvar.length() > 0) unknownVars << cvar; unknownVars.removeDuplicates(); + usedVars.removeDuplicates(); } @@ -1196,7 +1199,7 @@ complexd PIEvaluator::evaluate() { PIByteArray PIEvaluator::save() const { PIByteArray ret; - ret << content << currentVariables << unknownVars << instructions << currentString << lastError << out << correct; + ret << content << currentVariables << unknownVars << instructions << currentString << lastError << out << correct << usedVars; return ret; } @@ -1204,5 +1207,6 @@ PIByteArray PIEvaluator::save() const { void PIEvaluator::load(PIByteArray ba) { if (ba.size() <= 4) return; ba >> content >> currentVariables >> unknownVars >> instructions >> currentString >> lastError >> out >> correct; + if (ba.size() >= 4) ba >> usedVars; variables = currentVariables; } diff --git a/libs/main/math/pievaluator.h b/libs/main/math/pievaluator.h index 94ff6250..5433fb57 100644 --- a/libs/main/math/pievaluator.h +++ b/libs/main/math/pievaluator.h @@ -176,6 +176,9 @@ public: //! Returns all unknown variables founded in last expression passed to \a check() function const PIStringList & unknownVariables() const {return unknownVars;} + //! Returns all used variables founded in last expression passed to \a check() function + const PIStringList & usedVariables() const {return usedVars;} + //! Returns processed last expression passed to \a check() function const PIString & expression() const {return currentString;} @@ -220,7 +223,7 @@ private: PIDeque elements; PIVector currentVariables, variables, tmpvars, * kvars; PIVector instructions; - PIStringList unknownVars; + PIStringList unknownVars, usedVars; PIString currentString, lastError; complexd out; bool correct;