summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-09-15 19:16:12 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-09-17 15:04:06 +0200
commit44af87f7392792e045e5afe5df19e946ef81241b (patch)
tree464e5b1821859bb3bd3b7188ba3d75d00a171b43 /sc
parentd7ef802bbb3b2f01fdbf7af6da50d272bcf0abd1 (diff)
ScCompiler ctors never passed a null ScDocument*
add one assert to ScXMLConditionalFormatContext where this isn't immediately certain. Change-Id: I2103c5cd42288e0a5d2a1c2e2d2d031f806773bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102906 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/compiler.hxx4
-rw-r--r--sc/qa/unit/helper/qahelper.cxx4
-rw-r--r--sc/qa/unit/ucalc_condformat.cxx12
-rw-r--r--sc/qa/unit/ucalc_formula.cxx12
-rw-r--r--sc/source/core/data/column.cxx2
-rw-r--r--sc/source/core/data/column4.cxx12
-rw-r--r--sc/source/core/data/conditio.cxx6
-rw-r--r--sc/source/core/data/formulacell.cxx18
-rw-r--r--sc/source/core/data/simpleformulacalc.cxx4
-rw-r--r--sc/source/core/opencl/formulagroupcl.cxx2
-rw-r--r--sc/source/core/tool/compiler.cxx12
-rw-r--r--sc/source/core/tool/interpr1.cxx4
-rw-r--r--sc/source/core/tool/rangenam.cxx10
-rw-r--r--sc/source/core/tool/reftokenhelper.cxx2
-rw-r--r--sc/source/filter/excel/xechart.cxx2
-rw-r--r--sc/source/filter/excel/xename.cxx2
-rw-r--r--sc/source/filter/excel/xeroot.cxx2
-rw-r--r--sc/source/filter/excel/xichart.cxx2
-rw-r--r--sc/source/filter/oox/defnamesbuffer.cxx2
-rw-r--r--sc/source/filter/oox/formulabuffer.cxx6
-rw-r--r--sc/source/filter/oox/revisionfragment.cxx2
-rw-r--r--sc/source/filter/orcus/interface.cxx4
-rw-r--r--sc/source/filter/xml/xmlcondformat.cxx3
-rw-r--r--sc/source/filter/xml/xmlimprt.cxx2
-rw-r--r--sc/source/ui/app/inputhdl.cxx2
-rw-r--r--sc/source/ui/condformat/condformatdlgentry.cxx2
-rw-r--r--sc/source/ui/docshell/docfunc.cxx2
-rw-r--r--sc/source/ui/docshell/impex.cxx2
-rw-r--r--sc/source/ui/formdlg/formula.cxx6
-rw-r--r--sc/source/ui/miscdlgs/anyrefdg.cxx2
-rw-r--r--sc/source/ui/namedlg/namedefdlg.cxx2
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx2
-rw-r--r--sc/source/ui/unoobj/chart2uno.cxx4
-rw-r--r--sc/source/ui/unoobj/condformatuno.cxx4
-rw-r--r--sc/source/ui/unoobj/funcuno.cxx2
-rw-r--r--sc/source/ui/unoobj/servuno.cxx2
-rw-r--r--sc/source/ui/unoobj/tokenuno.cxx8
-rw-r--r--sc/source/ui/vba/vbaname.cxx2
-rw-r--r--sc/source/ui/vba/vbanames.cxx2
-rw-r--r--sc/source/ui/vba/vbarange.cxx4
-rw-r--r--sc/source/ui/view/tabvwsha.cxx2
-rw-r--r--sc/source/ui/view/viewfun2.cxx2
-rw-r--r--sc/source/ui/view/viewfun4.cxx2
-rw-r--r--sc/source/ui/view/viewfunc.cxx2
44 files changed, 94 insertions, 93 deletions
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index 79b8c2cd2ff1..887c3c426792 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -361,7 +361,7 @@ public:
/** If eGrammar == GRAM_UNSPECIFIED then the grammar of pDocument is used,
if pDocument==nullptr then GRAM_DEFAULT.
*/
- ScCompiler( ScDocument* pDocument, const ScAddress&,
+ ScCompiler( ScDocument& rDocument, const ScAddress&,
formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_UNSPECIFIED,
bool bComputeII = false, bool bMatrixFlag = false, const ScInterpreterContext* pContext = nullptr );
@@ -371,7 +371,7 @@ public:
/** If eGrammar == GRAM_UNSPECIFIED then the grammar of pDocument is used,
if pDocument==nullptr then GRAM_DEFAULT.
*/
- ScCompiler( ScDocument* pDocument, const ScAddress&, ScTokenArray& rArr,
+ ScCompiler( ScDocument& rDocument, const ScAddress&, ScTokenArray& rArr,
formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_UNSPECIFIED,
bool bComputeII = false, bool bMatrixFlag = false, const ScInterpreterContext* pContext = nullptr );
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index cc675cdb593d..560d4c51fd21 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -489,7 +489,7 @@ std::unique_ptr<ScTokenArray> compileFormula(
formula::FormulaGrammar::Grammar eGram )
{
ScAddress aPos(0,0,0);
- ScCompiler aComp(pDoc, aPos, eGram);
+ ScCompiler aComp(*pDoc, aPos, eGram);
return aComp.CompileString(rFormula);
}
@@ -562,7 +562,7 @@ bool isFormulaWithoutError(ScDocument& rDoc, const ScAddress& rPos)
OUString toString(
ScDocument& rDoc, const ScAddress& rPos, ScTokenArray& rArray, formula::FormulaGrammar::Grammar eGram)
{
- ScCompiler aComp(&rDoc, rPos, rArray, eGram);
+ ScCompiler aComp(rDoc, rPos, rArray, eGram);
OUStringBuffer aBuf;
aComp.CreateStringFromTokenArray(aBuf);
return aBuf.makeStringAndClear();
diff --git a/sc/qa/unit/ucalc_condformat.cxx b/sc/qa/unit/ucalc_condformat.cxx
index b0d66091fe2b..118377c970e6 100644
--- a/sc/qa/unit/ucalc_condformat.cxx
+++ b/sc/qa/unit/ucalc_condformat.cxx
@@ -787,7 +787,7 @@ void Test::testFormulaListenerSingleCellToSingleCell()
{
m_pDoc->InsertTab(0, "test");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
@@ -805,7 +805,7 @@ void Test::testFormulaListenerSingleCellToMultipleCells()
{
m_pDoc->InsertTab(0, "test");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
@@ -823,7 +823,7 @@ void Test::testFormulaListenerMultipleCellsToSingleCell()
{
m_pDoc->InsertTab(0, "test");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
@@ -841,7 +841,7 @@ void Test::testFormulaListenerMultipleCellsToMultipleCells()
{
m_pDoc->InsertTab(0, "test");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
@@ -859,7 +859,7 @@ void Test::testFormulaListenerUpdateInsertTab()
{
m_pDoc->InsertTab(0, "test");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 0), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
ScFormulaListener aListener(*m_pDoc);
@@ -884,7 +884,7 @@ void Test::testFormulaListenerUpdateDeleteTab()
m_pDoc->InsertTab(0, "test");
m_pDoc->InsertTab(0, "to_delete");
- ScCompiler aCompiler(m_pDoc, ScAddress(10, 10, 1), formula::FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*m_pDoc, ScAddress(10, 10, 1), formula::FormulaGrammar::GRAM_ENGLISH);
std::unique_ptr<ScTokenArray> pTokenArray(aCompiler.CompileString("A1"));
ScFormulaListener aListener(*m_pDoc);
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 371692f01a56..b82f1271fb12 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -190,7 +190,7 @@ void Test::testFormulaCreateStringFromTokens()
#if 0
OUString aFormula = OUString::createFromAscii(aTests[i]);
#endif
- ScCompiler aComp(m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aComp(*m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH);
#if 0 // TODO: This call to CompileString() causes the cppunittester to somehow fail on Windows.
pArray.reset(aComp.CompileString(aFormula));
CPPUNIT_ASSERT_MESSAGE("Failed to compile formula string.", pArray.get());
@@ -1022,7 +1022,7 @@ void Test::testFormulaCompilerJumpReordering()
CPPUNIT_ASSERT(pCode);
// Then generate RPN tokens.
- ScCompiler aCompRPN(m_pDoc, ScAddress(), *pCode, FormulaGrammar::GRAM_NATIVE);
+ ScCompiler aCompRPN(*m_pDoc, ScAddress(), *pCode, FormulaGrammar::GRAM_NATIVE);
aCompRPN.CompileTokenArray();
// RPN tokens should be ordered: B1, ocIf, C1, ocSep, D1, ocClose.
@@ -1050,7 +1050,7 @@ void Test::testFormulaCompilerJumpReordering()
// Generate RPN tokens again, but this time no jump command reordering.
pCode->DelRPN();
- ScCompiler aCompRPN2(m_pDoc, ScAddress(), *pCode, FormulaGrammar::GRAM_NATIVE);
+ ScCompiler aCompRPN2(*m_pDoc, ScAddress(), *pCode, FormulaGrammar::GRAM_NATIVE);
aCompRPN2.EnableJumpCommandReorder(false);
aCompRPN2.CompileTokenArray();
@@ -4332,7 +4332,7 @@ void Test::testTokenArrayRefUpdateMove()
for (const OUString& aTest : aTests)
{
- ScCompiler aComp(m_pDoc, aPos, m_pDoc->GetGrammar());
+ ScCompiler aComp(*m_pDoc, aPos, m_pDoc->GetGrammar());
std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(aTest));
OUString aStr = pArray->CreateString(aCxt, aPos);
@@ -8616,7 +8616,7 @@ void Test::testRefR1C1WholeCol()
CPPUNIT_ASSERT(m_pDoc->InsertTab (0, "Test"));
ScAddress aPos(1, 1, 1);
- ScCompiler aComp(m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
+ ScCompiler aComp(*m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
std::unique_ptr<ScTokenArray> pTokens(aComp.CompileString("=C[10]"));
sc::TokenStringContext aCxt(*m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH);
OUString aFormula = pTokens->CreateString(aCxt, aPos);
@@ -8631,7 +8631,7 @@ void Test::testRefR1C1WholeRow()
CPPUNIT_ASSERT(m_pDoc->InsertTab (0, "Test"));
ScAddress aPos(1, 1, 1);
- ScCompiler aComp(m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
+ ScCompiler aComp(*m_pDoc, aPos, FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
std::unique_ptr<ScTokenArray> pTokens(aComp.CompileString("=R[3]"));
sc::TokenStringContext aCxt(*m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH);
OUString aFormula = pTokens->CreateString(aCxt, aPos);
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index a50cdffc702f..1647dfaa0b5a 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -2147,7 +2147,7 @@ class UpdateRefOnNonCopy
// We need to re-compile the token array when a range name is
// modified, to correctly reflect the new references in the
// name.
- ScCompiler aComp(&mpCxt->mrDoc, rTopCell.aPos, *rTopCell.GetCode(), mpCxt->mrDoc.GetGrammar(),
+ ScCompiler aComp(mpCxt->mrDoc, rTopCell.aPos, *rTopCell.GetCode(), mpCxt->mrDoc.GetGrammar(),
true, rTopCell.GetMatrixFlag() != ScMatrixMode::NONE);
aComp.CompileTokenArray();
}
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index 3c7339573e89..1d21b8b2bca1 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -870,13 +870,13 @@ public:
class CompileHybridFormulaHandler
{
- ScDocument* mpDoc;
+ ScDocument& mrDoc;
sc::StartListeningContext& mrStartListenCxt;
sc::CompileFormulaContext& mrCompileFormulaCxt;
public:
- CompileHybridFormulaHandler( ScDocument* pDoc, sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) :
- mpDoc(pDoc),
+ CompileHybridFormulaHandler(ScDocument& rDoc, sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) :
+ mrDoc(rDoc),
mrStartListenCxt(rStartListenCxt),
mrCompileFormulaCxt(rCompileCxt) {}
@@ -896,7 +896,7 @@ public:
ScFormulaCellGroupRef xGroup = pTop->GetCellGroup();
assert(xGroup);
xGroup->setCode(std::move(pNewCode));
- xGroup->compileCode(*mpDoc, pTop->aPos, mpDoc->GetGrammar());
+ xGroup->compileCode(mrDoc, pTop->aPos, mrDoc.GetGrammar());
// Propagate the new token array to all formula cells in the group.
ScFormulaCell** pp = rEntry.mpCells;
@@ -922,7 +922,7 @@ public:
std::unique_ptr<ScTokenArray> pNewCode = aComp.CompileString(aFormula);
// Generate RPN tokens.
- ScCompiler aComp2(mpDoc, pCell->aPos, *pNewCode, formula::FormulaGrammar::GRAM_UNSPECIFIED,
+ ScCompiler aComp2(mrDoc, pCell->aPos, *pNewCode, formula::FormulaGrammar::GRAM_UNSPECIFIED,
true, pCell->GetMatrixFlag() != ScMatrixMode::NONE);
aComp2.CompileTokenArray();
@@ -971,7 +971,7 @@ void ScColumn::CompileHybridFormula(
// Collect all formula groups.
std::vector<sc::FormulaGroupEntry> aGroups = GetFormulaGroupEntries();
- CompileHybridFormulaHandler aFunc(&GetDoc(), rStartListenCxt, rCompileCxt);
+ CompileHybridFormulaHandler aFunc(GetDoc(), rStartListenCxt, rCompileCxt);
std::for_each(aGroups.begin(), aGroups.end(), aFunc);
}
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 2fa970066e9c..ee70b5d70a03 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -343,7 +343,7 @@ void ScConditionEntry::Compile( const OUString& rExpr1, const OUString& rExpr2,
{
if ( !rExpr1.isEmpty() || !rExpr2.isEmpty() )
{
- ScCompiler aComp( mpDoc, aSrcPos );
+ ScCompiler aComp( *mpDoc, aSrcPos );
if ( !rExpr1.isEmpty() )
{
@@ -1246,7 +1246,7 @@ OUString ScConditionEntry::GetExpression( const ScAddress& rCursor, sal_uInt16 n
{
if ( pFormula1 )
{
- ScCompiler aComp(mpDoc, rCursor, *pFormula1, eGrammar);
+ ScCompiler aComp(*mpDoc, rCursor, *pFormula1, eGrammar);
OUStringBuffer aBuffer;
aComp.CreateStringFromTokenArray( aBuffer );
aRet = aBuffer.makeStringAndClear();
@@ -1262,7 +1262,7 @@ OUString ScConditionEntry::GetExpression( const ScAddress& rCursor, sal_uInt16 n
{
if ( pFormula2 )
{
- ScCompiler aComp(mpDoc, rCursor, *pFormula2, eGrammar);
+ ScCompiler aComp(*mpDoc, rCursor, *pFormula2, eGrammar);
OUStringBuffer aBuffer;
aComp.CreateStringFromTokenArray( aBuffer );
aRet = aBuffer.makeStringAndClear();
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index 17b4dd5f4ef1..05e2fe385705 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -562,7 +562,7 @@ void ScFormulaCellGroup::compileCode(
if (mpCode->GetLen() && mpCode->GetCodeError() == FormulaError::NONE && !mpCode->GetCodeLen())
{
bool bMatrixFormula = mpTopCell->GetMatrixFlag() != ScMatrixMode::NONE;
- ScCompiler aComp(&rDoc, rPos, *mpCode, eGram, true, bMatrixFormula);
+ ScCompiler aComp(rDoc, rPos, *mpCode, eGram, true, bMatrixFormula);
mbSubTotal = aComp.CompileTokenArray();
mnFormatType = aComp.GetNumFormatType();
}
@@ -704,7 +704,7 @@ ScFormulaCell::ScFormulaCell(
// Generate RPN token array.
if (pCode->GetLen() && pCode->GetCodeError() == FormulaError::NONE && !pCode->GetCodeLen())
{
- ScCompiler aComp( &rDocument, aPos, *pCode, eTempGrammar, true, cMatrixFlag != ScMatrixMode::NONE );
+ ScCompiler aComp(rDocument, aPos, *pCode, eTempGrammar, true, cMatrixFlag != ScMatrixMode::NONE);
bSubTotal = aComp.CompileTokenArray();
nFormatType = aComp.GetNumFormatType();
}
@@ -752,7 +752,7 @@ ScFormulaCell::ScFormulaCell(
// RPN array generation
if( pCode->GetLen() && pCode->GetCodeError() == FormulaError::NONE && !pCode->GetCodeLen() )
{
- ScCompiler aComp( &rDocument, aPos, *pCode, eTempGrammar, true, cMatrixFlag != ScMatrixMode::NONE );
+ ScCompiler aComp( rDocument, aPos, *pCode, eTempGrammar, true, cMatrixFlag != ScMatrixMode::NONE );
bSubTotal = aComp.CompileTokenArray();
nFormatType = aComp.GetNumFormatType();
}
@@ -1002,7 +1002,7 @@ void ScFormulaCell::GetFormula( OUStringBuffer& rBuffer,
}
else
{
- ScCompiler aComp( &rDocument, aPos, *pCode, eGrammar, false, false, pContext );
+ ScCompiler aComp( rDocument, aPos, *pCode, eGrammar, false, false, pContext );
aComp.CreateStringFromTokenArray( rBuffer );
}
}
@@ -1013,7 +1013,7 @@ void ScFormulaCell::GetFormula( OUStringBuffer& rBuffer,
}
else
{
- ScCompiler aComp( &rDocument, aPos, *pCode, eGrammar, false, false, pContext );
+ ScCompiler aComp( rDocument, aPos, *pCode, eGrammar, false, false, pContext );
aComp.CreateStringFromTokenArray( rBuffer );
}
@@ -1134,7 +1134,7 @@ void ScFormulaCell::Compile( const OUString& rFormula, bool bNoListening,
if ( pCode )
pCode->Clear();
ScTokenArray* pCodeOld = pCode;
- ScCompiler aComp( &rDocument, aPos, eGrammar);
+ ScCompiler aComp( rDocument, aPos, eGrammar);
pCode = aComp.CompileString( rFormula ).release();
assert(!mxGroup);
delete pCodeOld;
@@ -1212,7 +1212,7 @@ void ScFormulaCell::CompileTokenArray( bool bNoListening )
if( !bNoListening && pCode->GetCodeLen() )
EndListeningTo( rDocument );
- ScCompiler aComp(&rDocument, aPos, *pCode, rDocument.GetGrammar(), true, cMatrixFlag != ScMatrixMode::NONE);
+ ScCompiler aComp(rDocument, aPos, *pCode, rDocument.GetGrammar(), true, cMatrixFlag != ScMatrixMode::NONE);
bSubTotal = aComp.CompileTokenArray();
if( pCode->GetCodeError() == FormulaError::NONE )
{
@@ -5067,7 +5067,7 @@ bool ScFormulaCell::InterpretFormulaGroupOpenCL(sc::FormulaLogger::GroupScope& a
ScTokenArray aCode(rDocument);
ScGroupTokenConverter aConverter(aCode, rDocument, *this, xGroup->mpTopCell->aPos);
// TODO avoid this extra compilation
- ScCompiler aComp( &rDocument, xGroup->mpTopCell->aPos, *pCode, formula::FormulaGrammar::GRAM_UNSPECIFIED, true, cMatrixFlag != ScMatrixMode::NONE );
+ ScCompiler aComp( rDocument, xGroup->mpTopCell->aPos, *pCode, formula::FormulaGrammar::GRAM_UNSPECIFIED, true, cMatrixFlag != ScMatrixMode::NONE );
aComp.CompileTokenArray();
if (aComp.HasUnhandledPossibleImplicitIntersections() || !aConverter.convert(*pCode, aScope))
{
@@ -5179,7 +5179,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
}
}
- ScCompiler aComp(&rDocument, aPos, aCode, rDocument.GetGrammar(), true, cMatrixFlag != ScMatrixMode::NONE);
+ ScCompiler aComp(rDocument, aPos, aCode, rDocument.GetGrammar(), true, cMatrixFlag != ScMatrixMode::NONE);
aComp.CompileTokenArray(); // Create RPN token array.
ScInterpreter aInterpreter(this, rDocument, rDocument.GetNonThreadedContext(), aPos, aCode);
aInterpreter.Interpret();
diff --git a/sc/source/core/data/simpleformulacalc.cxx b/sc/source/core/data/simpleformulacalc.cxx
index e11d1beb3aef..ad26a135c98c 100644
--- a/sc/source/core/data/simpleformulacalc.cxx
+++ b/sc/source/core/data/simpleformulacalc.cxx
@@ -29,7 +29,7 @@ ScSimpleFormulaCalculator::ScSimpleFormulaCalculator( ScDocument& rDoc, const Sc
, mbMatrixFormula(bMatrixFormula)
{
// compile already here
- ScCompiler aComp(&mrDoc, maAddr, eGram, true, bMatrixFormula);
+ ScCompiler aComp(mrDoc, maAddr, eGram, true, bMatrixFormula);
mpCode = aComp.CompileString(rFormula);
if(mpCode->GetCodeError() == FormulaError::NONE && mpCode->GetLen())
aComp.CompileTokenArray();
@@ -56,7 +56,7 @@ void ScSimpleFormulaCalculator::Calculate()
formula::StackVar aIntType = aInt.Interpret();
if ( aIntType == formula::svMatrixCell )
{
- ScCompiler aComp(&mrDoc, maAddr, maGram);
+ ScCompiler aComp(mrDoc, maAddr, maGram);
OUStringBuffer aStr;
aComp.CreateStringFromToken(aStr, aInt.GetResultToken().get());
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 59e4ff1480bf..a12e69ebad07 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -4385,7 +4385,7 @@ CLInterpreterContext createCLInterpreterContext( const ScCalcConfig& rConfig,
void genRPNTokens( ScDocument& rDoc, const ScAddress& rTopPos, ScTokenArray& rCode )
{
- ScCompiler aComp(&rDoc, rTopPos, rCode, rDoc.GetGrammar());
+ ScCompiler aComp(rDoc, rTopPos, rCode, rDoc.GetGrammar());
// Disable special ordering for jump commands for the OpenCL interpreter.
aComp.EnableJumpCommandReorder(false);
aComp.CompileTokenArray(); // Regenerate RPN tokens.
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 00602e665030..ab7077eca06e 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -1829,11 +1829,11 @@ ScCompiler::ScCompiler( sc::CompileFormulaContext& rCxt, const ScAddress& rPos,
SetGrammar(rCxt.getGrammar());
}
-ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos, ScTokenArray& rArr,
+ScCompiler::ScCompiler( ScDocument& rDocument, const ScAddress& rPos, ScTokenArray& rArr,
formula::FormulaGrammar::Grammar eGrammar,
bool bComputeII, bool bMatrixFlag, const ScInterpreterContext* pContext )
: FormulaCompiler(rArr, bComputeII, bMatrixFlag),
- pDoc( pDocument ),
+ pDoc( &rDocument ),
aPos( rPos ),
mpFormatter(pContext ? pContext->GetFormatTable() : pDoc->GetFormatTable()),
mpInterpreterContext(pContext),
@@ -1849,7 +1849,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos, ScTokenArr
mbRewind( false )
{
SetGrammar( (eGrammar == formula::FormulaGrammar::GRAM_UNSPECIFIED) ?
- pDocument->GetGrammar() :
+ rDocument.GetGrammar() :
eGrammar );
}
@@ -1874,11 +1874,11 @@ ScCompiler::ScCompiler( sc::CompileFormulaContext& rCxt, const ScAddress& rPos,
SetGrammar(rCxt.getGrammar());
}
-ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos,
+ScCompiler::ScCompiler( ScDocument& rDocument, const ScAddress& rPos,
formula::FormulaGrammar::Grammar eGrammar,
bool bComputeII, bool bMatrixFlag, const ScInterpreterContext* pContext )
: FormulaCompiler(bComputeII, bMatrixFlag),
- pDoc( pDocument ),
+ pDoc( &rDocument ),
aPos( rPos ),
mpFormatter(pContext ? pContext->GetFormatTable() : pDoc ? pDoc->GetFormatTable() : nullptr),
mpInterpreterContext(pContext),
@@ -1894,7 +1894,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos,
mbRewind( false )
{
SetGrammar( (eGrammar == formula::FormulaGrammar::GRAM_UNSPECIFIED) ?
- (pDocument ? pDocument->GetGrammar() : formula::FormulaGrammar::GRAM_DEFAULT) :
+ rDocument.GetGrammar() :
eGrammar );
}
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index 7e906aa18ea5..cc2c337f3930 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -2471,7 +2471,7 @@ void ScInterpreter::ScCellExternal()
// ODF 1.2 says we need to always display address using the ODF A1 grammar.
ScTokenArray aArray(mrDoc);
aArray.AddExternalSingleReference(nFileId, svl::SharedString( aTabName), aRef); // string not interned
- ScCompiler aComp(&mrDoc, aPos, aArray, formula::FormulaGrammar::GRAM_ODFF_A1);
+ ScCompiler aComp(mrDoc, aPos, aArray, formula::FormulaGrammar::GRAM_ODFF_A1);
OUString aStr;
aComp.CreateStringFromTokenArray(aStr);
PushString(aStr);
@@ -8193,7 +8193,7 @@ void ScInterpreter::ScIndirect()
{
do
{
- ScCompiler aComp( &mrDoc, aPos, mrDoc.GetGrammar());
+ ScCompiler aComp( mrDoc, aPos, mrDoc.GetGrammar());
aComp.SetRefConvention( eConv); // must be after grammar
std::unique_ptr<ScTokenArray> pTokArr( aComp.CompileString( sRefStr));
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index 639b7734da92..5f84aa08742f 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -116,7 +116,7 @@ ScRangeData::ScRangeData( ScDocument& rDok,
aRefData.SetFlag3D( true );
pCode->AddSingleReference( aRefData );
pCode->SetFromRangeName(true);
- ScCompiler aComp( &rDoc, aPos, *pCode, rDoc.GetGrammar() );
+ ScCompiler aComp( rDoc, aPos, *pCode, rDoc.GetGrammar() );
aComp.CompileTokenArray();
if ( pCode->GetCodeError() == FormulaError::NONE )
eType |= Type::AbsPos;
@@ -150,7 +150,7 @@ void ScRangeData::CompileRangeData( const OUString& rSymbol, bool bSetError )
eTempGrammar = FormulaGrammar::GRAM_NATIVE;
}
- ScCompiler aComp( &rDoc, aPos, eTempGrammar );
+ ScCompiler aComp( rDoc, aPos, eTempGrammar );
if (bSetError)
aComp.SetExtendedErrorDetection( ScCompiler::EXTENDED_ERROR_DETECTION_NAME_NO_BREAK);
pCode = aComp.CompileString( rSymbol );
@@ -245,14 +245,14 @@ void ScRangeData::GuessPosition()
void ScRangeData::GetSymbol( OUString& rSymbol, const FormulaGrammar::Grammar eGrammar ) const
{
- ScCompiler aComp(&rDoc, aPos, *pCode, eGrammar);
+ ScCompiler aComp(rDoc, aPos, *pCode, eGrammar);
aComp.CreateStringFromTokenArray( rSymbol );
}
void ScRangeData::GetSymbol( OUString& rSymbol, const ScAddress& rPos, const FormulaGrammar::Grammar eGrammar ) const
{
OUString aStr;
- ScCompiler aComp(&rDoc, rPos, *pCode, eGrammar);
+ ScCompiler aComp(rDoc, rPos, *pCode, eGrammar);
aComp.CreateStringFromTokenArray( aStr );
rSymbol = aStr;
}
@@ -260,7 +260,7 @@ void ScRangeData::GetSymbol( OUString& rSymbol, const ScAddress& rPos, const For
void ScRangeData::UpdateSymbol( OUStringBuffer& rBuffer, const ScAddress& rPos )
{
std::unique_ptr<ScTokenArray> pTemp( pCode->Clone() );
- ScCompiler aComp(&rDoc, rPos, *pTemp, formula::FormulaGrammar::GRAM_DEFAULT);
+ ScCompiler aComp(rDoc, rPos, *pTemp, formula::FormulaGrammar::GRAM_DEFAULT);
aComp.MoveRelWrap();
aComp.CreateStringFromTokenArray( rBuffer );
}
diff --git a/sc/source/core/tool/reftokenhelper.cxx b/sc/source/core/tool/reftokenhelper.cxx
index a1ae5510e2d3..1250061e0f53 100644
--- a/sc/source/core/tool/reftokenhelper.cxx
+++ b/sc/source/core/tool/reftokenhelper.cxx
@@ -51,7 +51,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
if (nOffset < 0)
break;
- ScCompiler aCompiler(&rDoc, ScAddress(0,0,0), eGrammar);
+ ScCompiler aCompiler(rDoc, ScAddress(0,0,0), eGrammar);
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(aToken));
// There MUST be exactly one reference per range token and nothing
diff --git a/sc/source/filter/excel/xechart.cxx b/sc/source/filter/excel/xechart.cxx
index 7d6ba12e0154..95ece38d976d 100644
--- a/sc/source/filter/excel/xechart.cxx
+++ b/sc/source/filter/excel/xechart.cxx
@@ -891,7 +891,7 @@ sal_uInt16 XclExpChSourceLink::ConvertDataSequence( Reference< XDataSequence > c
// Compile the range representation string into token array. Note that the
// source range text depends on the current grammar.
OUString aRangeRepr = xDataSeq->getSourceRangeRepresentation();
- ScCompiler aComp( &GetDoc(), ScAddress(), GetDoc().GetGrammar() );
+ ScCompiler aComp( GetDoc(), ScAddress(), GetDoc().GetGrammar() );
std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(aRangeRepr));
if( !pArray )
return nDefCount;
diff --git a/sc/source/filter/excel/xename.cxx b/sc/source/filter/excel/xename.cxx
index 5d32147ecb23..ed729725695d 100644
--- a/sc/source/filter/excel/xename.cxx
+++ b/sc/source/filter/excel/xename.cxx
@@ -641,7 +641,7 @@ sal_uInt16 XclExpNameManagerImpl::CreateName( SCTAB nTab, const ScRangeData& rRa
xTokArr = GetFormulaCompiler().CreateFormula(EXC_FMLATYPE_NAME, *pTokenCopy);
if ( GetOutput() != EXC_OUTPUT_BINARY )
{
- ScCompiler aComp(&GetDoc(), rRangeData.GetPos(), *pTokenCopy,
+ ScCompiler aComp(GetDoc(), rRangeData.GetPos(), *pTokenCopy,
formula::FormulaGrammar::GRAM_OOXML);
aComp.CreateStringFromTokenArray( sSymbol );
}
diff --git a/sc/source/filter/excel/xeroot.cxx b/sc/source/filter/excel/xeroot.cxx
index ef3e619ebe10..575aee0c540f 100644
--- a/sc/source/filter/excel/xeroot.cxx
+++ b/sc/source/filter/excel/xeroot.cxx
@@ -252,7 +252,7 @@ void XclExpRoot::InitializeGlobals()
SAL_WARN( "sc", "XclExpRoot::InitializeGlobals - no OpCodeMap");
break;
}
- ScCompiler aCompiler( &rDoc, ScAddress(), rDoc.GetGrammar());
+ ScCompiler aCompiler( rDoc, ScAddress(), rDoc.GetGrammar());
mrExpData.mxOpCodeMap = formula::FormulaCompiler::CreateOpCodeMap( aOpCodeMapping, true);
} while(false);
}
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 10650658d8be..4d74f16fc81b 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -836,7 +836,7 @@ Reference< XDataSequence > XclImpChSourceLink::CreateDataSequence( const OUStrin
{
if ( mxTokenArray )
{
- ScCompiler aComp( &GetDoc(), ScAddress(), *mxTokenArray, GetDoc().GetGrammar() );
+ ScCompiler aComp( GetDoc(), ScAddress(), *mxTokenArray, GetDoc().GetGrammar() );
OUStringBuffer aRangeRep;
aComp.CreateStringFromTokenArray( aRangeRep );
try
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx
index 467fba66e804..aa8a9b30139e 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -241,7 +241,7 @@ void DefinedName::createNameObject( sal_Int32 nIndex )
std::unique_ptr<ScTokenArray> DefinedName::getScTokens(
const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks )
{
- ScCompiler aCompiler(&getScDocument(), ScAddress(0, 0, mnCalcSheet), formula::FormulaGrammar::GRAM_OOXML);
+ ScCompiler aCompiler(getScDocument(), ScAddress(0, 0, mnCalcSheet), formula::FormulaGrammar::GRAM_OOXML);
aCompiler.SetExternalLinks( rExternalLinks);
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(maModel.maFormula));
// Compile the tokens into RPN once to populate information into tokens
diff --git a/sc/source/filter/oox/formulabuffer.cxx b/sc/source/filter/oox/formulabuffer.cxx
index 50e93944850a..e47fb744d281 100644
--- a/sc/source/filter/oox/formulabuffer.cxx
+++ b/sc/source/filter/oox/formulabuffer.cxx
@@ -115,7 +115,7 @@ void applySharedFormulas(
sal_Int32 nId = rEntry.mnSharedId;
const OUString& rTokenStr = rEntry.maTokenStr;
- ScCompiler aComp(&rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML, true, false);
+ ScCompiler aComp(rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML, true, false);
aComp.SetNumberFormatter(&rFormatter);
std::unique_ptr<ScTokenArray> pArray = aComp.CompileString(rTokenStr);
if (pArray)
@@ -234,7 +234,7 @@ void applyCellFormulas(
continue;
}
- ScCompiler aCompiler(&rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML, true, false);
+ ScCompiler aCompiler(rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML, true, false);
aCompiler.SetNumberFormatter(&rFormatter);
aCompiler.SetExternalLinks(rExternalLinks);
std::unique_ptr<ScTokenArray> pCode = aCompiler.CompileString(rItem.maTokenStr);
@@ -257,7 +257,7 @@ void applyArrayFormulas(
{
const ScAddress& aPos = rAddressItem.maTokenAndAddress.maAddress;
- ScCompiler aComp(&rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML);
+ ScCompiler aComp(rDoc.getDoc(), aPos, formula::FormulaGrammar::GRAM_OOXML);
aComp.SetNumberFormatter(&rFormatter);
std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(rAddressItem.maTokenAndAddress.maTokenStr));
if (pArray)
diff --git a/sc/source/filter/oox/revisionfragment.cxx b/sc/source/filter/oox/revisionfragment.cxx
index 72269cf8d3b3..537149108597 100644
--- a/sc/source/filter/oox/revisionfragment.cxx
+++ b/sc/source/filter/oox/revisionfragment.cxx
@@ -118,7 +118,7 @@ protected:
{
// formula string
ScDocument& rDoc = getScDocument();
- ScCompiler aComp(&rDoc, mrPos, formula::FormulaGrammar::GRAM_OOXML);
+ ScCompiler aComp(rDoc, mrPos, formula::FormulaGrammar::GRAM_OOXML);
std::unique_ptr<ScTokenArray> pArray = aComp.CompileString(rChars);
if (!pArray)
break;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 2b1b0aa459a0..ccce5bb9e436 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -496,7 +496,7 @@ void ScOrcusFactory::finalize()
aRange.aEnd.IncCol(rToken.mnIndex1-1);
aRange.aEnd.IncRow(rToken.mnIndex2-1);
- ScCompiler aComp(&maDoc.getDoc(), aRange.aStart, rToken.meGrammar);
+ ScCompiler aComp(maDoc.getDoc(), aRange.aStart, rToken.meGrammar);
std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(rToken.maStr1));
if (!pArray)
break;
@@ -1010,7 +1010,7 @@ void ScOrcusFormula::commit()
// topmost shared formula with new formula token.
// Compile the formula expression into tokens.
- ScCompiler aComp(&mrSheet.getDoc().getDoc(), aPos, meGrammar);
+ ScCompiler aComp(mrSheet.getDoc().getDoc(), aPos, meGrammar);
std::unique_ptr<ScTokenArray> pArray = aComp.CompileString(maFormula);
if (!pArray)
// Tokenization failed.
diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx
index 318e7c079458..6344714fff3a 100644
--- a/sc/source/filter/xml/xmlcondformat.cxx
+++ b/sc/source/filter/xml/xmlcondformat.cxx
@@ -231,6 +231,7 @@ static bool HasOneSingleFullyRelativeReference( const ScTokenArray* pTokens, ScS
void SAL_CALL ScXMLConditionalFormatContext::endFastElement( sal_Int32 /*nElement*/ )
{
ScDocument* pDoc = GetScImport().GetDocument();
+ assert(pDoc);
SCTAB nTab = GetScImport().GetTables().GetCurrentSheet();
std::unique_ptr<ScConditionalFormat> pFormat(std::move(mxFormat));
@@ -256,7 +257,7 @@ void SAL_CALL ScXMLConditionalFormatContext::endFastElement( sal_Int32 /*nElemen
OUString aSrcString = pCondFormatEntry->GetSrcString();
if ( !aSrcString.isEmpty() )
aSrcPos.Parse( aSrcString, pDoc );
- ScCompiler aComp( pDoc, aSrcPos );
+ ScCompiler aComp( *pDoc, aSrcPos );
aComp.SetGrammar( formula::FormulaGrammar::GRAM_ODFF );
pTokens = aComp.CompileString( pCondFormatEntry->GetExpression(aSrcPos, 0), "" );
if (HasRelRefIgnoringSheet0Relative( pDoc, pTokens.get() ))
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index 142d794c26da..f4c90522d324 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -1350,7 +1350,7 @@ void SAL_CALL ScXMLImport::setTargetDocument( const css::uno::Reference< css::la
throw lang::IllegalArgumentException();
mpDocImport.reset(new ScDocumentImport(*pDoc));
- mpComp.reset(new ScCompiler(pDoc, ScAddress(), formula::FormulaGrammar::GRAM_ODFF));
+ mpComp.reset(new ScCompiler(*pDoc, ScAddress(), formula::FormulaGrammar::GRAM_ODFF));
uno::Reference<document::XActionLockable> xActionLockable(xDoc, uno::UNO_QUERY);
if (xActionLockable.is())
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 8794f70eefa6..6712b3c97930 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -107,7 +107,7 @@ const sal_Unicode cParenthesesReplacement = 0x0001;
sal_Unicode lcl_getSheetSeparator(ScDocument* pDoc)
{
- ScCompiler aComp(pDoc, ScAddress(), pDoc->GetGrammar());
+ ScCompiler aComp(*pDoc, ScAddress(), pDoc->GetGrammar());
return aComp.GetNativeAddressSymbol(ScCompiler::Convention::SHEET_SEPARATOR);
}
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index 5836221cba22..fc2f19cd7559 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -254,7 +254,7 @@ IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, formula::RefEdit&, rRefEdit, void)
return;
}
- ScCompiler aComp( mpDoc, maPos, mpDoc->GetGrammar() );
+ ScCompiler aComp( *mpDoc, maPos, mpDoc->GetGrammar() );
std::unique_ptr<ScTokenArray> ta(aComp.CompileString(aFormula));
// Error, warn the user
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index a3bfe3096566..e70b6c7c1c02 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -4367,7 +4367,7 @@ bool ScDocFunc::EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark,
}
else if (bEnglish)
{
- ScCompiler aComp( &rDoc, rRange.aStart, eGrammar);
+ ScCompiler aComp( rDoc, rRange.aStart, eGrammar);
std::unique_ptr<ScTokenArray> pCode = aComp.CompileString( rString );
rDoc.InsertMatrixFormula( nStartCol, nStartRow, nEndCol, nEndRow,
aMark, EMPTY_OUSTRING, pCode.get(), eGrammar);
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index b4beea0c2f3d..4bae9f2a798b 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -1943,7 +1943,7 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
* R1C1 is what Excel writes in SYLK, or even
* better GRAM_ENGLISH_XL_R1C1. */
const formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_PODF_A1;
- ScCompiler aComp( &rDoc, aPos, eGrammar);
+ ScCompiler aComp(rDoc, aPos, eGrammar);
std::unique_ptr<ScTokenArray> xCode(aComp.CompileString(aText)); // ctor/InsertMatrixFormula did copy TokenArray
rDoc.CheckLinkFormulaNeedingCheck(*xCode);
if ( ch == 'M' )
diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx
index b1d703ecd60f..36a8905fa10e 100644
--- a/sc/source/ui/formdlg/formula.cxx
+++ b/sc/source/ui/formdlg/formula.cxx
@@ -363,7 +363,7 @@ bool ScFormulaDlg::calculateValue( const OUString& rStrExp, OUString& rStrResult
std::shared_ptr<formula::FormulaCompiler> ScFormulaDlg::getCompiler() const
{
if (!m_xCompiler)
- m_xCompiler = std::make_shared<ScCompiler>( m_pDoc, m_CursorPos, m_pDoc->GetGrammar());
+ m_xCompiler = std::make_shared<ScCompiler>(*m_pDoc, m_CursorPos, m_pDoc->GetGrammar());
return m_xCompiler;
}
@@ -373,7 +373,7 @@ std::unique_ptr<formula::FormulaCompiler> ScFormulaDlg::createCompiler( formula:
ScTokenArray* pArr = dynamic_cast<ScTokenArray*>(&rArray);
assert(pArr); // violation of contract and not created using convertToTokenArray()?
if (pArr)
- pCompiler = new ScCompiler( m_pDoc, m_CursorPos, *pArr, m_pDoc->GetGrammar());
+ pCompiler = new ScCompiler(*m_pDoc, m_CursorPos, *pArr, m_pDoc->GetGrammar());
return std::unique_ptr<formula::FormulaCompiler>(pCompiler);
}
@@ -464,7 +464,7 @@ void ScFormulaDlg::SetReference( const ScRange& rRef, ScDocument& rRefDoc )
aArray.AddSingleReference(aRefData.Ref1);
else
aArray.AddDoubleReference(aRefData);
- ScCompiler aComp(m_pDoc, m_CursorPos, aArray, m_pDoc->GetGrammar());
+ ScCompiler aComp(*m_pDoc, m_CursorPos, aArray, m_pDoc->GetGrammar());
OUStringBuffer aBuf;
aComp.CreateStringFromTokenArray(aBuf);
aRefStr = aBuf.makeStringAndClear();
diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx
index 968bb5f4cf69..a30218118bcc 100644
--- a/sc/source/ui/miscdlgs/anyrefdg.cxx
+++ b/sc/source/ui/miscdlgs/anyrefdg.cxx
@@ -325,7 +325,7 @@ void ScFormulaReferenceHelper::Init()
SCTAB nTab = pViewData->GetTabNo();
ScAddress aCursorPos( nCol, nRow, nTab );
- m_pRefComp.reset( new ScCompiler( &rDoc, aCursorPos, rDoc.GetGrammar()) );
+ m_pRefComp.reset( new ScCompiler( rDoc, aCursorPos, rDoc.GetGrammar()) );
m_pRefComp->EnableJumpCommandReorder(false);
m_pRefComp->EnableStopOnError(false);
diff --git a/sc/source/ui/namedlg/namedefdlg.cxx b/sc/source/ui/namedlg/namedefdlg.cxx
index fe1db9e5a1aa..c5404c634ac4 100644
--- a/sc/source/ui/namedlg/namedefdlg.cxx
+++ b/sc/source/ui/namedlg/namedefdlg.cxx
@@ -103,7 +103,7 @@ void ScNameDefDlg::CancelPushed()
bool ScNameDefDlg::IsFormulaValid()
{
- ScCompiler aComp( &mrDoc, maCursorPos, mrDoc.GetGrammar());
+ ScCompiler aComp(mrDoc, maCursorPos, mrDoc.GetGrammar());
std::unique_ptr<ScTokenArray> pCode = aComp.CompileString(m_xEdRange->GetText());
if (pCode->GetCodeError() != FormulaError::NONE)
{
diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx
index 6ba2852a1122..85e391890182 100644
--- a/sc/source/ui/namedlg/namedlg.cxx
+++ b/sc/source/ui/namedlg/namedlg.cxx
@@ -266,7 +266,7 @@ bool ScNameDlg::IsNameValid()
bool ScNameDlg::IsFormulaValid()
{
- ScCompiler aComp( &mrDoc, maCursorPos, mrDoc.GetGrammar());
+ ScCompiler aComp(mrDoc, maCursorPos, mrDoc.GetGrammar());
std::unique_ptr<ScTokenArray> pCode = aComp.CompileString(m_xEdAssign->GetText());
if (pCode->GetCodeError() != FormulaError::NONE)
{
diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx
index a888ebc4ccbe..2d3a61972efa 100644
--- a/sc/source/ui/unoobj/chart2uno.cxx
+++ b/sc/source/ui/unoobj/chart2uno.cxx
@@ -824,7 +824,7 @@ public:
void operator() (const ScTokenRef& rToken)
{
- ScCompiler aCompiler(mpDoc, ScAddress(0,0,0), meGrammar);
+ ScCompiler aCompiler(*mpDoc, ScAddress(0,0,0), meGrammar);
OUString aStr;
aCompiler.CreateStringFromToken(aStr, rToken.get());
if (mbFirst)
@@ -877,7 +877,7 @@ public:
OSL_ENSURE(bValidToken, "invalid token");
if (!bValidToken)
return;
- ScCompiler aCompiler(mpDoc, ScAddress(0,0,0), FormulaGrammar::GRAM_ENGLISH);
+ ScCompiler aCompiler(*mpDoc, ScAddress(0,0,0), FormulaGrammar::GRAM_ENGLISH);
{
OUString aStr;
aCompiler.CreateStringFromToken(aStr, aStart.get());
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index ed037323e819..241c443d040d 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -720,7 +720,7 @@ void SAL_CALL ScConditionEntryObj::setPropertyValue(
OUString aFormula;
if ((aValue >>= aFormula) && !aFormula.isEmpty())
{
- ScCompiler aComp(&mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
+ ScCompiler aComp(mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
aComp.SetGrammar(mpDocShell->GetDocument().GetGrammar());
std::unique_ptr<ScTokenArray> pArr(aComp.CompileString(aFormula));
getCoreObject()->SetFormula1(*pArr);
@@ -732,7 +732,7 @@ void SAL_CALL ScConditionEntryObj::setPropertyValue(
OUString aFormula;
if ((aValue >>= aFormula) && !aFormula.isEmpty())
{
- ScCompiler aComp(&mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
+ ScCompiler aComp(mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
aComp.SetGrammar(mpDocShell->GetDocument().GetGrammar());
std::unique_ptr<ScTokenArray> pArr(aComp.CompileString(aFormula));
getCoreObject()->SetFormula2(*pArr);
diff --git a/sc/source/ui/unoobj/funcuno.cxx b/sc/source/ui/unoobj/funcuno.cxx
index 7e853fea6f07..89ea794a3583 100644
--- a/sc/source/ui/unoobj/funcuno.cxx
+++ b/sc/source/ui/unoobj/funcuno.cxx
@@ -467,7 +467,7 @@ uno::Any SAL_CALL ScFunctionAccess::callFunction( const OUString& aName,
/// TODO: check
ScAddress aAdr;
- ScCompiler aCompiler(pDoc, aAdr, pDoc->GetGrammar());
+ ScCompiler aCompiler(*pDoc, aAdr, pDoc->GetGrammar());
// find function
diff --git a/sc/source/ui/unoobj/servuno.cxx b/sc/source/ui/unoobj/servuno.cxx
index 3a009a977bef..b3e650d5d41e 100644
--- a/sc/source/ui/unoobj/servuno.cxx
+++ b/sc/source/ui/unoobj/servuno.cxx
@@ -558,7 +558,7 @@ uno::Reference<uno::XInterface> ScServiceProvider::MakeInstance(
{
ScDocument& rDoc = pDocShell->GetDocument();
ScAddress aAddress;
- ScCompiler* pComp = new ScCompiler(&rDoc, aAddress, rDoc.GetGrammar());
+ ScCompiler* pComp = new ScCompiler(rDoc, aAddress, rDoc.GetGrammar());
xRet.set(static_cast<sheet::XFormulaOpCodeMapper*>(new ScFormulaOpCodeMapperObj(::std::unique_ptr<formula::FormulaCompiler> (pComp))));
break;
}
diff --git a/sc/source/ui/unoobj/tokenuno.cxx b/sc/source/ui/unoobj/tokenuno.cxx
index 713d924e28c7..4f461777c056 100644
--- a/sc/source/ui/unoobj/tokenuno.cxx
+++ b/sc/source/ui/unoobj/tokenuno.cxx
@@ -135,7 +135,7 @@ uno::Sequence<sheet::FormulaToken> SAL_CALL ScFormulaParserObj::parseFormula(
ScAddress aRefPos( ScAddress::UNINITIALIZED );
ScUnoConversion::FillScAddress( aRefPos, rReferencePos );
- ScCompiler aCompiler( &rDoc, aRefPos, rDoc.GetGrammar());
+ ScCompiler aCompiler( rDoc, aRefPos, rDoc.GetGrammar());
SetCompilerFlags( aCompiler );
std::unique_ptr<ScTokenArray> pCode = aCompiler.CompileString( aFormula );
@@ -158,7 +158,7 @@ OUString SAL_CALL ScFormulaParserObj::printFormula(
(void)ScTokenConversion::ConvertToTokenArray( rDoc, aCode, aTokens );
ScAddress aRefPos( ScAddress::UNINITIALIZED );
ScUnoConversion::FillScAddress( aRefPos, rReferencePos );
- ScCompiler aCompiler( &rDoc, aRefPos, aCode, rDoc.GetGrammar());
+ ScCompiler aCompiler(rDoc, aRefPos, aCode, rDoc.GetGrammar());
SetCompilerFlags( aCompiler );
OUStringBuffer aBuffer;
@@ -198,7 +198,7 @@ void SAL_CALL ScFormulaParserObj::setPropertyValue(
if (mxOpCodeMap && mbEnglish != bOldEnglish)
{
ScDocument& rDoc = mpDocShell->GetDocument();
- ScCompiler aCompiler( &rDoc, ScAddress(), rDoc.GetGrammar());
+ ScCompiler aCompiler( rDoc, ScAddress(), rDoc.GetGrammar());
mxOpCodeMap = formula::FormulaCompiler::CreateOpCodeMap( maOpCodeMapping, mbEnglish);
}
@@ -217,7 +217,7 @@ void SAL_CALL ScFormulaParserObj::setPropertyValue(
throw lang::IllegalArgumentException();
ScDocument& rDoc = mpDocShell->GetDocument();
- ScCompiler aCompiler( &rDoc, ScAddress(), rDoc.GetGrammar());
+ ScCompiler aCompiler(rDoc, ScAddress(), rDoc.GetGrammar());
mxOpCodeMap = formula::FormulaCompiler::CreateOpCodeMap( maOpCodeMapping, mbEnglish);
}
diff --git a/sc/source/ui/vba/vbaname.cxx b/sc/source/ui/vba/vbaname.cxx
index 45e88a4c1395..5f923da844dd 100644
--- a/sc/source/ui/vba/vbaname.cxx
+++ b/sc/source/ui/vba/vbaname.cxx
@@ -114,7 +114,7 @@ void ScVbaName::setContent( const OUString& rContent, const formula::FormulaGra
if (pOldData)
{
// Shorter way of doing this ?
- ScCompiler aComp( &rDoc, pOldData->GetPos(), eGrammar );
+ ScCompiler aComp( rDoc, pOldData->GetPos(), eGrammar );
std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(sContent));
pOldData->SetCode(*pArray);
}
diff --git a/sc/source/ui/vba/vbanames.cxx b/sc/source/ui/vba/vbanames.cxx
index 1b498536ad9f..79a7a80ab68c 100644
--- a/sc/source/ui/vba/vbanames.cxx
+++ b/sc/source/ui/vba/vbanames.cxx
@@ -149,7 +149,7 @@ ScVbaNames::Add( const css::uno::Any& Name ,
if ( !xRange.is() && !sFormula.isEmpty() )
{
ScAddress aBlank;
- ScCompiler aComp( &getScDocument(), aBlank, eGram );
+ ScCompiler aComp( getScDocument(), aBlank, eGram );
std::unique_ptr<ScTokenArray> pTokens(aComp.CompileString(sFormula));
if ( pTokens )
{
diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx
index 0efbaa4965b9..9624c8ae15a4 100644
--- a/sc/source/ui/vba/vbarange.cxx
+++ b/sc/source/ui/vba/vbarange.cxx
@@ -877,7 +877,7 @@ protected:
if ( pUnoRangesBase )
{
ScRangeList aCellRanges = pUnoRangesBase->GetRangeList();
- ScCompiler aCompiler( &m_rDoc, aCellRanges.front().aStart, m_eGrammar );
+ ScCompiler aCompiler( m_rDoc, aCellRanges.front().aStart, m_eGrammar );
// compile the string in the format passed in
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(sFormula));
// set desired convention to that of the document
@@ -920,7 +920,7 @@ public:
pUnoRangesBase )
{
ScRangeList aCellRanges = pUnoRangesBase->GetRangeList();
- ScCompiler aCompiler( &m_rDoc, aCellRanges.front().aStart, formula::FormulaGrammar::GRAM_DEFAULT );
+ ScCompiler aCompiler( m_rDoc, aCellRanges.front().aStart, formula::FormulaGrammar::GRAM_DEFAULT );
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(sVal));
// set desired convention
aCompiler.SetGrammar( m_eGrammar );
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index 3a1e19672f97..6abcb03825d8 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -604,7 +604,7 @@ bool ScTabViewShell::IsRefInputMode() const
const ScViewData& rViewData = GetViewData();
ScDocument& rDoc = rViewData.GetDocument();
const ScAddress aPos( rViewData.GetCurPos() );
- ScCompiler aComp( &rDoc, aPos, rDoc.GetGrammar() );
+ ScCompiler aComp( rDoc, aPos, rDoc.GetGrammar() );
aComp.SetCloseBrackets( false );
std::unique_ptr<ScTokenArray> pArr(aComp.CompileString(aString));
if ( pArr && pArr->MayReferenceFollow() )
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index fcf925afaad9..2bdd53892bf3 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -838,7 +838,7 @@ OUString ScViewFunc::GetAutoSumFormula( const ScRangeList& rRangeList, bool bSub
pArray->AddOpCode(ocClose);
- ScCompiler aComp(&rDoc, rAddr, *pArray, rDoc.GetGrammar());
+ ScCompiler aComp(rDoc, rAddr, *pArray, rDoc.GetGrammar());
OUStringBuffer aBuf;
aComp.CreateStringFromTokenArray(aBuf);
OUString aFormula = aBuf.makeStringAndClear();
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
index 24dd97e9ba9e..c3bb7fff8f9e 100644
--- a/sc/source/ui/view/viewfun4.cxx
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -264,7 +264,7 @@ void ScViewFunc::DoRefConversion()
{
ScAddress aPos = pCell->aPos;
const OUString& aNew = aFinder.GetText();
- ScCompiler aComp( &rDoc, aPos, rDoc.GetGrammar());
+ ScCompiler aComp( rDoc, aPos, rDoc.GetGrammar());
std::unique_ptr<ScTokenArray> pArr(aComp.CompileString(aNew));
ScFormulaCell* pNewCell =
new ScFormulaCell(
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index fd9650c149c0..31a357325aa5 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -405,7 +405,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab,
{ // formula, compile with autoCorrection
i = rMark.GetFirstSelected();
ScAddress aPos( nCol, nRow, i );
- ScCompiler aComp( &rDoc, aPos, rDoc.GetGrammar(), true, false );
+ ScCompiler aComp( rDoc, aPos, rDoc.GetGrammar(), true, false );
//2do: enable/disable autoCorrection via calcoptions
aComp.SetAutoCorrection( true );
if ( rString[0] == '+' || rString[0] == '-' )