summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/token.hxx56
-rw-r--r--sc/qa/unit/ucalc.cxx8
-rw-r--r--sc/qa/unit/ucalc_sharedformula.cxx2
-rw-r--r--sc/source/core/data/colorscale.cxx6
-rw-r--r--sc/source/core/data/conditio.cxx8
-rw-r--r--sc/source/core/data/documen4.cxx6
-rw-r--r--sc/source/core/data/documentimport.cxx4
-rw-r--r--sc/source/core/data/formulacell.cxx58
-rw-r--r--sc/source/core/data/formulaiter.cxx4
-rw-r--r--sc/source/core/data/grouptokenconverter.cxx4
-rw-r--r--sc/source/core/tool/chgtrack.cxx4
-rw-r--r--sc/source/core/tool/compiler.cxx22
-rw-r--r--sc/source/core/tool/interpr1.cxx4
-rw-r--r--sc/source/core/tool/interpr2.cxx12
-rw-r--r--sc/source/core/tool/interpr4.cxx20
-rw-r--r--sc/source/core/tool/rangenam.cxx12
-rw-r--r--sc/source/core/tool/reftokenhelper.cxx16
-rw-r--r--sc/source/core/tool/token.cxx245
-rw-r--r--sc/source/filter/excel/xechart.cxx2
-rw-r--r--sc/source/filter/excel/xeformula.cxx12
-rw-r--r--sc/source/filter/excel/xelink.cxx4
-rw-r--r--sc/source/filter/excel/xetable.cxx6
-rw-r--r--sc/source/filter/excel/xichart.cxx2
-rw-r--r--sc/source/filter/excel/xlformula.cxx2
-rw-r--r--sc/source/ui/docshell/externalrefmgr.cxx8
-rw-r--r--sc/source/ui/miscdlgs/anyrefdg.cxx4
-rw-r--r--sc/source/ui/unoobj/chart2uno.cxx34
-rw-r--r--sc/source/ui/unoobj/tokenuno.cxx14
28 files changed, 279 insertions, 300 deletions
diff --git a/sc/inc/token.hxx b/sc/inc/token.hxx
index 54c5dc7f1427..72db3651f230 100644
--- a/sc/inc/token.hxx
+++ b/sc/inc/token.hxx
@@ -78,12 +78,12 @@ public:
Any other non-overloaded method pops up an assertion.
*/
- virtual const ScSingleRefData& GetSingleRef() const;
- virtual ScSingleRefData& GetSingleRef();
- virtual const ScComplexRefData& GetDoubleRef() const;
- virtual ScComplexRefData& GetDoubleRef();
- virtual const ScSingleRefData& GetSingleRef2() const;
- virtual ScSingleRefData& GetSingleRef2();
+ virtual const ScSingleRefData* GetSingleRef() const;
+ virtual ScSingleRefData* GetSingleRef();
+ virtual const ScComplexRefData* GetDoubleRef() const;
+ virtual ScComplexRefData* GetDoubleRef();
+ virtual const ScSingleRefData* GetSingleRef2() const;
+ virtual ScSingleRefData* GetSingleRef2();
virtual const ScMatrix* GetMatrix() const;
virtual ScMatrix* GetMatrix();
virtual ScJumpMatrix* GetJumpMatrix() const;
@@ -128,8 +128,8 @@ public:
ScToken( formula::svSingleRef, e ), aSingleRef( r ) {}
ScSingleRefToken( const ScSingleRefToken& r ) :
ScToken( r ), aSingleRef( r.aSingleRef ) {}
- virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScSingleRefToken(*this); }
@@ -152,12 +152,12 @@ public:
}
ScDoubleRefToken( const ScDoubleRefToken& r ) :
ScToken( r ), aDoubleRef( r.aDoubleRef ) {}
- virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE;
- virtual const ScComplexRefData& GetDoubleRef() const SAL_OVERRIDE;
- virtual ScComplexRefData& GetDoubleRef() SAL_OVERRIDE;
- virtual const ScSingleRefData& GetSingleRef2() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef2() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
+ virtual const ScComplexRefData* GetDoubleRef() const SAL_OVERRIDE;
+ virtual ScComplexRefData* GetDoubleRef() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef2() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef2() SAL_OVERRIDE;
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScDoubleRefToken(*this); }
@@ -196,8 +196,8 @@ public:
virtual sal_uInt8 GetByte() const SAL_OVERRIDE;
virtual const ScMatrix* GetMatrix() const SAL_OVERRIDE;
virtual ScMatrix* GetMatrix() SAL_OVERRIDE;
- virtual const ScComplexRefData& GetDoubleRef() const SAL_OVERRIDE;
- virtual ScComplexRefData& GetDoubleRef() SAL_OVERRIDE;
+ virtual const ScComplexRefData* GetDoubleRef() const SAL_OVERRIDE;
+ virtual ScComplexRefData* GetDoubleRef() SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE;
};
@@ -216,8 +216,8 @@ public:
virtual sal_uInt16 GetIndex() const SAL_OVERRIDE;
virtual svl::SharedString GetString() const SAL_OVERRIDE;
- virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScExternalSingleRefToken(*this); }
};
@@ -236,12 +236,12 @@ public:
virtual sal_uInt16 GetIndex() const SAL_OVERRIDE;
virtual svl::SharedString GetString() const SAL_OVERRIDE;
- virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE;
- virtual const ScSingleRefData& GetSingleRef2() const SAL_OVERRIDE;
- virtual ScSingleRefData& GetSingleRef2() SAL_OVERRIDE;
- virtual const ScComplexRefData& GetDoubleRef() const SAL_OVERRIDE;
- virtual ScComplexRefData& GetDoubleRef() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
+ virtual const ScSingleRefData* GetSingleRef2() const SAL_OVERRIDE;
+ virtual ScSingleRefData* GetSingleRef2() SAL_OVERRIDE;
+ virtual const ScComplexRefData* GetDoubleRef() const SAL_OVERRIDE;
+ virtual ScComplexRefData* GetDoubleRef() SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScExternalDoubleRefToken(*this); }
};
@@ -431,14 +431,14 @@ public:
formula::StackVar eType = rT.GetType();
if ( eType == formula::svSingleRef || eType == formula::svExternalSingleRef )
{
- pS = &rT.GetSingleRef();
+ pS = rT.GetSingleRef();
aDub.Ref1 = aDub.Ref2 = *pS;
pD = &aDub;
}
else
{
pS = 0;
- pD = &rT.GetDoubleRef();
+ pD = rT.GetDoubleRef();
}
}
SingleDoubleRefModifier( ScSingleRefData& rS )
@@ -463,10 +463,10 @@ public:
const ScSingleRefData& Ref2;
SingleDoubleRefProvider( const ScToken& r )
- : Ref1( r.GetSingleRef() ),
+ : Ref1( *r.GetSingleRef() ),
Ref2( (r.GetType() == formula::svDoubleRef ||
r.GetType() == formula::svExternalDoubleRef) ?
- r.GetDoubleRef().Ref2 : Ref1 )
+ r.GetDoubleRef()->Ref2 : Ref1 )
{}
SingleDoubleRefProvider( const ScSingleRefData& r )
: Ref1( r ), Ref2( r )
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index d321617ea5ba..7258326a7375 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1274,7 +1274,7 @@ bool checkRelativeRefToken(ScDocument& rDoc, const ScAddress& rPos, SCsCOL nRelC
if (!pToken)
return false;
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (!rRef.IsColRel() || rRef.Col() != nRelCol)
{
cerr << "Unexpected relative column address." << endl;
@@ -1296,7 +1296,7 @@ bool checkDeletedRefToken(ScDocument& rDoc, const ScAddress& rPos)
if (!pToken)
return false;
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (!rRef.IsDeleted())
{
cerr << "Deleted reference is expected, but it's still a valid reference." << endl;
@@ -4189,7 +4189,7 @@ bool hasRange(const std::vector<ScTokenRef>& rRefTokens, const ScRange& rRange,
{
case formula::svSingleRef:
{
- ScSingleRefData aData = p->GetSingleRef();
+ ScSingleRefData aData = *p->GetSingleRef();
if (rRange.aStart != rRange.aEnd)
break;
@@ -4200,7 +4200,7 @@ bool hasRange(const std::vector<ScTokenRef>& rRefTokens, const ScRange& rRange,
break;
case formula::svDoubleRef:
{
- ScComplexRefData aData = p->GetDoubleRef();
+ ScComplexRefData aData = *p->GetDoubleRef();
ScRange aThis = aData.toAbs(rPos);
if (aThis == rRange)
return true;
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index d6ccdc53b4b2..e4e1a12d9b69 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -874,7 +874,7 @@ void Test::testSharedFormulasDeleteColumns()
CPPUNIT_ASSERT(pCode && pCode->GetLen() == 1);
const FormulaToken* pToken = pCode->GetArray()[0];
CPPUNIT_ASSERT(pToken->GetType() == svSingleRef);
- const ScSingleRefData* pSRef = &static_cast<const ScToken*>(pToken)->GetSingleRef();
+ const ScSingleRefData* pSRef = static_cast<const ScToken*>(pToken)->GetSingleRef();
CPPUNIT_ASSERT(pSRef->IsColDeleted());
CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), pSRef->toAbs(ScAddress(1,0,0)).Row());
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index d4726956b3bb..809c186717d0 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -55,7 +55,7 @@ void ScFormulaListener::startListening(ScTokenArray* pArr, const ScAddress& rPos
{
case formula::svSingleRef:
{
- ScAddress aCell = t->GetSingleRef().toAbs(rPos);
+ ScAddress aCell = t->GetSingleRef()->toAbs(rPos);
if (aCell.IsValid())
mpDoc->StartListeningCell(aCell, this);
@@ -64,8 +64,8 @@ void ScFormulaListener::startListening(ScTokenArray* pArr, const ScAddress& rPos
break;
case formula::svDoubleRef:
{
- const ScSingleRefData& rRef1 = t->GetSingleRef();
- const ScSingleRefData& rRef2 = t->GetSingleRef2();
+ const ScSingleRefData& rRef1 = *t->GetSingleRef();
+ const ScSingleRefData& rRef2 = *t->GetSingleRef2();
ScAddress aCell1 = rRef1.toAbs(rPos);
ScAddress aCell2 = rRef2.toAbs(rPos);
if (aCell1.IsValid() && aCell2.IsValid())
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 10170970e4ca..f9a979606b15 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -89,7 +89,7 @@ static bool lcl_HasRelRef( ScDocument* pDoc, ScTokenArray* pFormula, sal_uInt16
{
case svDoubleRef:
{
- ScSingleRefData& rRef2 = static_cast<ScToken*>(t)->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = static_cast<ScToken*>(t)->GetDoubleRef()->Ref2;
if ( rRef2.IsColRel() || rRef2.IsRowRel() || rRef2.IsTabRel() )
return true;
}
@@ -97,7 +97,7 @@ static bool lcl_HasRelRef( ScDocument* pDoc, ScTokenArray* pFormula, sal_uInt16
case svSingleRef:
{
- ScSingleRefData& rRef1 = static_cast<ScToken*>(t)->GetSingleRef();
+ ScSingleRefData& rRef1 = *static_cast<ScToken*>(t)->GetSingleRef();
if ( rRef1.IsColRel() || rRef1.IsRowRel() || rRef1.IsTabRel() )
return true;
}
@@ -1452,7 +1452,7 @@ ScAddress ScConditionEntry::GetValidSrcPos() const
ScToken* t;
while ( ( t = static_cast<ScToken*>(pFormula->GetNextReference()) ) != NULL )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScSingleRefData& rRef1 = *t->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(aSrcPos);
if (!rRef1.IsTabDeleted())
{
@@ -1463,7 +1463,7 @@ ScAddress ScConditionEntry::GetValidSrcPos() const
}
if ( t->GetType() == svDoubleRef )
{
- ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = t->GetDoubleRef()->Ref2;
aAbs = rRef2.toAbs(aSrcPos);
if (!rRef2.IsTabDeleted())
{
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index ba3c19e27255..14493e9887fd 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -320,7 +320,7 @@ void ScDocument::InsertMatrixFormula(SCCOL nCol1, SCROW nRow1,
if (nTab != nTab1)
{
aRefData.SetRelTab(nTab - aBasePos.Tab());
- t->GetSingleRef() = aRefData;
+ *t->GetSingleRef() = aRefData;
}
for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
@@ -335,7 +335,7 @@ void ScDocument::InsertMatrixFormula(SCCOL nCol1, SCROW nRow1,
aPos = ScAddress(nCol, nRow, nTab);
// Reference in each cell must point to the origin cell relative to the current cell.
aRefData.SetAddress(aBasePos, aPos);
- t->GetSingleRef() = aRefData;
+ *t->GetSingleRef() = aRefData;
boost::scoped_ptr<ScTokenArray> pTokArr(aArr.Clone());
pCell = new ScFormulaCell(this, aPos, *pTokArr, eGram, MM_REFERENCE);
pTab->SetFormulaCell(nCol, nRow, pCell);
@@ -447,7 +447,7 @@ bool setCacheTableReferenced(ScToken& rToken, ScExternalRefManager& rRefMgr, con
rToken.GetIndex(), rToken.GetString().getString(), 1);
case svExternalDoubleRef:
{
- const ScComplexRefData& rRef = rToken.GetDoubleRef();
+ const ScComplexRefData& rRef = *rToken.GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
size_t nSheets = aAbs.aEnd.Tab() - aAbs.aStart.Tab() + 1;
return rRefMgr.setCacheTableReferenced(
diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx
index 625b92f7aa62..a336e71f711e 100644
--- a/sc/source/core/data/documentimport.cxx
+++ b/sc/source/core/data/documentimport.cxx
@@ -331,7 +331,7 @@ void ScDocumentImport::setMatrixCells(
aPos.SetRow(nRow);
// Reference in each cell must point to the origin cell relative to the current cell.
aRefData.SetAddress(rBasePos, aPos);
- t->GetSingleRef() = aRefData;
+ *t->GetSingleRef() = aRefData;
boost::scoped_ptr<ScTokenArray> pTokArr(aArr.Clone());
pCell = new ScFormulaCell(&mpImpl->mrDoc, aPos, *pTokArr, eGram, MM_REFERENCE);
pBlockPos->miCellPos =
@@ -351,7 +351,7 @@ void ScDocumentImport::setMatrixCells(
{
aPos.SetRow(nRow);
aRefData.SetAddress(rBasePos, aPos);
- t->GetSingleRef() = aRefData;
+ *t->GetSingleRef() = aRefData;
boost::scoped_ptr<ScTokenArray> pTokArr(aArr.Clone());
pCell = new ScFormulaCell(&mpImpl->mrDoc, aPos, *pTokArr, eGram, MM_REFERENCE);
pBlockPos->miCellPos =
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index c902788603ba..f1fea0e5e194 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -866,7 +866,7 @@ void ScFormulaCell::GetFormula( OUStringBuffer& rBuffer,
* GetEnglishFormula() omitted that test.
* Can we live without in all cases? */
ScFormulaCell* pCell = NULL;
- ScSingleRefData& rRef = p->GetSingleRef();
+ ScSingleRefData& rRef = *p->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (ValidAddress(aAbs))
pCell = pDocument->GetFormulaCell(aAbs);
@@ -930,7 +930,7 @@ OUString ScFormulaCell::GetFormula( sc::CompileFormulaContext& rCxt ) const
* GetEnglishFormula() omitted that test.
* Can we live without in all cases? */
ScFormulaCell* pCell = NULL;
- ScSingleRefData& rRef = p->GetSingleRef();
+ ScSingleRefData& rRef = *p->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (ValidAddress(aAbs))
pCell = pDocument->GetFormulaCell(aAbs);
@@ -2337,7 +2337,7 @@ bool ScFormulaCell::GetMatrixOrigin( ScAddress& rPos ) const
ScToken* t = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
if( t )
{
- ScSingleRefData& rRef = t->GetSingleRef();
+ ScSingleRefData& rRef = *t->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (ValidAddress(aAbs))
{
@@ -2614,9 +2614,9 @@ bool ScFormulaCell::HasRelNameReference() const
ScToken* t;
while ( ( t = static_cast<ScToken*>(pCode->GetNextReferenceRPN()) ) != NULL )
{
- if ( t->GetSingleRef().IsRelName() ||
+ if ( t->GetSingleRef()->IsRelName() ||
(t->GetType() == formula::svDoubleRef &&
- t->GetDoubleRef().Ref2.IsRelName()) )
+ t->GetDoubleRef()->Ref2.IsRelName()) )
return true;
}
return false;
@@ -2664,7 +2664,7 @@ bool checkCompileColRowName(
rCode.Reset();
while ((t = static_cast<ScToken*>(rCode.GetNextColRowName())) != NULL)
{
- ScSingleRefData& rRef = t->GetSingleRef();
+ ScSingleRefData& rRef = *t->GetSingleRef();
if (rCxt.mnRowDelta > 0 && rRef.IsColRel())
{ // ColName
ScAddress aAdr = rRef.toAbs(aPos);
@@ -2709,7 +2709,7 @@ bool checkCompileColRowName(
const ScToken* t = static_cast<const ScToken*>(rCode.GetNextColRowName());
for (; t; t = static_cast<const ScToken*>(rCode.GetNextColRowName()))
{
- const ScSingleRefData& rRef = t->GetSingleRef();
+ const ScSingleRefData& rRef = *t->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (ValidAddress(aAbs))
{
@@ -3195,12 +3195,12 @@ void ScFormulaCell::UpdateInsertTabAbs(SCTAB nTable)
ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
while (p)
{
- ScSingleRefData& rRef1 = p->GetSingleRef();
+ ScSingleRefData& rRef1 = *p->GetSingleRef();
if (!rRef1.IsTabRel() && nTable <= rRef1.Tab())
rRef1.IncTab(1);
if (p->GetType() == formula::svDoubleRef)
{
- ScSingleRefData& rRef2 = p->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = p->GetDoubleRef()->Ref2;
if (!rRef2.IsTabRel() && nTable <= rRef2.Tab())
rRef2.IncTab(1);
}
@@ -3222,7 +3222,7 @@ bool ScFormulaCell::TestTabRefAbs(SCTAB nTable)
ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
while (p)
{
- ScSingleRefData& rRef1 = p->GetSingleRef();
+ ScSingleRefData& rRef1 = *p->GetSingleRef();
if (!rRef1.IsTabRel())
{
if (nTable != rRef1.Tab())
@@ -3232,7 +3232,7 @@ bool ScFormulaCell::TestTabRefAbs(SCTAB nTable)
}
if (p->GetType() == formula::svDoubleRef)
{
- ScSingleRefData& rRef2 = p->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = p->GetDoubleRef()->Ref2;
if (!rRef2.IsTabRel())
{
if(nTable != rRef2.Tab())
@@ -3263,11 +3263,11 @@ void ScFormulaCell::TransposeReference()
ScToken* t;
while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() && rRef1.IsRowRel() )
{
bool bDouble = (t->GetType() == formula::svDoubleRef);
- ScSingleRefData& rRef2 = (bDouble ? t->GetDoubleRef().Ref2 : rRef1);
+ ScSingleRefData& rRef2 = (bDouble ? t->GetDoubleRef()->Ref2 : rRef1);
if ( !bDouble || (rRef2.IsColRel() && rRef2.IsRowRel()) )
{
SCCOLROW nTemp;
@@ -3576,8 +3576,8 @@ ScFormulaCell::CompareState ScFormulaCell::CompareByTokenArray( ScFormulaCell& r
case formula::svSingleRef:
{
// Single cell reference.
- const ScSingleRefData& rRef = pThisTok->GetSingleRef();
- if (rRef != pOtherTok->GetSingleRef())
+ const ScSingleRefData& rRef = *pThisTok->GetSingleRef();
+ if (rRef != *pOtherTok->GetSingleRef())
return NotEqual;
if (rRef.IsRowRel())
@@ -3587,12 +3587,12 @@ ScFormulaCell::CompareState ScFormulaCell::CompareByTokenArray( ScFormulaCell& r
case formula::svDoubleRef:
{
// Range reference.
- const ScSingleRefData& rRef1 = pThisTok->GetSingleRef();
- const ScSingleRefData& rRef2 = pThisTok->GetSingleRef2();
- if (rRef1 != pOtherTok->GetSingleRef())
+ const ScSingleRefData& rRef1 = *pThisTok->GetSingleRef();
+ const ScSingleRefData& rRef2 = *pThisTok->GetSingleRef2();
+ if (rRef1 != *pOtherTok->GetSingleRef())
return NotEqual;
- if (rRef2 != pOtherTok->GetSingleRef2())
+ if (rRef2 != *pOtherTok->GetSingleRef2())
return NotEqual;
if (rRef1.IsRowRel())
@@ -3713,7 +3713,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
{
case svSingleRef:
{
- ScSingleRefData aRef = pToken->GetSingleRef();
+ ScSingleRefData aRef = *pToken->GetSingleRef();
ScAddress aRefPos = aRef.toAbs(aPos);
formula::FormulaTokenRef pNewToken = pDocument->ResolveStaticReference(aRefPos);
if (!pNewToken)
@@ -3724,7 +3724,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
break;
case svDoubleRef:
{
- ScComplexRefData aRef = pToken->GetDoubleRef();
+ ScComplexRefData aRef = *pToken->GetDoubleRef();
ScRange aRefRange = aRef.toAbs(aPos);
formula::FormulaTokenRef pNewToken = pDocument->ResolveStaticReference(aRefRange);
if (!pNewToken)
@@ -3778,8 +3778,8 @@ namespace {
void startListeningArea(
ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const ScToken& rToken)
{
- const ScSingleRefData& rRef1 = rToken.GetSingleRef();
- const ScSingleRefData& rRef2 = rToken.GetSingleRef2();
+ const ScSingleRefData& rRef1 = *rToken.GetSingleRef();
+ const ScSingleRefData& rRef2 = *rToken.GetSingleRef2();
ScAddress aCell1 = rRef1.toAbs(rPos);
ScAddress aCell2 = rRef2.toAbs(rPos);
if (aCell1.IsValid() && aCell2.IsValid())
@@ -3822,7 +3822,7 @@ void ScFormulaCell::StartListeningTo( ScDocument* pDoc )
{
case svSingleRef:
{
- ScAddress aCell = t->GetSingleRef().toAbs(aPos);
+ ScAddress aCell = t->GetSingleRef()->toAbs(aPos);
if (aCell.IsValid())
pDoc->StartListeningCell(aCell, this);
}
@@ -3860,7 +3860,7 @@ void ScFormulaCell::StartListeningTo( sc::StartListeningContext& rCxt )
{
case svSingleRef:
{
- ScAddress aCell = t->GetSingleRef().toAbs(aPos);
+ ScAddress aCell = t->GetSingleRef()->toAbs(aPos);
if (aCell.IsValid())
rDoc.StartListeningCell(rCxt, aCell, *this);
}
@@ -3880,8 +3880,8 @@ namespace {
void endListeningArea(
ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const ScToken& rToken)
{
- const ScSingleRefData& rRef1 = rToken.GetSingleRef();
- const ScSingleRefData& rRef2 = rToken.GetSingleRef2();
+ const ScSingleRefData& rRef1 = *rToken.GetSingleRef();
+ const ScSingleRefData& rRef2 = *rToken.GetSingleRef2();
ScAddress aCell1 = rRef1.toAbs(rPos);
ScAddress aCell2 = rRef2.toAbs(rPos);
if (aCell1.IsValid() && aCell2.IsValid())
@@ -3930,7 +3930,7 @@ void ScFormulaCell::EndListeningTo( ScDocument* pDoc, ScTokenArray* pArr,
{
case svSingleRef:
{
- ScAddress aCell = t->GetSingleRef().toAbs(aCellPos);
+ ScAddress aCell = t->GetSingleRef()->toAbs(aCellPos);
if (aCell.IsValid())
pDoc->EndListeningCell(aCell, this);
}
@@ -3970,7 +3970,7 @@ void ScFormulaCell::EndListeningTo( sc::EndListeningContext& rCxt )
{
case svSingleRef:
{
- ScAddress aCell = t->GetSingleRef().toAbs(aCellPos);
+ ScAddress aCell = t->GetSingleRef()->toAbs(aCellPos);
if (aCell.IsValid())
rDoc.EndListeningCell(rCxt, aCell, *this);
}
diff --git a/sc/source/core/data/formulaiter.cxx b/sc/source/core/data/formulaiter.cxx
index e101a79fd38c..e5454931872a 100644
--- a/sc/source/core/data/formulaiter.cxx
+++ b/sc/source/core/data/formulaiter.cxx
@@ -34,13 +34,13 @@ ScDetectiveRefIter::ScDetectiveRefIter( ScFormulaCell* pCell )
static bool lcl_ScDetectiveRefIter_SkipRef( ScToken* p, const ScAddress& rPos )
{
- ScSingleRefData& rRef1 = p->GetSingleRef();
+ ScSingleRefData& rRef1 = *p->GetSingleRef();
ScAddress aAbs1 = rRef1.toAbs(rPos);
if (!ValidAddress(aAbs1))
return true;
if ( p->GetType() == svDoubleRef || p->GetType() == svExternalDoubleRef )
{
- ScSingleRefData& rRef2 = p->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = p->GetDoubleRef()->Ref2;
ScAddress aAbs2 = rRef2.toAbs(rPos);
if (!ValidAddress(aAbs2))
return true;
diff --git a/sc/source/core/data/grouptokenconverter.cxx b/sc/source/core/data/grouptokenconverter.cxx
index 537bd2154efa..06eb18a33453 100644
--- a/sc/source/core/data/grouptokenconverter.cxx
+++ b/sc/source/core/data/grouptokenconverter.cxx
@@ -102,7 +102,7 @@ bool ScGroupTokenConverter::convert(ScTokenArray& rCode)
{
case svSingleRef:
{
- ScSingleRefData aRef = pToken->GetSingleRef();
+ ScSingleRefData aRef = *pToken->GetSingleRef();
ScAddress aRefPos = aRef.toAbs(mrPos);
if (aRef.IsRowRel())
{
@@ -141,7 +141,7 @@ bool ScGroupTokenConverter::convert(ScTokenArray& rCode)
break;
case svDoubleRef:
{
- ScComplexRefData aRef = pToken->GetDoubleRef();
+ ScComplexRefData aRef = *pToken->GetDoubleRef();
ScRange aAbs = aRef.toAbs(mrPos);
// Check for self reference.
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index f847d670bd1f..6b62040b6241 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -1883,7 +1883,7 @@ void ScChangeActionContent::PutValueToDoc(
static void lcl_InvalidateReference( ScToken& rTok, const ScBigAddress& rPos )
{
- ScSingleRefData& rRef1 = rTok.GetSingleRef();
+ ScSingleRefData& rRef1 = *rTok.GetSingleRef();
if ( rPos.Col() < 0 || MAXCOL < rPos.Col() )
{
rRef1.SetColDeleted( true );
@@ -1898,7 +1898,7 @@ static void lcl_InvalidateReference( ScToken& rTok, const ScBigAddress& rPos )
}
if ( rTok.GetType() == formula::svDoubleRef )
{
- ScSingleRefData& rRef2 = rTok.GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = rTok.GetDoubleRef()->Ref2;
if ( rPos.Col() < 0 || MAXCOL < rPos.Col() )
{
rRef2.SetColDeleted( true );
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 33146a7ab12f..e27ed3ef12bb 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4051,12 +4051,12 @@ void ScCompiler::SetRelNameReference()
for( ScToken* t = static_cast<ScToken*>(pArr->GetNextReference()); t;
t = static_cast<ScToken*>(pArr->GetNextReference()) )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() || rRef1.IsRowRel() || rRef1.IsTabRel() )
rRef1.SetRelName( true );
if ( t->GetType() == svDoubleRef )
{
- ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = t->GetDoubleRef()->Ref2;
if ( rRef2.IsColRel() || rRef2.IsRowRel() || rRef2.IsTabRel() )
rRef2.SetRelName( true );
}
@@ -4072,9 +4072,9 @@ void ScCompiler::MoveRelWrap( SCCOL nMaxCol, SCROW nMaxRow )
t = static_cast<ScToken*>(pArr->GetNextReference()) )
{
if ( t->GetType() == svSingleRef || t->GetType() == svExternalSingleRef )
- ScRefUpdate::MoveRelWrap( pDoc, aPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( t->GetSingleRef() ).Ref() );
+ ScRefUpdate::MoveRelWrap( pDoc, aPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( *t->GetSingleRef() ).Ref() );
else
- ScRefUpdate::MoveRelWrap( pDoc, aPos, nMaxCol, nMaxRow, t->GetDoubleRef() );
+ ScRefUpdate::MoveRelWrap( pDoc, aPos, nMaxCol, nMaxRow, *t->GetDoubleRef() );
}
}
@@ -4088,9 +4088,9 @@ void ScCompiler::MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc, const ScAddr
t = static_cast<ScToken*>(rArr.GetNextReference()) )
{
if ( t->GetType() == svSingleRef || t->GetType() == svExternalSingleRef )
- ScRefUpdate::MoveRelWrap( pDoc, rPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( t->GetSingleRef() ).Ref() );
+ ScRefUpdate::MoveRelWrap( pDoc, rPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( *t->GetSingleRef() ).Ref() );
else
- ScRefUpdate::MoveRelWrap( pDoc, rPos, nMaxCol, nMaxRow, t->GetDoubleRef() );
+ ScRefUpdate::MoveRelWrap( pDoc, rPos, nMaxCol, nMaxRow, *t->GetDoubleRef() );
}
}
@@ -4134,7 +4134,7 @@ void ScCompiler::CreateStringFromExternal(OUStringBuffer& rBuffer, FormulaToken*
case svExternalSingleRef:
pConv->makeExternalRefStr(
rBuffer, GetPos(), nFileId, *pFileName, t->GetString().getString(),
- static_cast<ScToken*>(t)->GetSingleRef());
+ *static_cast<ScToken*>(t)->GetSingleRef());
break;
case svExternalDoubleRef:
{
@@ -4145,7 +4145,7 @@ void ScCompiler::CreateStringFromExternal(OUStringBuffer& rBuffer, FormulaToken*
pConv->makeExternalRefStr(
rBuffer, GetPos(), nFileId, *pFileName, aTabNames, t->GetString().getString(),
- static_cast<ScToken*>(t)->GetDoubleRef());
+ *static_cast<ScToken*>(t)->GetDoubleRef());
}
break;
default:
@@ -4204,7 +4204,7 @@ void ScCompiler::CreateStringFromSingleRef(OUStringBuffer& rBuffer,FormulaToken*
{
OUString aErrRef = GetCurrentOpCodeMap()->getSymbol(ocErrRef);
const OpCode eOp = _pTokenP->GetOpCode();
- const ScSingleRefData& rRef = static_cast<const ScToken*>(_pTokenP)->GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken*>(_pTokenP)->GetSingleRef();
ScComplexRefData aRef;
aRef.Ref1 = aRef.Ref2 = rRef;
if ( eOp == ocColRowName )
@@ -4232,7 +4232,7 @@ void ScCompiler::CreateStringFromDoubleRef(OUStringBuffer& rBuffer,FormulaToken*
{
OUString aErrRef = GetCurrentOpCodeMap()->getSymbol(ocErrRef);
pConv->makeRefStr(rBuffer, meGrammar, aPos, aErrRef, GetSetupTabNames(),
- static_cast<ScToken*>(_pTokenP)->GetDoubleRef(), false);
+ *static_cast<ScToken*>(_pTokenP)->GetDoubleRef(), false);
}
void ScCompiler::CreateStringFromIndex(OUStringBuffer& rBuffer,FormulaToken* _pTokenP) const
@@ -4325,7 +4325,7 @@ void ScCompiler::fillAddInToken(::std::vector< ::com::sun::star::sheet::FormulaO
bool ScCompiler::HandleSingleRef()
{
- ScSingleRefData& rRef = static_cast<ScToken*>(mpToken.get())->GetSingleRef();
+ ScSingleRefData& rRef = *static_cast<ScToken*>(mpToken.get())->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (!ValidAddress(aAbs))
{
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index d5dcb8e5ef68..53f922d2ae31 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -7576,14 +7576,14 @@ void ScInterpreter::ScAreas()
case svSingleRef:
{
FormulaTokenRef xT = PopToken();
- ValidateRef( static_cast<ScToken*>(xT.get())->GetSingleRef());
+ ValidateRef( *static_cast<ScToken*>(xT.get())->GetSingleRef());
++nCount;
}
break;
case svDoubleRef:
{
FormulaTokenRef xT = PopToken();
- ValidateRef( static_cast<ScToken*>(xT.get())->GetDoubleRef());
+ ValidateRef( *static_cast<ScToken*>(xT.get())->GetDoubleRef());
++nCount;
}
break;
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 183e4ae7f7e3..6674bb870933 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -1952,13 +1952,13 @@ void ScInterpreter::ScIntersect()
if (sv[i] == svSingleRef)
{
ScComplexRefData aRef;
- aRef.Ref1 = aRef.Ref2 = xt[i]->GetSingleRef();
+ aRef.Ref1 = aRef.Ref2 = *xt[i]->GetSingleRef();
xt[i] = new ScRefListToken;
xt[i]->GetRefList()->push_back( aRef);
}
else if (sv[i] == svDoubleRef)
{
- ScComplexRefData aRef = xt[i]->GetDoubleRef();
+ ScComplexRefData aRef = *xt[i]->GetDoubleRef();
xt[i] = new ScRefListToken;
xt[i]->GetRefList()->push_back( aRef);
}
@@ -2024,14 +2024,14 @@ void ScInterpreter::ScIntersect()
case svDoubleRef:
{
{
- const ScAddress& r = pt[i]->GetSingleRef().toAbs(aPos);
+ const ScAddress& r = pt[i]->GetSingleRef()->toAbs(aPos);
nC1[i] = r.Col();
nR1[i] = r.Row();
nT1[i] = r.Tab();
}
if (sv[i] == svDoubleRef)
{
- const ScAddress& r = pt[i]->GetSingleRef2().toAbs(aPos);
+ const ScAddress& r = pt[i]->GetSingleRef2()->toAbs(aPos);
nC2[i] = r.Col();
nR2[i] = r.Row();
nT2[i] = r.Tab();
@@ -2129,12 +2129,12 @@ void ScInterpreter::ScUnionFunc()
case svSingleRef:
{
ScComplexRefData aRef;
- aRef.Ref1 = aRef.Ref2 = pt[i]->GetSingleRef();
+ aRef.Ref1 = aRef.Ref2 = *pt[i]->GetSingleRef();
pRes->push_back( aRef);
}
break;
case svDoubleRef:
- pRes->push_back( pt[i]->GetDoubleRef());
+ pRes->push_back( *pt[i]->GetDoubleRef());
break;
case svRefList:
{
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 2b1b92ad6f35..4bb62c454a84 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -1171,7 +1171,7 @@ void ScInterpreter::PopSingleRef(SCCOL& rCol, SCROW &rRow, SCTAB& rTab)
nGlobalError = p->GetError();
break;
case svSingleRef:
- SingleRefToVars( static_cast<ScToken*>(p)->GetSingleRef(), rCol, rRow, rTab);
+ SingleRefToVars( *static_cast<ScToken*>(p)->GetSingleRef(), rCol, rRow, rTab);
if ( !pDok->aTableOpList.empty() )
ReplaceCell( rCol, rRow, rTab );
break;
@@ -1199,7 +1199,7 @@ void ScInterpreter::PopSingleRef( ScAddress& rAdr )
SCCOL nCol;
SCROW nRow;
SCTAB nTab;
- SingleRefToVars( static_cast<ScToken*>(p)->GetSingleRef(), nCol, nRow, nTab);
+ SingleRefToVars( *static_cast<ScToken*>(p)->GetSingleRef(), nCol, nRow, nTab);
rAdr.Set( nCol, nRow, nTab );
if ( !pDok->aTableOpList.empty() )
ReplaceCell( rAdr );
@@ -1218,7 +1218,7 @@ void ScInterpreter::DoubleRefToVars( const ScToken* p,
SCCOL& rCol2, SCROW &rRow2, SCTAB& rTab2,
bool bDontCheckForTableOp )
{
- const ScComplexRefData& rCRef = p->GetDoubleRef();
+ const ScComplexRefData& rCRef = *p->GetDoubleRef();
SingleRefToVars( rCRef.Ref1, rCol1, rRow1, rTab1);
SingleRefToVars( rCRef.Ref2, rCol2, rRow2, rTab2);
if ( !pDok->aTableOpList.empty() && !bDontCheckForTableOp )
@@ -1325,7 +1325,7 @@ void ScInterpreter::PopDoubleRef( ScRange & rRange, short & rParam, size_t & rRe
break;
case svDoubleRef:
--sp;
- DoubleRefToRange( p->GetDoubleRef(), rRange);
+ DoubleRefToRange( *p->GetDoubleRef(), rRange);
break;
case svRefList:
{
@@ -1369,7 +1369,7 @@ void ScInterpreter::PopDoubleRef( ScRange& rRange, bool bDontCheckForTableOp )
nGlobalError = p->GetError();
break;
case svDoubleRef:
- DoubleRefToRange( static_cast<ScToken*>(p)->GetDoubleRef(), rRange, bDontCheckForTableOp);
+ DoubleRefToRange( *static_cast<ScToken*>(p)->GetDoubleRef(), rRange, bDontCheckForTableOp);
break;
default:
SetError( errIllegalParameter);
@@ -1405,7 +1405,7 @@ void ScInterpreter::PopExternalSingleRef(sal_uInt16& rFileId, OUString& rTabName
rFileId = p->GetIndex();
rTabName = p->GetString().getString();
- rRef = static_cast<ScToken*>(p)->GetSingleRef();
+ rRef = *static_cast<ScToken*>(p)->GetSingleRef();
}
void ScInterpreter::PopExternalSingleRef(ScExternalRefCache::TokenRef& rToken, ScExternalRefCache::CellFormat* pFmt)
@@ -1481,7 +1481,7 @@ void ScInterpreter::PopExternalDoubleRef(sal_uInt16& rFileId, OUString& rTabName
rFileId = p->GetIndex();
rTabName = p->GetString().getString();
- rRef = static_cast<ScToken*>(p)->GetDoubleRef();
+ rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
}
void ScInterpreter::PopExternalDoubleRef(ScExternalRefCache::TokenArrayRef& rArray)
@@ -1690,7 +1690,7 @@ bool ScInterpreter::ConvertMatrixParameters()
{
sal_uInt16 nFileId = p->GetIndex();
OUString aTabName = p->GetString().getString();
- const ScComplexRefData& rRef = static_cast<ScToken*>(p)->GetDoubleRef();
+ const ScComplexRefData& rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
ScExternalRefCache::TokenArrayRef pArray;
GetExternalDoubleRef(nFileId, aTabName, rRef, pArray);
if (nGlobalError)
@@ -1812,7 +1812,7 @@ sc::RangeMatrix ScInterpreter::PopRangeMatrix()
aRet.mpMat->SetErrorInterpreter(this);
if (p2->GetByte() == MATRIX_TOKEN_HAS_RANGE)
{
- const ScComplexRefData& rRef = p2->GetDoubleRef();
+ const ScComplexRefData& rRef = *p2->GetDoubleRef();
if (!rRef.Ref1.IsColRel() && !rRef.Ref1.IsRowRel() && !rRef.Ref2.IsColRel() && !rRef.Ref2.IsRowRel())
{
aRet.mnCol1 = rRef.Ref1.Col();
@@ -3579,7 +3579,7 @@ void ScInterpreter::ScDBArea()
void ScInterpreter::ScColRowNameAuto()
{
- ScComplexRefData aRefData( static_cast<const ScToken*>(pCur)->GetDoubleRef() );
+ ScComplexRefData aRefData( *static_cast<const ScToken*>(pCur)->GetDoubleRef() );
ScRange aAbs = aRefData.toAbs(aPos);
if (!ValidRange(aAbs))
{
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index 3fb839edc710..e770110ec3c5 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -221,7 +221,7 @@ void ScRangeData::GuessPosition()
pCode->Reset();
while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() && rRef1.Col() < nMinCol )
nMinCol = rRef1.Col();
if ( rRef1.IsRowRel() && rRef1.Row() < nMinRow )
@@ -231,7 +231,7 @@ void ScRangeData::GuessPosition()
if ( t->GetType() == svDoubleRef )
{
- ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = t->GetDoubleRef()->Ref2;
if ( rRef2.IsColRel() && rRef2.Col() < nMinCol )
nMinCol = rRef2.Col();
if ( rRef2.IsRowRel() && rRef2.Row() < nMinRow )
@@ -543,7 +543,7 @@ void ScRangeData::ValidateTabRefs()
pCode->Reset();
while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
{
- ScSingleRefData& rRef1 = t->GetSingleRef();
+ ScSingleRefData& rRef1 = *t->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(aPos);
if ( rRef1.IsTabRel() && !rRef1.IsTabDeleted() )
{
@@ -554,7 +554,7 @@ void ScRangeData::ValidateTabRefs()
}
if ( t->GetType() == svDoubleRef )
{
- ScSingleRefData& rRef2 = t->GetDoubleRef().Ref2;
+ ScSingleRefData& rRef2 = t->GetDoubleRef()->Ref2;
aAbs = rRef2.toAbs(aPos);
if ( rRef2.IsTabRel() && !rRef2.IsTabDeleted() )
{
@@ -583,7 +583,7 @@ void ScRangeData::ValidateTabRefs()
{
case svSingleRef:
{
- ScSingleRefData& rRef = t->GetSingleRef();
+ ScSingleRefData& rRef = *t->GetSingleRef();
if (!rRef.IsTabDeleted())
{
ScAddress aAbs = rRef.toAbs(aOldPos);
@@ -593,7 +593,7 @@ void ScRangeData::ValidateTabRefs()
break;
case svDoubleRef:
{
- ScComplexRefData& rRef = t->GetDoubleRef();
+ ScComplexRefData& rRef = *t->GetDoubleRef();
if (!rRef.Ref1.IsTabDeleted())
{
ScAddress aAbs = rRef.Ref1.toAbs(aOldPos);
diff --git a/sc/source/core/tool/reftokenhelper.cxx b/sc/source/core/tool/reftokenhelper.cxx
index 696f364a4753..a26ab0de5762 100644
--- a/sc/source/core/tool/reftokenhelper.cxx
+++ b/sc/source/core/tool/reftokenhelper.cxx
@@ -81,7 +81,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
case svSingleRef:
{
const ScToken* pT = static_cast<const ScToken*>(p);
- const ScSingleRefData& rRef = pT->GetSingleRef();
+ const ScSingleRefData& rRef = *pT->GetSingleRef();
if (!rRef.Valid())
bFailure = true;
else if (bOnly3DRef && !rRef.IsFlag3D())
@@ -91,7 +91,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
case svDoubleRef:
{
const ScToken* pT = static_cast<const ScToken*>(p);
- const ScComplexRefData& rRef = pT->GetDoubleRef();
+ const ScComplexRefData& rRef = *pT->GetDoubleRef();
if (!rRef.Valid())
bFailure = true;
else if (bOnly3DRef && !rRef.Ref1.IsFlag3D())
@@ -101,14 +101,14 @@ void ScRefTokenHelper::compileRangeRepresentation(
case svExternalSingleRef:
{
const ScToken* pT = static_cast<const ScToken*>(p);
- if (!pT->GetSingleRef().ValidExternal())
+ if (!pT->GetSingleRef()->ValidExternal())
bFailure = true;
}
break;
case svExternalDoubleRef:
{
const ScToken* pT = static_cast<const ScToken*>(p);
- if (!pT->GetDoubleRef().ValidExternal())
+ if (!pT->GetDoubleRef()->ValidExternal())
bFailure = true;
}
break;
@@ -142,7 +142,7 @@ bool ScRefTokenHelper::getRangeFromToken(
(eType == svSingleRef && bExternal))
return false;
- const ScSingleRefData& rRefData = pToken->GetSingleRef();
+ const ScSingleRefData& rRefData = *pToken->GetSingleRef();
rRange.aStart = rRefData.toAbs(rPos);
rRange.aEnd = rRange.aStart;
return true;
@@ -154,7 +154,7 @@ bool ScRefTokenHelper::getRangeFromToken(
(eType == svDoubleRef && bExternal))
return false;
- const ScComplexRefData& rRefData = pToken->GetDoubleRef();
+ const ScComplexRefData& rRefData = *pToken->GetDoubleRef();
rRange = rRefData.toAbs(rPos);
return true;
}
@@ -446,7 +446,7 @@ bool ScRefTokenHelper::getDoubleRefDataFromToken(ScComplexRefData& rData, const
case svSingleRef:
case svExternalSingleRef:
{
- const ScSingleRefData& r = pToken->GetSingleRef();
+ const ScSingleRefData& r = *pToken->GetSingleRef();
rData.Ref1 = r;
rData.Ref1.SetFlag3D(true);
rData.Ref2 = r;
@@ -455,7 +455,7 @@ bool ScRefTokenHelper::getDoubleRefDataFromToken(ScComplexRefData& rData, const
break;
case svDoubleRef:
case svExternalDoubleRef:
- rData = pToken->GetDoubleRef();
+ rData = *pToken->GetDoubleRef();
break;
default:
// Not a reference token. Bail out.
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 7673b09249cd..c8d47e43945b 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -451,21 +451,6 @@ void ScRawToken::Delete()
// --- class ScToken --------------------------------------------------------
-static ScSingleRefData lcl_ScToken_InitSingleRef()
-{
- ScSingleRefData aRef;
- aRef.InitAddress( ScAddress() );
- return aRef;
-}
-
-static ScComplexRefData lcl_ScToken_InitDoubleRef()
-{
- ScComplexRefData aRef;
- aRef.Ref1 = lcl_ScToken_InitSingleRef();
- aRef.Ref2 = aRef.Ref1;
- return aRef;
-}
-
ScToken::~ScToken()
{
}
@@ -483,20 +468,20 @@ bool ScToken::checkTextEqual( const FormulaToken& _rToken ) const
ScComplexRefData aTemp1;
if ( eType == svSingleRef )
{
- aTemp1.Ref1 = GetSingleRef();
+ aTemp1.Ref1 = *GetSingleRef();
aTemp1.Ref2 = aTemp1.Ref1;
}
else
- aTemp1 = GetDoubleRef();
+ aTemp1 = *GetDoubleRef();
ScComplexRefData aTemp2;
if ( rToken.eType == svSingleRef )
{
- aTemp2.Ref1 = rToken.GetSingleRef();
+ aTemp2.Ref1 = *rToken.GetSingleRef();
aTemp2.Ref2 = aTemp2.Ref1;
}
else
- aTemp2 = rToken.GetDoubleRef();
+ aTemp2 = *rToken.GetDoubleRef();
ScAddress aPos;
ScRange aRange1 = aTemp1.toAbs(aPos), aRange2 = aTemp2.toAbs(aPos);
@@ -512,11 +497,11 @@ void DumpToken(ScToken const & rToken)
switch (rToken.GetType()) {
case svSingleRef:
cout << "-- ScSingleRefToken" << endl;
- rToken.GetSingleRef().Dump(1);
+ rToken.GetSingleRef()->Dump(1);
break;
case svDoubleRef:
cout << "-- ScDoubleRefToken" << endl;
- rToken.GetDoubleRef().Dump(1);
+ rToken.GetDoubleRef()->Dump(1);
break;
default:
cout << "-- ScToken (base class)" << endl;
@@ -565,12 +550,12 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
* merged here. For Xcl syntax already parse an external range
* reference entirely, cumbersome. */
- const ScSingleRefData& rRef2 = p2->GetSingleRef();
+ const ScSingleRefData& rRef2 = *p2->GetSingleRef();
if (bExternal && rRef2.IsFlag3D())
return NULL;
ScComplexRefData aRef;
- aRef.Ref1 = aRef.Ref2 = p1->GetSingleRef();
+ aRef.Ref1 = aRef.Ref2 = *p1->GetSingleRef();
aRef.Ref2.SetFlag3D( false);
aRef.Extend( rRef2, rPos);
if (bExternal)
@@ -608,16 +593,16 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
return NULL; // shouldn't happen..
StackVar sv[2] = { sv1, sv2 };
ScToken* pt[2] = { p1, p2 };
- ScComplexRefData& rRef = xRes->GetDoubleRef();
+ ScComplexRefData& rRef = *xRes->GetDoubleRef();
for (size_t i=0; i<2; ++i)
{
switch (sv[i])
{
case svSingleRef:
- rRef.Extend( pt[i]->GetSingleRef(), rPos);
+ rRef.Extend( *pt[i]->GetSingleRef(), rPos);
break;
case svDoubleRef:
- rRef.Extend( pt[i]->GetDoubleRef(), rPos);
+ rRef.Extend( *pt[i]->GetDoubleRef(), rPos);
break;
case svRefList:
{
@@ -636,13 +621,13 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
if (rRef.Ref1.IsFlag3D() || rRef.Ref2.IsFlag3D())
return NULL; // no other sheets with external refs
else
- rRef.Extend( pt[i]->GetSingleRef(), rPos);
+ rRef.Extend( *pt[i]->GetSingleRef(), rPos);
break;
case svExternalDoubleRef:
if (rRef.Ref1.IsFlag3D() || rRef.Ref2.IsFlag3D())
return NULL; // no other sheets with external refs
else
- rRef.Extend( pt[i]->GetDoubleRef(), rPos);
+ rRef.Extend( *pt[i]->GetDoubleRef(), rPos);
break;
default:
; // nothing, prevent compiler warning
@@ -652,46 +637,40 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
return FormulaTokenRef(xRes.get());
}
-const ScSingleRefData& ScToken::GetSingleRef() const
+const ScSingleRefData* ScToken::GetSingleRef() const
{
OSL_FAIL( "ScToken::GetSingleRef: virtual dummy called" );
- static ScSingleRefData aDummySingleRef = lcl_ScToken_InitSingleRef();
- return aDummySingleRef;
+ return nullptr;
}
-ScSingleRefData& ScToken::GetSingleRef()
+ScSingleRefData* ScToken::GetSingleRef()
{
OSL_FAIL( "ScToken::GetSingleRef: virtual dummy called" );
- static ScSingleRefData aDummySingleRef = lcl_ScToken_InitSingleRef();
- return aDummySingleRef;
+ return nullptr;
}
-const ScComplexRefData& ScToken::GetDoubleRef() const
+const ScComplexRefData* ScToken::GetDoubleRef() const
{
OSL_FAIL( "ScToken::GetDoubleRef: virtual dummy called" );
- static ScComplexRefData aDummyDoubleRef = lcl_ScToken_InitDoubleRef();
- return aDummyDoubleRef;
+ return nullptr;
}
-ScComplexRefData& ScToken::GetDoubleRef()
+ScComplexRefData* ScToken::GetDoubleRef()
{
OSL_FAIL( "ScToken::GetDoubleRef: virtual dummy called" );
- static ScComplexRefData aDummyDoubleRef = lcl_ScToken_InitDoubleRef();
- return aDummyDoubleRef;
+ return nullptr;
}
-const ScSingleRefData& ScToken::GetSingleRef2() const
+const ScSingleRefData* ScToken::GetSingleRef2() const
{
OSL_FAIL( "ScToken::GetSingleRef2: virtual dummy called" );
- static ScSingleRefData aDummySingleRef = lcl_ScToken_InitSingleRef();
- return aDummySingleRef;
+ return nullptr;
}
-ScSingleRefData& ScToken::GetSingleRef2()
+ScSingleRefData* ScToken::GetSingleRef2()
{
OSL_FAIL( "ScToken::GetSingleRef2: virtual dummy called" );
- static ScSingleRefData aDummySingleRef = lcl_ScToken_InitSingleRef();
- return aDummySingleRef;
+ return nullptr;
}
const ScMatrix* ScToken::GetMatrix() const
@@ -725,30 +704,30 @@ ScRefList* ScToken::GetRefList()
// real implementations of virtual functions
-const ScSingleRefData& ScSingleRefToken::GetSingleRef() const { return aSingleRef; }
-ScSingleRefData& ScSingleRefToken::GetSingleRef() { return aSingleRef; }
+const ScSingleRefData* ScSingleRefToken::GetSingleRef() const { return &aSingleRef; }
+ScSingleRefData* ScSingleRefToken::GetSingleRef() { return &aSingleRef; }
bool ScSingleRefToken::TextEqual( const FormulaToken& _rToken ) const
{
return FormulaToken::operator ==(_rToken) && checkTextEqual(_rToken);
}
bool ScSingleRefToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && aSingleRef == static_cast<const ScToken&>(r).GetSingleRef();
+ return FormulaToken::operator==( r ) && aSingleRef == *static_cast<const ScToken&>(r).GetSingleRef();
}
-const ScSingleRefData& ScDoubleRefToken::GetSingleRef() const { return aDoubleRef.Ref1; }
-ScSingleRefData& ScDoubleRefToken::GetSingleRef() { return aDoubleRef.Ref1; }
-const ScComplexRefData& ScDoubleRefToken::GetDoubleRef() const { return aDoubleRef; }
-ScComplexRefData& ScDoubleRefToken::GetDoubleRef() { return aDoubleRef; }
-const ScSingleRefData& ScDoubleRefToken::GetSingleRef2() const { return aDoubleRef.Ref2; }
-ScSingleRefData& ScDoubleRefToken::GetSingleRef2() { return aDoubleRef.Ref2; }
+const ScSingleRefData* ScDoubleRefToken::GetSingleRef() const { return &aDoubleRef.Ref1; }
+ScSingleRefData* ScDoubleRefToken::GetSingleRef() { return &aDoubleRef.Ref1; }
+const ScComplexRefData* ScDoubleRefToken::GetDoubleRef() const { return &aDoubleRef; }
+ScComplexRefData* ScDoubleRefToken::GetDoubleRef() { return &aDoubleRef; }
+const ScSingleRefData* ScDoubleRefToken::GetSingleRef2() const { return &aDoubleRef.Ref2; }
+ScSingleRefData* ScDoubleRefToken::GetSingleRef2() { return &aDoubleRef.Ref2; }
bool ScDoubleRefToken::TextEqual( const FormulaToken& _rToken ) const
{
return FormulaToken::operator ==(_rToken) && checkTextEqual(_rToken);
}
bool ScDoubleRefToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && aDoubleRef == static_cast<const ScToken&>(r).GetDoubleRef();
+ return FormulaToken::operator==( r ) && aDoubleRef == *static_cast<const ScToken&>(r).GetDoubleRef();
}
const ScRefList* ScRefListToken::GetRefList() const { return &aRefList; }
@@ -798,14 +777,14 @@ ScMatrix* ScMatrixRangeToken::GetMatrix()
return mpMatrix.get();
}
-const ScComplexRefData& ScMatrixRangeToken::GetDoubleRef() const
+const ScComplexRefData* ScMatrixRangeToken::GetDoubleRef() const
{
- return maRef;
+ return &maRef;
}
-ScComplexRefData& ScMatrixRangeToken::GetDoubleRef()
+ScComplexRefData* ScMatrixRangeToken::GetDoubleRef()
{
- return maRef;
+ return &maRef;
}
bool ScMatrixRangeToken::operator==( const FormulaToken& r ) const
@@ -848,14 +827,14 @@ svl::SharedString ScExternalSingleRefToken::GetString() const
return maTabName;
}
-const ScSingleRefData& ScExternalSingleRefToken::GetSingleRef() const
+const ScSingleRefData* ScExternalSingleRefToken::GetSingleRef() const
{
- return maSingleRef;
+ return &maSingleRef;
}
-ScSingleRefData& ScExternalSingleRefToken::GetSingleRef()
+ScSingleRefData* ScExternalSingleRefToken::GetSingleRef()
{
- return maSingleRef;
+ return &maSingleRef;
}
bool ScExternalSingleRefToken::operator ==( const FormulaToken& r ) const
@@ -869,7 +848,7 @@ bool ScExternalSingleRefToken::operator ==( const FormulaToken& r ) const
if (maTabName != r.GetString())
return false;
- return maSingleRef == static_cast<const ScToken&>(r).GetSingleRef();
+ return maSingleRef == *static_cast<const ScToken&>(r).GetSingleRef();
}
ScExternalDoubleRefToken::ScExternalDoubleRefToken( sal_uInt16 nFileId, const svl::SharedString& rTabName, const ScComplexRefData& r ) :
@@ -902,34 +881,34 @@ svl::SharedString ScExternalDoubleRefToken::GetString() const
return maTabName;
}
-const ScSingleRefData& ScExternalDoubleRefToken::GetSingleRef() const
+const ScSingleRefData* ScExternalDoubleRefToken::GetSingleRef() const
{
- return maDoubleRef.Ref1;
+ return &maDoubleRef.Ref1;
}
-ScSingleRefData& ScExternalDoubleRefToken::GetSingleRef()
+ScSingleRefData* ScExternalDoubleRefToken::GetSingleRef()
{
- return maDoubleRef.Ref1;
+ return &maDoubleRef.Ref1;
}
-const ScSingleRefData& ScExternalDoubleRefToken::GetSingleRef2() const
+const ScSingleRefData* ScExternalDoubleRefToken::GetSingleRef2() const
{
- return maDoubleRef.Ref2;
+ return &maDoubleRef.Ref2;
}
-ScSingleRefData& ScExternalDoubleRefToken::GetSingleRef2()
+ScSingleRefData* ScExternalDoubleRefToken::GetSingleRef2()
{
- return maDoubleRef.Ref2;
+ return &maDoubleRef.Ref2;
}
-const ScComplexRefData& ScExternalDoubleRefToken::GetDoubleRef() const
+const ScComplexRefData* ScExternalDoubleRefToken::GetDoubleRef() const
{
- return maDoubleRef;
+ return &maDoubleRef;
}
-ScComplexRefData& ScExternalDoubleRefToken::GetDoubleRef()
+ScComplexRefData* ScExternalDoubleRefToken::GetDoubleRef()
{
- return maDoubleRef;
+ return &maDoubleRef;
}
bool ScExternalDoubleRefToken::operator ==( const FormulaToken& r ) const
@@ -943,7 +922,7 @@ bool ScExternalDoubleRefToken::operator ==( const FormulaToken& r ) const
if (maTabName != r.GetString())
return false;
- return maDoubleRef == static_cast<const ScToken&>(r).GetDoubleRef();
+ return maDoubleRef == *static_cast<const ScToken&>(r).GetDoubleRef();
}
ScExternalNameToken::ScExternalNameToken( sal_uInt16 nFileId, const svl::SharedString& rName ) :
@@ -1537,13 +1516,13 @@ bool ScTokenArray::ImplGetReference( ScRange& rRange, const ScAddress& rPos, boo
{
if ( pToken->GetType() == svSingleRef )
{
- const ScSingleRefData& rRef = ((const ScSingleRefToken*)pToken)->GetSingleRef();
+ const ScSingleRefData& rRef = *((const ScSingleRefToken*)pToken)->GetSingleRef();
rRange.aStart = rRange.aEnd = rRef.toAbs(rPos);
bIs = !bValidOnly || ValidAddress(rRange.aStart);
}
else if ( pToken->GetType() == svDoubleRef )
{
- const ScComplexRefData& rCompl = ((const ScDoubleRefToken*)pToken)->GetDoubleRef();
+ const ScComplexRefData& rCompl = *((const ScDoubleRefToken*)pToken)->GetDoubleRef();
const ScSingleRefData& rRef1 = rCompl.Ref1;
const ScSingleRefData& rRef2 = rCompl.Ref2;
rRange.aStart = rRef1.toAbs(rPos);
@@ -1614,13 +1593,13 @@ void ScTokenArray::GenHash()
break;
case svSingleRef:
{
- size_t nVal = HashSingleRef(p->GetSingleRef());
+ size_t nVal = HashSingleRef(*p->GetSingleRef());
nHash += nVal;
}
break;
case svDoubleRef:
{
- const ScComplexRefData& rRef = p->GetDoubleRef();
+ const ScComplexRefData& rRef = *p->GetDoubleRef();
size_t nVal1 = HashSingleRef(rRef.Ref1);
size_t nVal2 = HashSingleRef(rRef.Ref2);
nHash += nVal1;
@@ -1654,7 +1633,7 @@ bool ScTokenArray::IsInvariant() const
case svExternalSingleRef:
{
const ScToken* pT = static_cast<const ScToken*>(*p);
- const ScSingleRefData& rRef = pT->GetSingleRef();
+ const ScSingleRefData& rRef = *pT->GetSingleRef();
if (rRef.IsRowRel())
return false;
}
@@ -1663,7 +1642,7 @@ bool ScTokenArray::IsInvariant() const
case svExternalDoubleRef:
{
const ScToken* pT = static_cast<const ScToken*>(*p);
- const ScComplexRefData& rRef = pT->GetDoubleRef();
+ const ScComplexRefData& rRef = *pT->GetDoubleRef();
if (rRef.Ref1.IsRowRel() || rRef.Ref2.IsRowRel())
return false;
}
@@ -2103,7 +2082,7 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
{
case svSingleRef :
{
- ScSingleRefData& rRef = static_cast<ScToken*>(p)->GetSingleRef();
+ ScSingleRefData& rRef = *static_cast<ScToken*>(p)->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
switch ( eDir )
{
@@ -2140,7 +2119,7 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
break;
case svDoubleRef :
{
- ScComplexRefData& rRef = static_cast<ScToken*>(p)->GetDoubleRef();
+ ScComplexRefData& rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
switch ( eDir )
{
@@ -2197,9 +2176,9 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
{
case svDoubleRef :
{
- ScSingleRefData& rRef2 = static_cast<ScToken*>(pCode[j])->GetSingleRef2();
+ ScSingleRefData& rRef2 = *static_cast<ScToken*>(pCode[j])->GetSingleRef2();
// Also adjust if the reference is of the form Sheet1.A2:A3
- if ( rRef2.IsFlag3D() || static_cast<ScToken*>(pCode[j])->GetSingleRef().IsFlag3D() )
+ if ( rRef2.IsFlag3D() || static_cast<ScToken*>(pCode[j])->GetSingleRef()->IsFlag3D() )
{
ScAddress aAbs = rRef2.toAbs(rOldPos);
rRef2.SetAddress(aAbs, rNewPos);
@@ -2208,7 +2187,7 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
//! fallthru
case svSingleRef :
{
- ScSingleRefData& rRef1 = static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef1 = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
if ( rRef1.IsFlag3D() )
{
ScAddress aAbs = rRef1.toAbs(rOldPos);
@@ -2218,14 +2197,14 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
break;
case svExternalDoubleRef :
{
- ScSingleRefData& rRef2 = static_cast<ScToken*>(pCode[j])->GetSingleRef2();
+ ScSingleRefData& rRef2 = *static_cast<ScToken*>(pCode[j])->GetSingleRef2();
ScAddress aAbs = rRef2.toAbs(rOldPos);
rRef2.SetAddress(aAbs, rNewPos);
}
//! fallthru
case svExternalSingleRef :
{
- ScSingleRefData& rRef1 = static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef1 = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(rOldPos);
rRef1.SetAddress(aAbs, rNewPos);
}
@@ -2268,13 +2247,13 @@ bool SkipReference(ScToken* pToken, const ScAddress& rPos, const ScDocument* pOl
{
case svDoubleRef:
{
- ScSingleRefData& rRef = pToken->GetSingleRef2();
+ ScSingleRefData& rRef = *pToken->GetSingleRef2();
if (rRef.IsColRel() || rRef.IsRowRel())
return true;
} // fall through
case svSingleRef:
{
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (rRef.IsColRel() || rRef.IsRowRel())
return true;
}
@@ -2319,7 +2298,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, cons
if (SkipReference(static_cast<ScToken*>(pCode[j]), rPos, pOldDoc, bRangeName, true))
continue;
- ScComplexRefData& rRef = static_cast<ScToken*>(pCode[j])->GetDoubleRef();
+ ScComplexRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetDoubleRef();
ScSingleRefData& rRef2 = rRef.Ref2;
ScSingleRefData& rRef1 = rRef.Ref1;
@@ -2340,7 +2319,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, cons
if (SkipReference(static_cast<ScToken*>(pCode[j]), rPos, pOldDoc, bRangeName, true))
continue;
- ScSingleRefData& rRef = static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
if ( rRef.IsFlag3D() && !rRef.IsTabRel() )
{
@@ -2374,7 +2353,7 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
if (!SkipReference(static_cast<ScToken*>(pCode[j]), rOldPos, pOldDoc, false, bCheckCopyRange))
continue;
- ScComplexRefData& rRef = static_cast<ScToken*>(pCode[j])->GetDoubleRef();
+ ScComplexRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetDoubleRef();
ScSingleRefData& rRef2 = rRef.Ref2;
ScSingleRefData& rRef1 = rRef.Ref1;
@@ -2390,7 +2369,7 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
if (!SkipReference(static_cast<ScToken*>(pCode[j]), rOldPos, pOldDoc, false, bCheckCopyRange))
continue;
- ScSingleRefData& rRef = static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
// for range names only adjust if all parts are absolute
if (!bRangeName || !(rRef.IsColRel() || rRef.IsRowRel() || rRef.IsTabRel()))
@@ -2646,7 +2625,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
if (rCxt.isDeleted() && aSelectedRange.In(aAbs))
@@ -2681,7 +2660,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
if (rCxt.isDeleted())
@@ -2747,7 +2726,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
// For external reference, just reset the reference with
// respect to the new cell position.
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
rRef.SetAddress(aAbs, aNewPos);
}
@@ -2756,7 +2735,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
{
// Same as above.
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
rRef.SetRange(aAbs, aNewPos);
}
@@ -2800,7 +2779,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
if (aOldRange.In(aAbs))
{
@@ -2816,7 +2795,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
if (aOldRange.In(aAbs))
{
@@ -2859,7 +2838,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
if (aOldRange.In(aAbs))
{
@@ -2873,7 +2852,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (aOldRange.In(aAbs))
{
@@ -2910,7 +2889,7 @@ void ScTokenArray::MoveReferenceColReorder(
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
if (aAbs.Tab() == nTab && nRow1 <= aAbs.Row() && aAbs.Row() <= nRow2)
@@ -2930,7 +2909,7 @@ void ScTokenArray::MoveReferenceColReorder(
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (aAbs.aStart.Tab() != aAbs.aEnd.Tab())
@@ -2973,7 +2952,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
if (aAbs.Tab() == nTab && nCol1 <= aAbs.Col() && aAbs.Col() <= nCol2)
@@ -2993,7 +2972,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (aAbs.aStart.Tab() != aAbs.aEnd.Tab())
@@ -3122,7 +3101,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (adjustSingleRefInName(rRef, rCxt, rPos))
aRes.mbReferenceModified = true;
}
@@ -3130,7 +3109,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (rCxt.maRange.In(aAbs))
{
@@ -3240,7 +3219,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (rRef.IsColRel() || rRef.IsRowRel() || rRef.IsTabRel())
continue;
@@ -3257,7 +3236,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
if (rRef.Ref1.IsColRel() || rRef.Ref1.IsRowRel() || rRef.Ref1.IsTabRel() ||
rRef.Ref2.IsColRel() || rRef.Ref2.IsRowRel() || rRef.Ref2.IsTabRel())
continue;
@@ -3346,7 +3325,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnDeletedTab( sc::RefUpdateDele
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (adjustSingleRefOnDeletedTab(rRef, rCxt.mnDeletePos, rCxt.mnSheets, rOldPos, aNewPos))
aRes.mbReferenceModified = true;
}
@@ -3354,7 +3333,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnDeletedTab( sc::RefUpdateDele
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
if (adjustSingleRefOnDeletedTab(rRef.Ref1, rCxt.mnDeletePos, rCxt.mnSheets, rOldPos, aNewPos))
aRes.mbReferenceModified = true;
if (adjustSingleRefOnDeletedTab(rRef.Ref2, rCxt.mnDeletePos, rCxt.mnSheets, rOldPos, aNewPos))
@@ -3390,7 +3369,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnInsertedTab( sc::RefUpdateIns
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
if (adjustSingleRefOnInsertedTab(rRef, rCxt.mnInsertPos, rCxt.mnSheets, rOldPos, aNewPos))
aRes.mbReferenceModified = true;
}
@@ -3398,7 +3377,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnInsertedTab( sc::RefUpdateIns
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
if (adjustSingleRefOnInsertedTab(rRef.Ref1, rCxt.mnInsertPos, rCxt.mnSheets, rOldPos, aNewPos))
aRes.mbReferenceModified = true;
if (adjustSingleRefOnInsertedTab(rRef.Ref2, rCxt.mnInsertPos, rCxt.mnSheets, rOldPos, aNewPos))
@@ -3451,7 +3430,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( sc::RefUpdateMoveTa
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
if (adjustTabOnMove(aAbs, rCxt))
aRes.mbReferenceModified = true;
@@ -3461,7 +3440,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMovedTab( sc::RefUpdateMoveTa
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
if (adjustTabOnMove(aAbs.aStart, rCxt))
aRes.mbReferenceModified = true;
@@ -3496,7 +3475,7 @@ void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const
case svExternalSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
rRef.SetAddress(aAbs, rNewPos);
}
@@ -3505,7 +3484,7 @@ void ScTokenArray::AdjustReferenceOnMovedOrigin( const ScAddress& rOldPos, const
case svExternalDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
rRef.SetRange(aAbs, rNewPos);
}
@@ -3544,14 +3523,14 @@ void ScTokenArray::ClearTabDeleted( const ScAddress& rPos, SCTAB nStartTab, SCTA
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
clearTabDeletedFlag(rRef, rPos, nStartTab, nEndTab);
}
break;
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
clearTabDeletedFlag(rRef.Ref1, rPos, nStartTab, nEndTab);
clearTabDeletedFlag(rRef.Ref2, rPos, nStartTab, nEndTab);
}
@@ -3641,13 +3620,13 @@ void ScTokenArray::CheckRelativeReferenceBounds(
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- checkBounds(rCxt, rPos, nGroupLen, pToken->GetSingleRef(), rBounds);
+ checkBounds(rCxt, rPos, nGroupLen, *pToken->GetSingleRef(), rBounds);
}
break;
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- const ScComplexRefData& rRef = pToken->GetDoubleRef();
+ const ScComplexRefData& rRef = *pToken->GetDoubleRef();
checkBounds(rCxt, rPos, nGroupLen, rRef.Ref1, rBounds);
checkBounds(rCxt, rPos, nGroupLen, rRef.Ref2, rBounds);
}
@@ -3670,14 +3649,14 @@ void ScTokenArray::CheckRelativeReferenceBounds(
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- const ScSingleRefData& rRef = pToken->GetSingleRef();
+ const ScSingleRefData& rRef = *pToken->GetSingleRef();
checkBounds(rPos, nGroupLen, rRange, rRef, rBounds);
}
break;
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- const ScComplexRefData& rRef = pToken->GetDoubleRef();
+ const ScComplexRefData& rRef = *pToken->GetDoubleRef();
checkBounds(rPos, nGroupLen, rRange, rRef.Ref1, rBounds);
checkBounds(rPos, nGroupLen, rRange, rRef.Ref2, rBounds);
}
@@ -3733,7 +3712,7 @@ void appendTokenByType( sc::TokenStringContext& rCxt, OUStringBuffer& rBuf, cons
break;
case svExternalSingleRef:
rCxt.mpRefConv->makeExternalRefStr(
- rBuf, rPos, nFileId, aFileName, aTabName, static_cast<const ScToken&>(rToken).GetSingleRef());
+ rBuf, rPos, nFileId, aFileName, aTabName, *static_cast<const ScToken&>(rToken).GetSingleRef());
break;
case svExternalDoubleRef:
{
@@ -3745,7 +3724,7 @@ void appendTokenByType( sc::TokenStringContext& rCxt, OUStringBuffer& rBuf, cons
rCxt.mpRefConv->makeExternalRefStr(
rBuf, rPos, nFileId, aFileName, it->second, aTabName,
- static_cast<const ScToken&>(rToken).GetDoubleRef());
+ *static_cast<const ScToken&>(rToken).GetDoubleRef());
}
break;
default:
@@ -3778,7 +3757,7 @@ void appendTokenByType( sc::TokenStringContext& rCxt, OUStringBuffer& rBuf, cons
{
if (rCxt.mpRefConv)
{
- const ScSingleRefData& rRef = static_cast<const ScToken&>(rToken).GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken&>(rToken).GetSingleRef();
ScComplexRefData aRef;
aRef.Ref1 = rRef;
aRef.Ref2 = rRef;
@@ -3792,7 +3771,7 @@ void appendTokenByType( sc::TokenStringContext& rCxt, OUStringBuffer& rBuf, cons
{
if (rCxt.mpRefConv)
{
- const ScComplexRefData& rRef = static_cast<const ScToken&>(rToken).GetDoubleRef();
+ const ScComplexRefData& rRef = *static_cast<const ScToken&>(rToken).GetDoubleRef();
rCxt.mpRefConv->makeRefStr(rBuf, rCxt.meGram, rPos, rCxt.maErrRef, rCxt.maTabNames, rRef, false);
}
else
@@ -4025,7 +4004,7 @@ void ScTokenArray::WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nM
case svSingleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScSingleRefData& rRef = pToken->GetSingleRef();
+ ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
wrapAddress(aAbs, nMaxCol, nMaxRow);
rRef.SetAddress(aAbs, rPos);
@@ -4034,7 +4013,7 @@ void ScTokenArray::WrapReference( const ScAddress& rPos, SCCOL nMaxCol, SCROW nM
case svDoubleRef:
{
ScToken* pToken = static_cast<ScToken*>(*p);
- ScComplexRefData& rRef = pToken->GetDoubleRef();
+ ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
wrapAddress(aAbs.aStart, nMaxCol, nMaxRow);
wrapAddress(aAbs.aEnd, nMaxCol, nMaxRow);
diff --git a/sc/source/filter/excel/xechart.cxx b/sc/source/filter/excel/xechart.cxx
index 11a29a22c8de..b64285a932ec 100644
--- a/sc/source/filter/excel/xechart.cxx
+++ b/sc/source/filter/excel/xechart.cxx
@@ -922,7 +922,7 @@ sal_uInt16 XclExpChSourceLink::ConvertDataSequence( Reference< XDataSequence > x
case ::formula::svExternalDoubleRef:
{
// split 3-dimensional ranges into single sheets
- const ScComplexRefData& rComplexRef = static_cast< const ScToken* >( pToken )->GetDoubleRef();
+ const ScComplexRefData& rComplexRef = *static_cast< const ScToken* >( pToken )->GetDoubleRef();
ScAddress aAbs1 = rComplexRef.Ref1.toAbs(ScAddress());
ScAddress aAbs2 = rComplexRef.Ref2.toAbs(ScAddress());
for (SCsTAB nScTab = aAbs1.Tab(); nScTab <= aAbs2.Tab(); ++nScTab)
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index 1cd20563001e..a64a6354bea3 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -1901,7 +1901,7 @@ void XclExpFmlaCompImpl::ProcessCellRef( const XclExpScToken& rTokData )
{
// get the Excel address components, adjust internal data in aRefData
bool bNatLangRef = (meBiff == EXC_BIFF8) && mxData->mpScBasePos && (rTokData.GetOpCode() == ocColRowName);
- ScSingleRefData aRefData = static_cast< const ScToken* >( rTokData.mpScToken )->GetSingleRef();
+ ScSingleRefData aRefData = *static_cast< const ScToken* >( rTokData.mpScToken )->GetSingleRef();
XclAddress aXclPos( ScAddress::UNINITIALIZED );
ConvertRefData( aRefData, aXclPos, bNatLangRef, false, false );
@@ -1958,7 +1958,7 @@ void XclExpFmlaCompImpl::ProcessCellRef( const XclExpScToken& rTokData )
void XclExpFmlaCompImpl::ProcessRangeRef( const XclExpScToken& rTokData )
{
// get the Excel address components, adjust internal data in aRefData
- ScComplexRefData aRefData = static_cast< const ScToken* >( rTokData.mpScToken )->GetDoubleRef();
+ ScComplexRefData aRefData = *static_cast< const ScToken* >( rTokData.mpScToken )->GetDoubleRef();
XclRange aXclRange( ScAddress::UNINITIALIZED );
ConvertRefData( aRefData, aXclRange, false );
@@ -2005,7 +2005,7 @@ void XclExpFmlaCompImpl::ProcessExternalCellRef( const XclExpScToken& rTokData )
if( mxData->mpLinkMgr )
{
// get the Excel address components, adjust internal data in aRefData
- ScSingleRefData aRefData = static_cast< const ScToken* >( rTokData.mpScToken )->GetSingleRef();
+ ScSingleRefData aRefData = *static_cast< const ScToken* >( rTokData.mpScToken )->GetSingleRef();
XclAddress aXclPos( ScAddress::UNINITIALIZED );
ConvertRefData( aRefData, aXclPos, false, false, false );
@@ -2041,7 +2041,7 @@ void XclExpFmlaCompImpl::ProcessExternalRangeRef( const XclExpScToken& rTokData
if( mxData->mpLinkMgr )
{
// get the Excel address components, adjust internal data in aRefData
- ScComplexRefData aRefData = static_cast< const ScToken* >( rTokData.mpScToken )->GetDoubleRef();
+ ScComplexRefData aRefData = *static_cast< const ScToken* >( rTokData.mpScToken )->GetDoubleRef();
XclRange aXclRange( ScAddress::UNINITIALIZED );
ConvertRefData( aRefData, aXclRange, false );
@@ -2127,14 +2127,14 @@ void XclExpFmlaCompImpl::ProcessExternalName( const XclExpScToken& rTokData )
{
case svExternalSingleRef:
{
- ScSingleRefData aRefData = static_cast< ScToken* >( pScToken )->GetSingleRef();
+ ScSingleRefData aRefData = *static_cast< ScToken* >( pScToken )->GetSingleRef();
mxData->mpLinkMgr->StoreCell(
nFileId, pScToken->GetString().getString(), aRefData.toAbs(*mxData->mpScBasePos));
}
break;
case svExternalDoubleRef:
{
- ScComplexRefData aRefData = static_cast< ScToken* >( pScToken )->GetDoubleRef();
+ ScComplexRefData aRefData = *static_cast< ScToken* >( pScToken )->GetDoubleRef();
mxData->mpLinkMgr->StoreCellRange(
nFileId, pScToken->GetString().getString(), aRefData.toAbs(*mxData->mpScBasePos));
}
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 7e7786d063ff..e9ff858420ad 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -977,7 +977,7 @@ void XclExpExtName::WriteAddData( XclExpStream& rStrm )
{
case svExternalSingleRef:
{
- const ScSingleRefData& rRef = p->GetSingleRef();
+ const ScSingleRefData& rRef = *p->GetSingleRef();
if (rRef.IsTabRel())
break;
@@ -1001,7 +1001,7 @@ void XclExpExtName::WriteAddData( XclExpStream& rStrm )
}
case svExternalDoubleRef:
{
- const ScComplexRefData& rRef = p->GetDoubleRef();
+ const ScComplexRefData& rRef = *p->GetDoubleRef();
const ScSingleRefData& r1 = rRef.Ref1;
const ScSingleRefData& r2 = rRef.Ref2;
if (r1.IsTabRel() || r2.IsTabRel())
diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index ed4b1377c0d8..f9c84583c2bd 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -156,7 +156,7 @@ XclExpArrayRef XclExpArrayBuffer::FindArray( const ScTokenArray& rScTokArr, cons
// not a matrix reference token.
return xRec;
- const ScSingleRefData& rRef = static_cast<const ScToken*>(pToken)->GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken*>(pToken)->GetSingleRef();
ScAddress aAbsPos = rRef.toAbs(rBasePos);
XclExpArrayMap::const_iterator it = maRecMap.find(aAbsPos);
@@ -212,7 +212,7 @@ bool XclExpShrfmlaBuffer::IsValidTokenArray( const ScTokenArray& rArray ) const
{
case svSingleRef:
{
- const ScSingleRefData& rRefData = static_cast<const ScToken*>(p)->GetSingleRef();
+ const ScSingleRefData& rRefData = *static_cast<const ScToken*>(p)->GetSingleRef();
if (!GetFormulaCompiler().IsRef2D(rRefData))
// Excel's shared formula cannot include 3D reference.
return false;
@@ -220,7 +220,7 @@ bool XclExpShrfmlaBuffer::IsValidTokenArray( const ScTokenArray& rArray ) const
break;
case svDoubleRef:
{
- const ScComplexRefData& rRefData = static_cast<const ScToken*>(p)->GetDoubleRef();
+ const ScComplexRefData& rRefData = *static_cast<const ScToken*>(p)->GetDoubleRef();
if (!GetFormulaCompiler().IsRef2D(rRefData))
// Excel's shared formula cannot include 3D reference.
return false;
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index c65e558ca946..ad0836f9d4c1 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -780,7 +780,7 @@ sal_uInt16 XclImpChSourceLink::GetCellCount() const
case ::formula::svExternalDoubleRef:
{
// cell range
- const ScComplexRefData& rComplexRef = static_cast< const ScToken* >( pToken )->GetDoubleRef();
+ const ScComplexRefData& rComplexRef = *static_cast< const ScToken* >( pToken )->GetDoubleRef();
ScAddress aAbs1 = rComplexRef.Ref1.toAbs(ScAddress());
ScAddress aAbs2 = rComplexRef.Ref2.toAbs(ScAddress());
sal_uInt32 nTabs = static_cast<sal_uInt32>(aAbs2.Tab() - aAbs1.Tab() + 1);
diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx
index abb9c2d81112..d345fa240683 100644
--- a/sc/source/filter/excel/xlformula.cxx
+++ b/sc/source/filter/excel/xlformula.cxx
@@ -884,7 +884,7 @@ inline bool lclGetAddress( ScAddress& rAddress, const FormulaToken& rToken, cons
bool bIsSingleRef = (eOpCode == ocPush) && (rToken.GetType() == svSingleRef);
if( bIsSingleRef )
{
- const ScSingleRefData& rRef = static_cast<const ScToken&>(rToken).GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken&>(rToken).GetSingleRef();
rAddress = rRef.toAbs(rPos);
bIsSingleRef = !rRef.IsDeleted();
}
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index ba92b732dbbb..ec3ecf116ca4 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -2185,20 +2185,20 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getRangeNameTokensFromSr
{
case svSingleRef:
{
- const ScSingleRefData& rRef = static_cast<const ScToken*>(pToken)->GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken*>(pToken)->GetSingleRef();
OUString aTabName;
pSrcDoc->GetName(rRef.Tab(), aTabName);
- ScExternalSingleRefToken aNewToken(nFileId, aTabName, static_cast<const ScToken*>(pToken)->GetSingleRef());
+ ScExternalSingleRefToken aNewToken(nFileId, aTabName, *static_cast<const ScToken*>(pToken)->GetSingleRef());
pNew->AddToken(aNewToken);
bTokenAdded = true;
}
break;
case svDoubleRef:
{
- const ScSingleRefData& rRef = static_cast<const ScToken*>(pToken)->GetSingleRef();
+ const ScSingleRefData& rRef = *static_cast<const ScToken*>(pToken)->GetSingleRef();
OUString aTabName;
pSrcDoc->GetName(rRef.Tab(), aTabName);
- ScExternalDoubleRefToken aNewToken(nFileId, aTabName, static_cast<const ScToken*>(pToken)->GetDoubleRef());
+ ScExternalDoubleRefToken aNewToken(nFileId, aTabName, *static_cast<const ScToken*>(pToken)->GetDoubleRef());
pNew->AddToken(aNewToken);
bTokenAdded = true;
}
diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx
index 348dddb6341c..3e182f8ad1d9 100644
--- a/sc/source/ui/miscdlgs/anyrefdg.cxx
+++ b/sc/source/ui/miscdlgs/anyrefdg.cxx
@@ -209,12 +209,12 @@ void ScFormulaReferenceHelper::ShowFormulaReference(const OUString& rStr)
ScRange aRange;
if(bDoubleRef)
{
- ScComplexRefData aRef( pToken->GetDoubleRef() );
+ ScComplexRefData aRef( *pToken->GetDoubleRef() );
aRange = aRef.toAbs(aPos);
}
else
{
- ScSingleRefData aRef( pToken->GetSingleRef() );
+ ScSingleRefData aRef( *pToken->GetSingleRef() );
aRange.aStart = aRef.toAbs(aPos);
aRange.aEnd = aRange.aStart;
}
diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx
index b8a62ab7d751..b083634ed971 100644
--- a/sc/source/ui/unoobj/chart2uno.cxx
+++ b/sc/source/ui/unoobj/chart2uno.cxx
@@ -1118,7 +1118,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
{
case svSingleRef:
{
- const ScSingleRefData& rData = pToken->GetSingleRef();
+ const ScSingleRefData& rData = *pToken->GetSingleRef();
nMinCol = rData.Col();
nMinRow = rData.Row();
nMaxCol = rData.Col();
@@ -1128,7 +1128,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
break;
case svDoubleRef:
{
- const ScComplexRefData& rData = pToken->GetDoubleRef();
+ const ScComplexRefData& rData = *pToken->GetDoubleRef();
nMinCol = min(rData.Ref1.Col(), rData.Ref2.Col());
nMinRow = min(rData.Ref1.Row(), rData.Ref2.Row());
nMaxCol = max(rData.Ref1.Col(), rData.Ref2.Col());
@@ -1138,7 +1138,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
break;
case svExternalSingleRef:
{
- const ScSingleRefData& rData = pToken->GetSingleRef();
+ const ScSingleRefData& rData = *pToken->GetSingleRef();
nMinCol = rData.Col();
nMinRow = rData.Row();
nMaxCol = rData.Col();
@@ -1151,7 +1151,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
break;
case svExternalDoubleRef:
{
- const ScComplexRefData& rData = pToken->GetDoubleRef();
+ const ScComplexRefData& rData = *pToken->GetDoubleRef();
nMinCol = min(rData.Ref1.Col(), rData.Ref2.Col());
nMinRow = min(rData.Ref1.Row(), rData.Ref2.Row());
nMaxCol = max(rData.Ref1.Col(), rData.Ref2.Col());
@@ -1176,7 +1176,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
{
case svSingleRef:
{
- const ScSingleRefData& rData = pToken->GetSingleRef();
+ const ScSingleRefData& rData = *pToken->GetSingleRef();
nMinCol = min(nMinCol, rData.Col());
nMinRow = min(nMinRow, rData.Row());
@@ -1188,7 +1188,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
break;
case svDoubleRef:
{
- const ScComplexRefData& rData = pToken->GetDoubleRef();
+ const ScComplexRefData& rData = *pToken->GetDoubleRef();
nMinCol = min(nMinCol, rData.Ref1.Col());
nMinCol = min(nMinCol, rData.Ref2.Col());
@@ -1212,7 +1212,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
if (nFileId != pToken->GetIndex() || aExtTabName != pToken->GetString())
return false;
- const ScSingleRefData& rData = pToken->GetSingleRef();
+ const ScSingleRefData& rData = *pToken->GetSingleRef();
nMinCol = min(nMinCol, rData.Col());
nMinRow = min(nMinRow, rData.Row());
@@ -1228,7 +1228,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
if (nFileId != pToken->GetIndex() || aExtTabName != pToken->GetString())
return false;
- const ScComplexRefData& rData = pToken->GetDoubleRef();
+ const ScComplexRefData& rData = *pToken->GetDoubleRef();
nMinCol = min(nMinCol, rData.Ref1.Col());
nMinCol = min(nMinCol, rData.Ref2.Col());
@@ -1268,7 +1268,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
case svSingleRef:
case svExternalSingleRef:
{
- const ScSingleRefData& rData = pToken->GetSingleRef();
+ const ScSingleRefData& rData = *pToken->GetSingleRef();
if (rData.Col() == nMinCol && rData.Row() == nMinRow)
// The corner cell is contained.
return false;
@@ -1286,7 +1286,7 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens,
case svDoubleRef:
case svExternalDoubleRef:
{
- const ScComplexRefData& rData = pToken->GetDoubleRef();
+ const ScComplexRefData& rData = *pToken->GetDoubleRef();
const ScSingleRefData& r1 = rData.Ref1;
const ScSingleRefData& r2 = rData.Ref2;
if (r1.Col() <= nMinCol && nMinCol <= r2.Col() &&
@@ -1378,7 +1378,7 @@ public:
if (rRef->GetType() != svDoubleRef)
return;
- ScComplexRefData& rData = rRef->GetDoubleRef();
+ ScComplexRefData& rData = *rRef->GetDoubleRef();
ScSingleRefData& s = rData.Ref1;
ScSingleRefData& e = rData.Ref2;
@@ -1490,7 +1490,7 @@ ScChart2DataProvider::createDataSource(
if ((*itr)->GetType() != svDoubleRef)
continue;
- ScComplexRefData& rData = (*itr)->GetDoubleRef();
+ ScComplexRefData& rData = *(*itr)->GetDoubleRef();
ScSingleRefData& s = rData.Ref1;
ScSingleRefData& e = rData.Ref2;
@@ -1630,7 +1630,7 @@ public:
if (!ScRefTokenHelper::isRef(pToken))
return;
- const ScSingleRefData& r = pToken->GetSingleRef();
+ const ScSingleRefData& r = *pToken->GetSingleRef();
mpTabNumList->push_back(r.Tab());
}
@@ -1695,7 +1695,7 @@ void RangeAnalyzer::initRangeAnalyzer( const vector<ScTokenRef>& rTokens )
StackVar eVar = aRefToken->GetType();
if (eVar == svDoubleRef || eVar == svExternalDoubleRef)
{
- const ScComplexRefData& r = aRefToken->GetDoubleRef();
+ const ScComplexRefData& r = *aRefToken->GetDoubleRef();
if (r.Ref1.Tab() == r.Ref2.Tab())
{
mnColumnCount = std::max<SCCOL>(mnColumnCount, static_cast<SCCOL>(abs(r.Ref2.Col() - r.Ref1.Col())+1));
@@ -1716,7 +1716,7 @@ void RangeAnalyzer::initRangeAnalyzer( const vector<ScTokenRef>& rTokens )
}
else if (eVar == svSingleRef || eVar == svExternalSingleRef)
{
- const ScSingleRefData& r = aRefToken->GetSingleRef();
+ const ScSingleRefData& r = *aRefToken->GetSingleRef();
mnColumnCount = std::max<SCCOL>( mnColumnCount, 1);
mnRowCount = std::max<SCROW>( mnRowCount, 1);
if( mnStartColumn == -1 )
@@ -3596,7 +3596,7 @@ sal_Bool ScChart2DataSequence::switchToNext(sal_Bool bWrap)
if ((*itr)->GetType() != svDoubleRef)
continue;
- ScComplexRefData& rData = (*itr)->GetDoubleRef();
+ ScComplexRefData& rData = *(*itr)->GetDoubleRef();
ScSingleRefData& s = rData.Ref1;
ScSingleRefData& e = rData.Ref2;
@@ -3635,7 +3635,7 @@ sal_Bool ScChart2DataSequence::setToPointInTime(sal_Int32 nPoint)
if ((*itr)->GetType() != svDoubleRef)
continue;
- ScComplexRefData& rData = (*itr)->GetDoubleRef();
+ ScComplexRefData& rData = *(*itr)->GetDoubleRef();
ScSingleRefData& s = rData.Ref1;
ScSingleRefData& e = rData.Ref2;
diff --git a/sc/source/ui/unoobj/tokenuno.cxx b/sc/source/ui/unoobj/tokenuno.cxx
index 5e5d595ba359..b82383d1cbd9 100644
--- a/sc/source/ui/unoobj/tokenuno.cxx
+++ b/sc/source/ui/unoobj/tokenuno.cxx
@@ -408,15 +408,15 @@ bool ScTokenConversion::ConvertToTokenSequence( const ScDocument& rDoc,
case svSingleRef:
{
sheet::SingleReference aSingleRef;
- lcl_SingleRefToApi( aSingleRef, static_cast<const ScToken&>(rToken).GetSingleRef() );
+ lcl_SingleRefToApi( aSingleRef, *static_cast<const ScToken&>(rToken).GetSingleRef() );
rAPI.Data <<= aSingleRef;
}
break;
case formula::svDoubleRef:
{
sheet::ComplexReference aCompRef;
- lcl_SingleRefToApi( aCompRef.Reference1, static_cast<const ScToken&>(rToken).GetSingleRef() );
- lcl_SingleRefToApi( aCompRef.Reference2, static_cast<const ScToken&>(rToken).GetSingleRef2() );
+ lcl_SingleRefToApi( aCompRef.Reference1, *static_cast<const ScToken&>(rToken).GetSingleRef() );
+ lcl_SingleRefToApi( aCompRef.Reference2, *static_cast<const ScToken&>(rToken).GetSingleRef2() );
rAPI.Data <<= aCompRef;
}
break;
@@ -435,7 +435,7 @@ bool ScTokenConversion::ConvertToTokenSequence( const ScDocument& rDoc,
case svExternalSingleRef:
{
sheet::SingleReference aSingleRef;
- lcl_ExternalRefToApi( aSingleRef, static_cast<const ScToken&>(rToken).GetSingleRef() );
+ lcl_ExternalRefToApi( aSingleRef, *static_cast<const ScToken&>(rToken).GetSingleRef() );
size_t nCacheId;
rDoc.GetExternalRefManager()->getCacheTable(
rToken.GetIndex(), rToken.GetString().getString(), false, &nCacheId);
@@ -450,8 +450,8 @@ bool ScTokenConversion::ConvertToTokenSequence( const ScDocument& rDoc,
case svExternalDoubleRef:
{
sheet::ComplexReference aComplRef;
- lcl_ExternalRefToApi( aComplRef.Reference1, static_cast<const ScToken&>(rToken).GetSingleRef() );
- lcl_ExternalRefToApi( aComplRef.Reference2, static_cast<const ScToken&>(rToken).GetSingleRef2() );
+ lcl_ExternalRefToApi( aComplRef.Reference1, *static_cast<const ScToken&>(rToken).GetSingleRef() );
+ lcl_ExternalRefToApi( aComplRef.Reference2, *static_cast<const ScToken&>(rToken).GetSingleRef2() );
size_t nCacheId;
rDoc.GetExternalRefManager()->getCacheTable(
rToken.GetIndex(), rToken.GetString().getString(), false, &nCacheId);
@@ -459,7 +459,7 @@ bool ScTokenConversion::ConvertToTokenSequence( const ScDocument& rDoc,
// NOTE: This assumes that cached sheets are in consecutive order!
aComplRef.Reference2.Sheet =
aComplRef.Reference1.Sheet +
- (static_cast<const ScToken&>(rToken).GetSingleRef2().Tab() - static_cast<const ScToken&>(rToken).GetSingleRef().Tab());
+ (static_cast<const ScToken&>(rToken).GetSingleRef2()->Tab() - static_cast<const ScToken&>(rToken).GetSingleRef()->Tab());
sheet::ExternalReference aExtRef;
aExtRef.Index = rToken.GetIndex();
aExtRef.Reference <<= aComplRef;