diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-12-12 15:01:02 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-12-12 17:49:02 +0100 |
commit | 40b0bd21e87480b659e7ed92854eee385a2a3c55 (patch) | |
tree | e71ba92b77eead12445c68c866d7ba71f74e19f5 /sc/source/core/tool/compiler.cxx | |
parent | 4781ba436f72b5b763833c3c036e7f1c0e4d9e3b (diff) |
sc: rowcol: tdf#50916 pass ScDocument to the token classes
needed to create a fake ScDocument for the external ref manager, since
it has no ScDocument at all
Change-Id: Ia786ac291133e3c438694e81ecfb2590729a853d
Reviewed-on: https://gerrit.libreoffice.org/85050
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc/source/core/tool/compiler.cxx')
-rw-r--r-- | sc/source/core/tool/compiler.cxx | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index b943edf34af1..3d4a2def3552 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -4458,7 +4458,7 @@ std::unique_ptr<ScTokenArray> ScCompiler::CompileString( const OUString& rFormul if( meGrammar == FormulaGrammar::GRAM_EXTERNAL ) SetGrammar( FormulaGrammar::GRAM_PODF ); - ScTokenArray aArr; + ScTokenArray aArr(pDoc); pArr = &aArr; maArrIterator = FormulaTokenArrayPlainIterator(*pArr); aFormula = comphelper::string::strip(rFormula, ' '); @@ -4658,7 +4658,7 @@ std::unique_ptr<ScTokenArray> ScCompiler::CompileString( const OUString& rFormul ++pFunctionStack[ nFunction ].nSep; } } - FormulaToken* pNewToken = static_cast<ScTokenArray*>(pArr)->Add( maRawToken.CreateToken()); + FormulaToken* pNewToken = static_cast<ScTokenArray*>(pArr)->Add( maRawToken.CreateToken(pDoc)); if (!pNewToken && eOp == ocArrayClose && pArr->OpCodeBefore( pArr->GetLen()) == ocArrayClose) { // Nested inline array or non-value/non-string in array. The @@ -4778,7 +4778,7 @@ std::unique_ptr<ScTokenArray> ScCompiler::CompileString( const OUString& rFormul table::CellAddress aReferencePos; ScUnoConversion::FillApiAddress( aReferencePos, aPos ); uno::Sequence< sheet::FormulaToken > aTokenSeq = xParser->parseFormula( rFormula, aReferencePos ); - ScTokenArray aTokenArray; + ScTokenArray aTokenArray(pDoc); if( ScTokenConversion::ConvertToTokenArray( *pDoc, aTokenArray, aTokenSeq ) ) { // remember pArr, in case a subsequent CompileTokenArray() is executed. @@ -4827,7 +4827,7 @@ bool ScCompiler::HandleRange() bool bAddPair = !(bBorder1 && bBorder2); if ( bAddPair ) { - pNew = new ScTokenArray(); + pNew = new ScTokenArray(pDoc); pNew->AddOpCode( ocClose ); PushTokenArray( pNew, true ); } @@ -4850,7 +4850,7 @@ bool ScCompiler::HandleRange() maArrIterator.Reset(); if ( bAddPair ) { - pNew = new ScTokenArray(); + pNew = new ScTokenArray(pDoc); pNew->AddOpCode( ocOpen ); PushTokenArray( pNew, true ); } @@ -4861,7 +4861,7 @@ bool ScCompiler::HandleRange() { // No ScRangeData for an already compiled token can happen in BIFF .xls // import if the original range is not present in the document. - pNew = new ScTokenArray; + pNew = new ScTokenArray(pDoc); pNew->Add( new FormulaErrorToken( FormulaError::NoName)); PushTokenArray( pNew, true ); return GetToken(); @@ -5287,7 +5287,7 @@ sal_Unicode ScCompiler::GetNativeAddressSymbol( Convention::SpecialSymbolType eT FormulaTokenRef ScCompiler::ExtendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2 ) { - return extendRangeReference( rTok1, rTok2, aPos, true/*bReuseDoubleRef*/ ); + return extendRangeReference( pDoc, rTok1, rTok2, aPos, true/*bReuseDoubleRef*/ ); } void ScCompiler::fillAddInToken(::std::vector< css::sheet::FormulaOpCodeMapEntry >& _rVec,bool _bIsEnglish) const @@ -5488,7 +5488,7 @@ bool ScCompiler::HandleColRowName() SetError(FormulaError::NoRef); else if (mbJumpCommandReorder) { - ScTokenArray* pNew = new ScTokenArray(); + ScTokenArray* pNew = new ScTokenArray(pDoc); if ( bSingle ) { ScSingleRefData aRefData; @@ -5519,7 +5519,7 @@ bool ScCompiler::HandleColRowName() pNew->AddDoubleReference( aRefData ); else { // automagically - pNew->Add( new ScDoubleRefToken( aRefData, ocColRowNameAuto ) ); + pNew->Add( new ScDoubleRefToken( pDoc, aRefData, ocColRowNameAuto ) ); } } PushTokenArray( pNew, true ); @@ -5544,7 +5544,7 @@ bool ScCompiler::HandleDbData() pDBData->GetArea(aRange); aRange.aEnd.SetTab(aRange.aStart.Tab()); aRefData.SetRange(aRange, aPos); - ScTokenArray* pNew = new ScTokenArray(); + ScTokenArray* pNew = new ScTokenArray(pDoc); pNew->AddDoubleReference( aRefData ); PushTokenArray( pNew, true ); return GetToken(); @@ -5745,7 +5745,7 @@ bool ScCompiler::HandleTableRef() } } while (eState != sStop); } - ScTokenArray* pNew = new ScTokenArray(); + ScTokenArray* pNew = new ScTokenArray(pDoc); if (nError == FormulaError::NONE || nError == FormulaError::NoValue) { bool bCol2Rel = false; @@ -5808,7 +5808,7 @@ bool ScCompiler::HandleTableRef() if (nError != FormulaError::NONE) { aRefData.SetAddress( aRange.aStart, aRange.aStart); - pTR->SetAreaRefRPN( new ScSingleRefToken( aRefData)); // set reference at TableRef + pTR->SetAreaRefRPN( new ScSingleRefToken(pDoc, aRefData)); // set reference at TableRef pNew->Add( new FormulaErrorToken( nError)); // set error in RPN } else @@ -5837,7 +5837,7 @@ bool ScCompiler::HandleTableRef() if (nError != FormulaError::NONE) { aRefData.SetRange( aRange, aRange.aStart); - pTR->SetAreaRefRPN( new ScDoubleRefToken( aRefData)); // set reference at TableRef + pTR->SetAreaRefRPN( new ScDoubleRefToken(pDoc, aRefData)); // set reference at TableRef pNew->Add( new FormulaErrorToken( nError)); // set error in RPN } else @@ -6095,7 +6095,7 @@ void ScCompiler::ReplaceDoubleRefII(FormulaToken** ppDoubleRefTok) aSingleRef.SetAddress(aAddr, aPos); // Replace the original doubleref token with computed singleref token - FormulaToken* pNewSingleRefTok = new ScSingleRefToken(aSingleRef); + FormulaToken* pNewSingleRefTok = new ScSingleRefToken(pDoc, aSingleRef); (*ppDoubleRefTok)->DecRef(); *ppDoubleRefTok = pNewSingleRefTok; pNewSingleRefTok->IncRef(); @@ -6226,7 +6226,7 @@ void ScCompiler::CorrectSumRange(const ScComplexRefData& rBaseRange, return; // Replace sum-range token - FormulaToken* pNewSumRangeTok = new ScDoubleRefToken(rSumRange); + FormulaToken* pNewSumRangeTok = new ScDoubleRefToken(pDoc, rSumRange); (*ppSumRangeToken)->DecRef(); *ppSumRangeToken = pNewSumRangeTok; pNewSumRangeTok->IncRef(); |