Kaydet (Commit) efc66942 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

no need to recompile the formula again

Change-Id: I03b72bd6a0b341ec89e0995f7b53287449ce9f61
üst cbbf5876
...@@ -30,7 +30,6 @@ private: ...@@ -30,7 +30,6 @@ private:
ScAddress maAddr; ScAddress maAddr;
ScDocument* mpDoc; ScDocument* mpDoc;
ScFormulaResult maResult; ScFormulaResult maResult;
const OUString maFormula;
formula::FormulaGrammar::Grammar maGram; formula::FormulaGrammar::Grammar maGram;
bool bIsMatrix; bool bIsMatrix;
OUString maMatrixFormulaResult; OUString maMatrixFormulaResult;
......
...@@ -20,7 +20,6 @@ ScSimpleFormulaCalculator::ScSimpleFormulaCalculator( ScDocument* pDoc, const Sc ...@@ -20,7 +20,6 @@ ScSimpleFormulaCalculator::ScSimpleFormulaCalculator( ScDocument* pDoc, const Sc
, mbCalculated(false) , mbCalculated(false)
, maAddr(rAddr) , maAddr(rAddr)
, mpDoc(pDoc) , mpDoc(pDoc)
, maFormula(rFormula)
, maGram(eGram) , maGram(eGram)
, bIsMatrix(false) , bIsMatrix(false)
{ {
...@@ -48,15 +47,13 @@ void ScSimpleFormulaCalculator::Calculate() ...@@ -48,15 +47,13 @@ void ScSimpleFormulaCalculator::Calculate()
formula::StackVar aIntType = aInt.Interpret(); formula::StackVar aIntType = aInt.Interpret();
if ( aIntType == formula::svMatrixCell ) if ( aIntType == formula::svMatrixCell )
{ {
OUStringBuffer aStr;
ScCompiler aComp(mpDoc, maAddr); ScCompiler aComp(mpDoc, maAddr);
aComp.SetGrammar(maGram); aComp.SetGrammar(maGram);
mpCode.reset(aComp.CompileString(maFormula)); OUStringBuffer aStr;
if(!mpCode->GetCodeError() && mpCode->GetLen()) aComp.CreateStringFromToken(aStr, aInt.GetResultToken().get(), false);
aComp.CompileTokenArray();
aComp.CreateStringFromToken( aStr, aInt.GetResultToken().get(), true );
bIsMatrix = true; bIsMatrix = true;
maMatrixFormulaResult = aStr.toString(); maMatrixFormulaResult = aStr.makeStringAndClear();
} }
mnFormatType = aInt.GetRetFormatType(); mnFormatType = aInt.GetRetFormatType();
mnFormatIndex = aInt.GetRetFormatIndex(); mnFormatIndex = aInt.GetRetFormatIndex();
...@@ -69,6 +66,7 @@ bool ScSimpleFormulaCalculator::IsValue() ...@@ -69,6 +66,7 @@ bool ScSimpleFormulaCalculator::IsValue()
if (bIsMatrix) if (bIsMatrix)
return false; return false;
return maResult.IsValue(); return maResult.IsValue();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment