[Libreoffice-commits] core.git: 8 commits - formula/source include/formula sc/inc sc/qa sc/source
Stephan Bergmann
sbergman at redhat.com
Thu Oct 23 00:30:52 PDT 2014
formula/source/core/api/token.cxx | 65 +++
include/formula/token.hxx | 21 +
sc/inc/formulaiter.hxx | 4
sc/inc/global.hxx | 2
sc/inc/token.hxx | 184 +++-----
sc/inc/tokenarray.hxx | 4
sc/inc/types.hxx | 4
sc/qa/unit/ucalc.cxx | 16
sc/qa/unit/ucalc_sharedformula.cxx | 2
sc/source/core/data/colorscale.cxx | 10
sc/source/core/data/conditio.cxx | 16
sc/source/core/data/documen4.cxx | 16
sc/source/core/data/documentimport.cxx | 6
sc/source/core/data/formulacell.cxx | 170 ++++----
sc/source/core/data/formulaiter.cxx | 14
sc/source/core/data/grouptokenconverter.cxx | 9
sc/source/core/data/validat.cxx | 4
sc/source/core/inc/interpre.hxx | 6
sc/source/core/tool/chgtrack.cxx | 18
sc/source/core/tool/compiler.cxx | 38 -
sc/source/core/tool/detfunc.cxx | 8
sc/source/core/tool/formularesult.cxx | 2
sc/source/core/tool/interpr1.cxx | 18
sc/source/core/tool/interpr2.cxx | 28 -
sc/source/core/tool/interpr4.cxx | 54 +-
sc/source/core/tool/interpr5.cxx | 4
sc/source/core/tool/rangenam.cxx | 30 -
sc/source/core/tool/reftokenhelper.cxx | 23 -
sc/source/core/tool/token.cxx | 577 +++++++++++-----------------
sc/source/filter/excel/xechart.cxx | 2
sc/source/filter/excel/xeformula.cxx | 14
sc/source/filter/excel/xelink.cxx | 6
sc/source/filter/excel/xetable.cxx | 6
sc/source/filter/excel/xichart.cxx | 4
sc/source/filter/excel/xlformula.cxx | 2
sc/source/ui/docshell/externalrefmgr.cxx | 12
sc/source/ui/miscdlgs/anyrefdg.cxx | 8
sc/source/ui/unoobj/chart2uno.cxx | 50 +-
sc/source/ui/unoobj/tokenuno.cxx | 16
39 files changed, 690 insertions(+), 783 deletions(-)
New commits:
commit 2e363d1135ede20e2560df4eff27c080bc7e782e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed Oct 22 18:58:57 2014 +0200
Remove ScToken from the formula::FormulaToken hierarchy
...to keep UBSan from complaining about illegal downcasts from FormulaToken to
ScToken (which were practically harmless, given that ScToken did not add any
data members).
Change-Id: I8fdc026eec363442cc4b720b71d65c972b4a4446
diff --git a/sc/inc/formulaiter.hxx b/sc/inc/formulaiter.hxx
index ae6880e..75ec9e7 100644
--- a/sc/inc/formulaiter.hxx
+++ b/sc/inc/formulaiter.hxx
@@ -24,7 +24,7 @@
class ScTokenArray;
class ScFormulaCell;
-class ScToken;
+namespace formula { class FormulaToken; }
/**
* Iterator for references in a formula cell.
@@ -37,7 +37,7 @@ private:
public:
ScDetectiveRefIter( ScFormulaCell* pCell );
bool GetNextRef( ScRange& rRange );
- ScToken* GetNextRefToken();
+ formula::FormulaToken* GetNextRefToken();
};
#endif
diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index b475850..143caf8 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -639,7 +639,7 @@ public:
static ScUnitConverter* GetUnitConverter();
- /// strchr() functionality on unicode, as long as we need it for ScToken etc.
+ /// strchr() functionality on unicode, as long as we need it for FormulaToken etc.
static const sal_Unicode* UnicodeStrChr( const sal_Unicode* pStr, sal_Unicode c );
static inline sal_Unicode ToUpperAlpha( sal_Unicode c )
diff --git a/sc/inc/token.hxx b/sc/inc/token.hxx
index 4176f1a..77f8a7f 100644
--- a/sc/inc/token.hxx
+++ b/sc/inc/token.hxx
@@ -45,25 +45,8 @@ class ScJumpMatrix;
typedef ::std::vector< ScComplexRefData > ScRefList;
-class SC_DLLPUBLIC ScToken : public formula::FormulaToken
-{
-private:
- // not implemented, prevent usage
- ScToken();
- ScToken& operator=( const ScToken& );
-
-protected:
-
- ScToken( formula::StackVar eTypeP,OpCode e = ocPush ) : formula::FormulaToken(eTypeP,e) {}
- ScToken( const ScToken& r ): formula::FormulaToken(r) {}
-
-public:
-
- virtual ~ScToken();
-};
-
#if DEBUG_FORMULA_COMPILER
-void DumpToken(ScToken const & rToken);
+void DumpToken(formula::FormulaToken const & rToken);
#endif
/** If rTok1 and rTok2 both are SingleRef or DoubleRef tokens, extend/merge
@@ -80,25 +63,25 @@ void DumpToken(ScToken const & rToken);
*/
formula::FormulaTokenRef extendRangeReference( formula::FormulaToken & rTok1, formula::FormulaToken & rTok2, const ScAddress & rPos, bool bReuseDoubleRef );
-inline void intrusive_ptr_add_ref(const ScToken* p)
+inline void intrusive_ptr_add_ref(const formula::FormulaToken* p)
{
p->IncRef();
}
-inline void intrusive_ptr_release(const ScToken* p)
+inline void intrusive_ptr_release(const formula::FormulaToken* p)
{
p->DecRef();
}
-class ScSingleRefToken : public ScToken
+class ScSingleRefToken : public formula::FormulaToken
{
private:
ScSingleRefData aSingleRef;
public:
ScSingleRefToken( const ScSingleRefData& r, OpCode e = ocPush ) :
- ScToken( formula::svSingleRef, e ), aSingleRef( r ) {}
+ FormulaToken( formula::svSingleRef, e ), aSingleRef( r ) {}
ScSingleRefToken( const ScSingleRefToken& r ) :
- ScToken( r ), aSingleRef( r.aSingleRef ) {}
+ FormulaToken( r ), aSingleRef( r.aSingleRef ) {}
virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
@@ -108,21 +91,21 @@ public:
DECL_FIXEDMEMPOOL_NEWDEL( ScSingleRefToken );
};
-class ScDoubleRefToken : public ScToken
+class ScDoubleRefToken : public formula::FormulaToken
{
private:
ScComplexRefData aDoubleRef;
public:
ScDoubleRefToken( const ScComplexRefData& r, OpCode e = ocPush ) :
- ScToken( formula::svDoubleRef, e ), aDoubleRef( r ) {}
+ FormulaToken( formula::svDoubleRef, e ), aDoubleRef( r ) {}
ScDoubleRefToken( const ScSingleRefData& r, OpCode e = ocPush ) :
- ScToken( formula::svDoubleRef, e )
+ FormulaToken( formula::svDoubleRef, e )
{
aDoubleRef.Ref1 = r;
aDoubleRef.Ref2 = r;
}
ScDoubleRefToken( const ScDoubleRefToken& r ) :
- ScToken( r ), aDoubleRef( r.aDoubleRef ) {}
+ FormulaToken( r ), aDoubleRef( r.aDoubleRef ) {}
virtual const ScSingleRefData* GetSingleRef() const SAL_OVERRIDE;
virtual ScSingleRefData* GetSingleRef() SAL_OVERRIDE;
virtual const ScComplexRefData* GetDoubleRef() const SAL_OVERRIDE;
@@ -136,7 +119,7 @@ public:
DECL_FIXEDMEMPOOL_NEWDEL( ScDoubleRefToken );
};
-class ScMatrixToken : public ScToken
+class ScMatrixToken : public formula::FormulaToken
{
private:
ScMatrixRef pMatrix;
@@ -155,7 +138,7 @@ public:
* both the values in matrix form, and the range address the matrix
* represents.
*/
-class ScMatrixRangeToken : public ScToken
+class ScMatrixRangeToken : public formula::FormulaToken
{
ScMatrixRef mpMatrix;
ScComplexRefData maRef;
@@ -173,7 +156,7 @@ public:
virtual FormulaToken* Clone() const SAL_OVERRIDE;
};
-class ScExternalSingleRefToken : public ScToken
+class ScExternalSingleRefToken : public formula::FormulaToken
{
sal_uInt16 mnFileId;
svl::SharedString maTabName;
@@ -193,7 +176,7 @@ public:
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScExternalSingleRefToken(*this); }
};
-class ScExternalDoubleRefToken : public ScToken
+class ScExternalDoubleRefToken : public formula::FormulaToken
{
sal_uInt16 mnFileId;
svl::SharedString maTabName; // name of the first sheet
@@ -217,7 +200,7 @@ public:
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScExternalDoubleRefToken(*this); }
};
-class ScExternalNameToken : public ScToken
+class ScExternalNameToken : public formula::FormulaToken
{
sal_uInt16 mnFileId;
svl::SharedString maName;
@@ -236,15 +219,15 @@ public:
// Only created from within the interpreter, no conversion from ScRawToken,
// never added to ScTokenArray!
-class ScJumpMatrixToken : public ScToken
+class ScJumpMatrixToken : public formula::FormulaToken
{
private:
ScJumpMatrix* pJumpMatrix;
public:
ScJumpMatrixToken( ScJumpMatrix* p ) :
- ScToken( formula::svJumpMatrix ), pJumpMatrix( p ) {}
+ FormulaToken( formula::svJumpMatrix ), pJumpMatrix( p ) {}
ScJumpMatrixToken( const ScJumpMatrixToken& r ) :
- ScToken( r ), pJumpMatrix( r.pJumpMatrix ) {}
+ FormulaToken( r ), pJumpMatrix( r.pJumpMatrix ) {}
virtual ~ScJumpMatrixToken();
virtual ScJumpMatrix* GetJumpMatrix() const SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
@@ -253,32 +236,32 @@ public:
// Only created from within the interpreter, no conversion from ScRawToken,
// never added to ScTokenArray!
-class ScRefListToken : public ScToken
+class ScRefListToken : public formula::FormulaToken
{
private:
ScRefList aRefList;
public:
ScRefListToken() :
- ScToken( formula::svRefList ) {}
+ FormulaToken( formula::svRefList ) {}
ScRefListToken( const ScRefListToken & r ) :
- ScToken( r ), aRefList( r.aRefList ) {}
+ FormulaToken( r ), aRefList( r.aRefList ) {}
virtual const ScRefList* GetRefList() const SAL_OVERRIDE;
virtual ScRefList* GetRefList() SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScRefListToken(*this); }
};
-class SC_DLLPUBLIC ScEmptyCellToken : public ScToken
+class SC_DLLPUBLIC ScEmptyCellToken : public formula::FormulaToken
{
bool bInherited :1;
bool bDisplayedAsString :1;
public:
explicit ScEmptyCellToken( bool bInheritedP, bool bDisplayAsString ) :
- ScToken( formula::svEmptyCell ),
+ FormulaToken( formula::svEmptyCell ),
bInherited( bInheritedP ),
bDisplayedAsString( bDisplayAsString ) {}
ScEmptyCellToken( const ScEmptyCellToken& r ) :
- ScToken( r ),
+ FormulaToken( r ),
bInherited( r.bInherited ),
bDisplayedAsString( r.bDisplayedAsString ) {}
bool IsInherited() const { return bInherited; }
@@ -290,10 +273,10 @@ public:
};
/** Transports the result from the interpreter to the formula cell. */
-class SC_DLLPUBLIC ScMatrixCellResultToken : public ScToken
+class SC_DLLPUBLIC ScMatrixCellResultToken : public formula::FormulaToken
{
// No non-const access implemented, silence down unxsols4 complaining about
- // the public GetMatrix() hiding the one from ScToken.
+ // the public GetMatrix() hiding the one from FormulaToken.
virtual ScMatrix* GetMatrix() SAL_OVERRIDE;
protected:
@@ -366,7 +349,7 @@ public:
void ResetResult();
};
-class SC_DLLPUBLIC ScHybridCellToken : public ScToken
+class SC_DLLPUBLIC ScHybridCellToken : public formula::FormulaToken
{
private:
double mfDouble;
@@ -397,7 +380,7 @@ class SingleDoubleRefModifier
SingleDoubleRefModifier& operator=( const SingleDoubleRefModifier& );
public:
- SingleDoubleRefModifier( ScToken& rT )
+ SingleDoubleRefModifier( formula::FormulaToken& rT )
{
formula::StackVar eType = rT.GetType();
if ( eType == formula::svSingleRef || eType == formula::svExternalSingleRef )
@@ -433,7 +416,7 @@ public:
const ScSingleRefData& Ref1;
const ScSingleRefData& Ref2;
- SingleDoubleRefProvider( const ScToken& r )
+ SingleDoubleRefProvider( const formula::FormulaToken& r )
: Ref1( *r.GetSingleRef() ),
Ref2( (r.GetType() == formula::svDoubleRef ||
r.GetType() == formula::svExternalDoubleRef) ?
diff --git a/sc/inc/tokenarray.hxx b/sc/inc/tokenarray.hxx
index 9762364..84f4312 100644
--- a/sc/inc/tokenarray.hxx
+++ b/sc/inc/tokenarray.hxx
@@ -54,7 +54,7 @@ class SC_DLLPUBLIC ScTokenArray : public formula::FormulaTokenArray
public:
ScTokenArray();
- /// Assignment with references to ScToken entries (not copied!)
+ /// Assignment with references to FormulaToken entries (not copied!)
ScTokenArray( const ScTokenArray& );
virtual ~ScTokenArray();
ScTokenArray* Clone() const; /// True copy!
@@ -112,7 +112,7 @@ public:
/// Assign XML string placeholder to the array
void AssignXMLString( const OUString &rText, const OUString &rFormulaNmsp );
- /// Assignment with references to ScToken entries (not copied!)
+ /// Assignment with references to FormulaToken entries (not copied!)
ScTokenArray& operator=( const ScTokenArray& );
/// Make 3D references point to old referenced position even if relative
diff --git a/sc/inc/types.hxx b/sc/inc/types.hxx
index d40b2a5..e483b1e 100644
--- a/sc/inc/types.hxx
+++ b/sc/inc/types.hxx
@@ -32,8 +32,8 @@ typedef sal_Int32 SCsCOLROW;
typedef ::boost::intrusive_ptr<ScMatrix> ScMatrixRef;
typedef ::boost::intrusive_ptr<const ScMatrix> ScConstMatrixRef;
-class ScToken;
-typedef ::boost::intrusive_ptr<ScToken> ScTokenRef;
+namespace formula { class FormulaToken; }
+typedef ::boost::intrusive_ptr<formula::FormulaToken> ScTokenRef;
typedef sal_uInt8 ScMatValType;
const ScMatValType SC_MATVAL_VALUE = 0x00;
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 7258326..0c081c1 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1242,7 +1242,7 @@ bool broadcasterShifted(const ScDocument& rDoc, const ScAddress& rFrom, const Sc
return true;
}
-ScToken* getSingleRefToken(ScDocument& rDoc, const ScAddress& rPos)
+formula::FormulaToken* getSingleRefToken(ScDocument& rDoc, const ScAddress& rPos)
{
ScFormulaCell* pFC = rDoc.GetFormulaCell(rPos);
if (!pFC)
@@ -1258,7 +1258,7 @@ ScToken* getSingleRefToken(ScDocument& rDoc, const ScAddress& rPos)
return NULL;
}
- ScToken* pToken = static_cast<ScToken*>(pTokens->First());
+ formula::FormulaToken* pToken = pTokens->First();
if (!pToken || pToken->GetType() != formula::svSingleRef)
{
cerr << "Not a single reference token." << endl;
@@ -1270,7 +1270,7 @@ ScToken* getSingleRefToken(ScDocument& rDoc, const ScAddress& rPos)
bool checkRelativeRefToken(ScDocument& rDoc, const ScAddress& rPos, SCsCOL nRelCol, SCsROW nRelRow)
{
- ScToken* pToken = getSingleRefToken(rDoc, rPos);
+ formula::FormulaToken* pToken = getSingleRefToken(rDoc, rPos);
if (!pToken)
return false;
@@ -1292,7 +1292,7 @@ bool checkRelativeRefToken(ScDocument& rDoc, const ScAddress& rPos, SCsCOL nRelC
bool checkDeletedRefToken(ScDocument& rDoc, const ScAddress& rPos)
{
- ScToken* pToken = getSingleRefToken(rDoc, rPos);
+ formula::FormulaToken* pToken = getSingleRefToken(rDoc, rPos);
if (!pToken)
return false;
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index e4e1a12..16d5577 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 = 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 809c186..b915e25 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -48,8 +48,8 @@ ScFormulaListener::ScFormulaListener(ScFormulaCell* pCell):
void ScFormulaListener::startListening(ScTokenArray* pArr, const ScAddress& rPos)
{
pArr->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
{
switch (t->GetType())
{
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index f9a9796..0cfbaa1 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 = 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 = *t->GetSingleRef();
if ( rRef1.IsColRel() || rRef1.IsRowRel() || rRef1.IsTabRel() )
return true;
}
@@ -1359,8 +1359,8 @@ void ScConditionEntry::SourceChanged( const ScAddress& rChanged )
if (pFormula)
{
pFormula->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pFormula->GetNextReference()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pFormula->GetNextReference() ) != NULL )
{
SingleDoubleRefProvider aProv( *t );
if ( aProv.Ref1.IsColRel() || aProv.Ref1.IsRowRel() || aProv.Ref1.IsTabRel() ||
@@ -1449,8 +1449,8 @@ ScAddress ScConditionEntry::GetValidSrcPos() const
if (pFormula)
{
pFormula->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pFormula->GetNextReference()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pFormula->GetNextReference() ) != NULL )
{
ScSingleRefData& rRef1 = *t->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(aSrcPos);
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 14493e9..4b36b65 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -307,7 +307,7 @@ void ScDocument::InsertMatrixFormula(SCCOL nCol1, SCROW nRow1,
aRefData.SetAddress(aBasePos, aBasePos);
ScTokenArray aArr; // consists only of one single reference token.
- ScToken* t = static_cast<ScToken*>(aArr.AddMatrixSingleReference( aRefData));
+ formula::FormulaToken* t = aArr.AddMatrixSingleReference( aRefData);
itr = rMark.begin();
for (; itr != itrEnd && *itr < nMax; ++itr)
@@ -438,7 +438,7 @@ void ScDocument::InsertTableOp(const ScTabOpParam& rParam, // Mehrfachopera
namespace {
-bool setCacheTableReferenced(ScToken& rToken, ScExternalRefManager& rRefMgr, const ScAddress& rPos)
+bool setCacheTableReferenced(formula::FormulaToken& rToken, ScExternalRefManager& rRefMgr, const ScAddress& rPos)
{
switch (rToken.GetType())
{
@@ -473,9 +473,9 @@ bool ScDocument::MarkUsedExternalReferences( ScTokenArray& rArr, const ScAddress
ScExternalRefManager* pRefMgr = NULL;
rArr.Reset();
- ScToken* t = NULL;
+ formula::FormulaToken* t = NULL;
bool bAllMarked = false;
- while (!bAllMarked && (t = static_cast<ScToken*>(rArr.GetNextReferenceOrName())) != NULL)
+ while (!bAllMarked && (t = rArr.GetNextReferenceOrName()) != NULL)
{
if (t->IsExternalRef())
{
@@ -493,7 +493,7 @@ bool ScDocument::MarkUsedExternalReferences( ScTokenArray& rArr, const ScAddress
continue;
ScTokenArray* pArray = pRangeData->GetCode();
- for (t = static_cast<ScToken*>(pArray->First()); t; t = static_cast<ScToken*>(pArray->Next()))
+ for (t = pArray->First(); t; t = pArray->Next())
{
if (!t->IsExternalRef())
continue;
diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx
index a336e71..ed46752 100644
--- a/sc/source/core/data/documentimport.cxx
+++ b/sc/source/core/data/documentimport.cxx
@@ -322,7 +322,7 @@ void ScDocumentImport::setMatrixCells(
aRefData.SetAddress(rBasePos, rBasePos);
ScTokenArray aArr; // consists only of one single reference token.
- ScToken* t = static_cast<ScToken*>(aArr.AddMatrixSingleReference(aRefData));
+ formula::FormulaToken* t = aArr.AddMatrixSingleReference(aRefData);
ScAddress aPos = rBasePos;
for (SCROW nRow = rRange.aStart.Row()+1; nRow <= rRange.aEnd.Row(); ++nRow)
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index f1fea0e..6e44923 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -134,11 +134,11 @@ lcl_checkRangeDimensions(
static bool
lcl_checkRangeDimensions(
const ScAddress& rPos,
- const deque<ScToken*>::const_iterator aBegin,
- const deque<ScToken*>::const_iterator aEnd,
+ const deque<formula::FormulaToken*>::const_iterator aBegin,
+ const deque<formula::FormulaToken*>::const_iterator aEnd,
bool& bCol, bool& bRow, bool& bTab)
{
- deque<ScToken*>::const_iterator aCur(aBegin);
+ deque<formula::FormulaToken*>::const_iterator aCur(aBegin);
++aCur;
const SingleDoubleRefProvider aRef(**aBegin);
bool bOk(false);
@@ -164,7 +164,7 @@ lcl_checkRangeDimensions(
return false;
}
-class LessByReference : std::binary_function<const ScToken*, const ScToken*, bool>
+class LessByReference : std::binary_function<const formula::FormulaToken*, const formula::FormulaToken*, bool>
{
ScAddress maPos;
DimensionSelector maFunc;
@@ -172,7 +172,7 @@ public:
LessByReference(const ScAddress& rPos, const DimensionSelector& rFunc) :
maPos(rPos), maFunc(rFunc) {}
- bool operator() (const ScToken* pRef1, const ScToken* pRef2)
+ bool operator() (const formula::FormulaToken* pRef1, const formula::FormulaToken* pRef2)
{
const SingleDoubleRefProvider aRef1(*pRef1);
const SingleDoubleRefProvider aRef2(*pRef2);
@@ -185,7 +185,7 @@ public:
* denoted by token p1. Dimension, in which the comparison takes place, is
* given by maFunc.
*/
-class AdjacentByReference : std::binary_function<const ScToken*, const ScToken*, bool>
+class AdjacentByReference : std::binary_function<const formula::FormulaToken*, const formula::FormulaToken*, bool>
{
ScAddress maPos;
DimensionSelector maFunc;
@@ -193,7 +193,7 @@ public:
AdjacentByReference(const ScAddress& rPos, DimensionSelector aFunc) :
maPos(rPos), maFunc(aFunc) {}
- bool operator() (const ScToken* p1, const ScToken* p2)
+ bool operator() (const formula::FormulaToken* p1, const formula::FormulaToken* p2)
{
const SingleDoubleRefProvider aRef1(*p1);
const SingleDoubleRefProvider aRef2(*p2);
@@ -203,9 +203,9 @@ public:
static bool
lcl_checkIfAdjacent(
- const ScAddress& rPos, const deque<ScToken*>& rReferences, const DimensionSelector aWhich)
+ const ScAddress& rPos, const deque<formula::FormulaToken*>& rReferences, const DimensionSelector aWhich)
{
- typedef deque<ScToken*>::const_iterator Iter;
+ typedef deque<formula::FormulaToken*>::const_iterator Iter;
Iter aBegin(rReferences.begin());
Iter aEnd(rReferences.end());
Iter aBegin1(aBegin);
@@ -215,7 +215,7 @@ lcl_checkIfAdjacent(
static void
lcl_fillRangeFromRefList(
- const ScAddress& aPos, const deque<ScToken*>& rReferences, ScRange& rRange)
+ const ScAddress& aPos, const deque<formula::FormulaToken*>& rReferences, ScRange& rRange)
{
const ScSingleRefData aStart(
SingleDoubleRefProvider(*rReferences.front()).Ref1);
@@ -227,7 +227,7 @@ lcl_fillRangeFromRefList(
static bool
lcl_refListFormsOneRange(
- const ScAddress& rPos, deque<ScToken*>& rReferences,
+ const ScAddress& rPos, deque<formula::FormulaToken*>& rReferences,
ScRange& rRange)
{
if (rReferences.size() == 1)
@@ -278,7 +278,7 @@ bool lcl_isReference(const FormulaToken& rToken)
rToken.GetType() == svDoubleRef;
}
-void adjustRangeName(ScToken* pToken, ScDocument& rNewDoc, const ScDocument* pOldDoc, const ScAddress& aNewPos, const ScAddress& aOldPos)
+void adjustRangeName(formula::FormulaToken* pToken, ScDocument& rNewDoc, const ScDocument* pOldDoc, const ScAddress& aNewPos, const ScAddress& aOldPos)
{
bool bOldGlobal = pToken->IsGlobal();
SCTAB aOldTab = aOldPos.Tab();
@@ -352,7 +352,7 @@ void adjustRangeName(ScToken* pToken, ScDocument& rNewDoc, const ScDocument* pOl
pToken->SetGlobal(bNewGlobal);
}
-void adjustDBRange(ScToken* pToken, ScDocument& rNewDoc, const ScDocument* pOldDoc)
+void adjustDBRange(formula::FormulaToken* pToken, ScDocument& rNewDoc, const ScDocument* pOldDoc)
{
ScDBCollection* pOldDBCollection = pOldDoc->GetDBCollection();
if (!pOldDBCollection)
@@ -736,8 +736,8 @@ ScFormulaCell::ScFormulaCell( const ScFormulaCell& rCell, ScDocument& rDoc, cons
{
if (!pDocument->IsClipboardSource() || aPos.Tab() != rCell.aPos.Tab())
{
- ScToken* pToken = NULL;
- while((pToken = static_cast<ScToken*>(pCode->GetNextName()))!= NULL)
+ formula::FormulaToken* pToken = NULL;
+ while((pToken = pCode->GetNextName())!= NULL)
{
OpCode eOpCode = pToken->GetOpCode();
if (eOpCode == ocName)
@@ -762,8 +762,8 @@ ScFormulaCell::ScFormulaCell( const ScFormulaCell& rCell, ScDocument& rDoc, cons
if( !bCompile )
{ // Name references with references and ColRowNames
pCode->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReferenceOrName()) ) != NULL && !bCompile )
+ formula::FormulaToken* t;
+ while ( ( t = pCode->GetNextReferenceOrName() ) != NULL && !bCompile )
{
if ( t->IsExternalRef() )
{
@@ -858,7 +858,7 @@ void ScFormulaCell::GetFormula( OUStringBuffer& rBuffer,
{
// Reference to another cell that contains a matrix formula.
pCode->Reset();
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
if( p )
{
/* FIXME: original GetFormula() code obtained
@@ -922,7 +922,7 @@ OUString ScFormulaCell::GetFormula( sc::CompileFormulaContext& rCxt ) const
{
// Reference to another cell that contains a matrix formula.
pCode->Reset();
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
if( p )
{
/* FIXME: original GetFormula() code obtained
@@ -972,7 +972,7 @@ void ScFormulaCell::GetResultDimensions( SCSIZE& rCols, SCSIZE& rRows )
const ScMatrix* pMat = NULL;
if (!pCode->GetCodeError() && aResult.GetType() == svMatrixCell &&
- ((pMat = static_cast<const ScToken*>(aResult.GetToken().get())->GetMatrix()) != 0))
+ ((pMat = aResult.GetToken().get()->GetMatrix()) != 0))
pMat->GetDimensions( rCols, rRows );
else
{
@@ -2334,7 +2334,7 @@ bool ScFormulaCell::GetMatrixOrigin( ScAddress& rPos ) const
case MM_REFERENCE :
{
pCode->Reset();
- ScToken* t = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* t = pCode->GetNextReferenceRPN();
if( t )
{
ScSingleRefData& rRef = *t->GetSingleRef();
@@ -2542,7 +2542,7 @@ sc::FormulaResultValue ScFormulaCell::GetResult() const
bool ScFormulaCell::HasOneReference( ScRange& r ) const
{
pCode->Reset();
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
if( p && !pCode->GetNextReferenceRPN() ) // only one!
{
SingleDoubleRefProvider aProv( *p );
@@ -2573,13 +2573,12 @@ ScFormulaCell::HasRefListExpressibleAsOneReference(ScRange& rRange) const
pCode->Reset();
// Get first reference, if any
- ScToken* const pFirstReference(
- dynamic_cast<ScToken*>(pCode->GetNextReferenceRPN()));
+ formula::FormulaToken* const pFirstReference(pCode->GetNextReferenceRPN());
if (pFirstReference)
{
// Collect all consecutive references, starting by the one
// already found
- std::deque<ScToken*> aReferences;
+ std::deque<formula::FormulaToken*> aReferences;
aReferences.push_back(pFirstReference);
FormulaToken* pToken(pCode->NextRPN());
FormulaToken* pFunction(0);
@@ -2587,7 +2586,7 @@ ScFormulaCell::HasRefListExpressibleAsOneReference(ScRange& rRange) const
{
if (lcl_isReference(*pToken))
{
- aReferences.push_back(dynamic_cast<ScToken*>(pToken));
+ aReferences.push_back(pToken);
pToken = pCode->NextRPN();
}
else
@@ -2611,8 +2610,8 @@ ScFormulaCell::HasRefListExpressibleAsOneReference(ScRange& rRange) const
bool ScFormulaCell::HasRelNameReference() const
{
pCode->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pCode->GetNextReferenceRPN() ) != NULL )
{
if ( t->GetSingleRef()->IsRelName() ||
(t->GetType() == formula::svDoubleRef &&
@@ -2658,11 +2657,11 @@ bool checkCompileColRowName(
if (rCxt.mnColDelta <= 0 && rCxt.mnRowDelta <= 0)
return false;
- ScToken* t;
+ formula::FormulaToken* t;
ScRangePairList* pColList = rDoc.GetColNameRanges();
ScRangePairList* pRowList = rDoc.GetRowNameRanges();
rCode.Reset();
- while ((t = static_cast<ScToken*>(rCode.GetNextColRowName())) != NULL)
+ while ((t = rCode.GetNextColRowName()) != NULL)
{
ScSingleRefData& rRef = *t->GetSingleRef();
if (rCxt.mnRowDelta > 0 && rRef.IsColRel())
@@ -2706,8 +2705,8 @@ bool checkCompileColRowName(
return true;
rCode.Reset();
- const ScToken* t = static_cast<const ScToken*>(rCode.GetNextColRowName());
- for (; t; t = static_cast<const ScToken*>(rCode.GetNextColRowName()))
+ const formula::FormulaToken* t = rCode.GetNextColRowName();
+ for (; t; t = rCode.GetNextColRowName())
{
const ScSingleRefData& rRef = *t->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
@@ -3192,7 +3191,7 @@ void ScFormulaCell::UpdateInsertTabAbs(SCTAB nTable)
return;
pCode->Reset();
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
while (p)
{
ScSingleRefData& rRef1 = *p->GetSingleRef();
@@ -3204,7 +3203,7 @@ void ScFormulaCell::UpdateInsertTabAbs(SCTAB nTable)
if (!rRef2.IsTabRel() && nTable <= rRef2.Tab())
rRef2.IncTab(1);
}
- p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ p = pCode->GetNextReferenceRPN();
}
}
@@ -3219,7 +3218,7 @@ bool ScFormulaCell::TestTabRefAbs(SCTAB nTable)
bool bRet = false;
pCode->Reset();
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
while (p)
{
ScSingleRefData& rRef1 = *p->GetSingleRef();
@@ -3241,7 +3240,7 @@ bool ScFormulaCell::TestTabRefAbs(SCTAB nTable)
rRef2.SetAbsTab(aPos.Tab());
}
}
- p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ p = pCode->GetNextReferenceRPN();
}
return bRet;
}
@@ -3260,8 +3259,8 @@ void ScFormulaCell::TransposeReference()
{
bool bFound = false;
pCode->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() && rRef1.IsRowRel() )
@@ -3317,10 +3316,10 @@ void ScFormulaCell::UpdateTranspose( const ScRange& rSource, const ScAddress& rD
ScTokenArray* pOld = pUndoDoc ? pCode->Clone() : NULL;
bool bRefChanged = false;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while( (t = static_cast<ScToken*>(pCode->GetNextReferenceOrName())) != NULL )
+ while( (t = pCode->GetNextReferenceOrName()) != NULL )
{
if( t->GetOpCode() == ocName )
{
@@ -3371,10 +3370,10 @@ void ScFormulaCell::UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY
EndListeningTo( pDocument );
bool bRefChanged = false;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while( (t = static_cast<ScToken*>(pCode->GetNextReferenceOrName())) != NULL )
+ while( (t = pCode->GetNextReferenceOrName()) != NULL )
{
if( t->GetOpCode() == ocName )
{
@@ -3554,8 +3553,8 @@ ScFormulaCell::CompareState ScFormulaCell::CompareByTokenArray( ScFormulaCell& r
// check we are basically the same function
for ( sal_uInt16 i = 0; i < nThisLen; i++ )
{
- ScToken *pThisTok = static_cast<ScToken*>( pThis[i] );
- ScToken *pOtherTok = static_cast<ScToken*>( pOther[i] );
+ formula::FormulaToken *pThisTok = pThis[i];
+ formula::FormulaToken *pOtherTok = pOther[i];
if ( pThisTok->GetType() != pOtherTok->GetType() ||
pThisTok->GetOpCode() != pOtherTok->GetOpCode() ||
@@ -3708,12 +3707,11 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
pCode->Reset();
for (const formula::FormulaToken* p = pCode->First(); p; p = pCode->Next())
{
- const ScToken* pToken = static_cast<const ScToken*>(p);
- switch (pToken->GetType())
+ switch (p->GetType())
{
case svSingleRef:
{
- ScSingleRefData aRef = *pToken->GetSingleRef();
+ ScSingleRefData aRef = *p->GetSingleRef();
ScAddress aRefPos = aRef.toAbs(aPos);
formula::FormulaTokenRef pNewToken = pDocument->ResolveStaticReference(aRefPos);
if (!pNewToken)
@@ -3724,7 +3722,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
break;
case svDoubleRef:
{
- ScComplexRefData aRef = *pToken->GetDoubleRef();
+ ScComplexRefData aRef = *p->GetDoubleRef();
ScRange aRefRange = aRef.toAbs(aPos);
formula::FormulaTokenRef pNewToken = pDocument->ResolveStaticReference(aRefRange);
if (!pNewToken)
@@ -3734,7 +3732,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
}
break;
default:
- aCode.AddToken(*pToken);
+ aCode.AddToken(*p);
}
}
@@ -3776,7 +3774,7 @@ bool ScFormulaCell::InterpretInvariantFormulaGroup()
namespace {
void startListeningArea(
- ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const ScToken& rToken)
+ ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const formula::FormulaToken& rToken)
{
const ScSingleRefData& rRef1 = *rToken.GetSingleRef();
const ScSingleRefData& rRef2 = *rToken.GetSingleRef2();
@@ -3815,8 +3813,8 @@ void ScFormulaCell::StartListeningTo( ScDocument* pDoc )
}
pArr->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
{
switch (t->GetType())
{
@@ -3853,8 +3851,8 @@ void ScFormulaCell::StartListeningTo( sc::StartListeningContext& rCxt )
}
pArr->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
{
switch (t->GetType())
{
@@ -3878,7 +3876,7 @@ void ScFormulaCell::StartListeningTo( sc::StartListeningContext& rCxt )
namespace {
void endListeningArea(
- ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const ScToken& rToken)
+ ScFormulaCell* pCell, ScDocument& rDoc, const ScAddress& rPos, const formula::FormulaToken& rToken)
{
const ScSingleRefData& rRef1 = *rToken.GetSingleRef();
const ScSingleRefData& rRef2 = *rToken.GetSingleRef2();
@@ -3923,8 +3921,8 @@ void ScFormulaCell::EndListeningTo( ScDocument* pDoc, ScTokenArray* pArr,
aCellPos = aPos;
}
pArr->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
{
switch (t->GetType())
{
@@ -3963,8 +3961,8 @@ void ScFormulaCell::EndListeningTo( sc::EndListeningContext& rCxt )
}
pArr->Reset();
- ScToken* t;
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ formula::FormulaToken* t;
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
{
switch (t->GetType())
{
diff --git a/sc/source/core/data/formulaiter.cxx b/sc/source/core/data/formulaiter.cxx
index e545493..e17da07 100644
--- a/sc/source/core/data/formulaiter.cxx
+++ b/sc/source/core/data/formulaiter.cxx
@@ -32,7 +32,7 @@ ScDetectiveRefIter::ScDetectiveRefIter( ScFormulaCell* pCell )
aPos = pCell->aPos;
}
-static bool lcl_ScDetectiveRefIter_SkipRef( ScToken* p, const ScAddress& rPos )
+static bool lcl_ScDetectiveRefIter_SkipRef( formula::FormulaToken* p, const ScAddress& rPos )
{
ScSingleRefData& rRef1 = *p->GetSingleRef();
ScAddress aAbs1 = rRef1.toAbs(rPos);
@@ -51,7 +51,7 @@ static bool lcl_ScDetectiveRefIter_SkipRef( ScToken* p, const ScAddress& rPos )
bool ScDetectiveRefIter::GetNextRef( ScRange& rRange )
{
bool bRet = false;
- ScToken* p = GetNextRefToken();
+ formula::FormulaToken* p = GetNextRefToken();
if( p )
{
SingleDoubleRefProvider aProv( *p );
@@ -63,12 +63,12 @@ bool ScDetectiveRefIter::GetNextRef( ScRange& rRange )
return bRet;
}
-ScToken* ScDetectiveRefIter::GetNextRefToken()
+formula::FormulaToken* ScDetectiveRefIter::GetNextRefToken()
{
- ScToken* p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ formula::FormulaToken* p = pCode->GetNextReferenceRPN();
while (p && lcl_ScDetectiveRefIter_SkipRef(p, aPos))
{
- p = static_cast<ScToken*>(pCode->GetNextReferenceRPN());
+ p = pCode->GetNextReferenceRPN();
}
return p;
}
diff --git a/sc/source/core/data/grouptokenconverter.cxx b/sc/source/core/data/grouptokenconverter.cxx
index 06eb18a..bfb6de3 100644
--- a/sc/source/core/data/grouptokenconverter.cxx
+++ b/sc/source/core/data/grouptokenconverter.cxx
@@ -96,13 +96,12 @@ bool ScGroupTokenConverter::convert(ScTokenArray& rCode)
// vector reference token. Note: we only care about relative vs
// absolute reference state for row directions.
- const ScToken* pToken = static_cast<const ScToken*>(p);
SCROW nLen = mrCell.GetCellGroup()->mnLength;
- switch (pToken->GetType())
+ switch (p->GetType())
{
case svSingleRef:
{
- ScSingleRefData aRef = *pToken->GetSingleRef();
+ ScSingleRefData aRef = *p->GetSingleRef();
ScAddress aRefPos = aRef.toAbs(mrPos);
if (aRef.IsRowRel())
{
@@ -141,7 +140,7 @@ bool ScGroupTokenConverter::convert(ScTokenArray& rCode)
break;
case svDoubleRef:
{
- ScComplexRefData aRef = *pToken->GetDoubleRef();
+ ScComplexRefData aRef = *p->GetDoubleRef();
ScRange aAbs = aRef.toAbs(mrPos);
// Check for self reference.
@@ -228,7 +227,7 @@ bool ScGroupTokenConverter::convert(ScTokenArray& rCode)
}
break;
default:
- mrGroupTokens.AddToken(*pToken);
+ mrGroupTokens.AddToken(*p);
}
}
diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx
index b760be3..96798f0 100644
--- a/sc/source/core/data/validat.cxx
+++ b/sc/source/core/data/validat.cxx
@@ -682,8 +682,8 @@ bool ScValidationData::GetSelectionFromFormula(
ScTokenArray* pArr = (ScTokenArray*) &rTokArr;
pArr->Reset();
- ScToken* t = NULL;
- if (pArr->GetLen() == 1 && (t = static_cast<ScToken*>(pArr->GetNextReferenceOrName())) != NULL)
+ formula::FormulaToken* t = NULL;
+ if (pArr->GetLen() == 1 && (t = pArr->GetNextReferenceOrName()) != NULL)
{
if (t->GetOpCode() == ocDBArea)
{
diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index dc7de33..ed6c171 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -46,7 +46,7 @@ struct ScQueryEntry;
struct ScSingleRefData;
struct ScComplexRefData;
-class ScToken;
+namespace formula { class FormulaToken; }
class ScJumpMatrix;
struct ScRefCellValue;
@@ -156,7 +156,7 @@ private:
svl::SharedStringPool& mrStrPool;
formula::FormulaTokenRef xResult;
ScJumpMatrix* pJumpMatrix; // currently active array condition, if any
- ScTokenMatrixMap* pTokenMatrixMap; // map ScToken* to formula::FormulaTokenRef if in array condition
+ ScTokenMatrixMap* pTokenMatrixMap; // map FormulaToken* to formula::FormulaTokenRef if in array condition
ScFormulaCell* pMyFormulaCell; // the cell of this formula expression
SvNumberFormatter* pFormatter;
@@ -289,7 +289,7 @@ void DoubleRefToRange( const ScComplexRefData&, ScRange&, bool bDontCheckForTabl
*/
void PopDoubleRef( ScRange & rRange, short & rParam, size_t & rRefInList );
void PopDoubleRef( ScRange&, bool bDontCheckForTableOp = false );
-void DoubleRefToVars( const ScToken* p,
+void DoubleRefToVars( const formula::FormulaToken* p,
SCCOL& rCol1, SCROW &rRow1, SCTAB& rTab1,
SCCOL& rCol2, SCROW &rRow2, SCTAB& rTab2,
bool bDontCheckForTableOp = false );
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index 6b62040..f078fa2 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -1881,7 +1881,7 @@ void ScChangeActionContent::PutValueToDoc(
}
}
-static void lcl_InvalidateReference( ScToken& rTok, const ScBigAddress& rPos )
+static void lcl_InvalidateReference( formula::FormulaToken& rTok, const ScBigAddress& rPos )
{
ScSingleRefData& rRef1 = *rTok.GetSingleRef();
if ( rPos.Col() < 0 || MAXCOL < rPos.Col() )
@@ -2015,24 +2015,24 @@ void ScChangeActionContent::UpdateReference( const ScChangeTrack* pTrack,
const ScBigAddress& rPos = aBigRange.aStart;
if ( bOldFormula )
{
- ScToken* t;
+ formula::FormulaToken* t;
ScTokenArray* pArr = maOldCell.mpFormula->GetCode();
pArr->Reset();
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReference()) ) != NULL )
+ while ( ( t = pArr->GetNextReference() ) != NULL )
lcl_InvalidateReference( *t, rPos );
pArr->Reset();
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
lcl_InvalidateReference( *t, rPos );
}
if ( bNewFormula )
{
- ScToken* t;
+ formula::FormulaToken* t;
ScTokenArray* pArr = maNewCell.mpFormula->GetCode();
pArr->Reset();
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReference()) ) != NULL )
+ while ( ( t = pArr->GetNextReference() ) != NULL )
lcl_InvalidateReference( *t, rPos );
pArr->Reset();
- while ( ( t = static_cast<ScToken*>(pArr->GetNextReferenceRPN()) ) != NULL )
+ while ( ( t = pArr->GetNextReferenceRPN() ) != NULL )
lcl_InvalidateReference( *t, rPos );
}
}
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index e27ed3e..6e738d5 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4048,8 +4048,8 @@ bool ScCompiler::HandleExternalReference(const FormulaToken& _aToken)
void ScCompiler::SetRelNameReference()
{
pArr->Reset();
- for( ScToken* t = static_cast<ScToken*>(pArr->GetNextReference()); t;
- t = static_cast<ScToken*>(pArr->GetNextReference()) )
+ for( formula::FormulaToken* t = pArr->GetNextReference(); t;
+ t = pArr->GetNextReference() )
{
ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() || rRef1.IsRowRel() || rRef1.IsTabRel() )
@@ -4068,8 +4068,8 @@ void ScCompiler::SetRelNameReference()
void ScCompiler::MoveRelWrap( SCCOL nMaxCol, SCROW nMaxRow )
{
pArr->Reset();
- for( ScToken* t = static_cast<ScToken*>(pArr->GetNextReference()); t;
- t = static_cast<ScToken*>(pArr->GetNextReference()) )
+ for( formula::FormulaToken* t = pArr->GetNextReference(); t;
+ t = pArr->GetNextReference() )
{
if ( t->GetType() == svSingleRef || t->GetType() == svExternalSingleRef )
ScRefUpdate::MoveRelWrap( pDoc, aPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( *t->GetSingleRef() ).Ref() );
@@ -4084,8 +4084,8 @@ void ScCompiler::MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc, const ScAddr
SCCOL nMaxCol, SCROW nMaxRow )
{
rArr.Reset();
- for( ScToken* t = static_cast<ScToken*>(rArr.GetNextReference()); t;
- t = static_cast<ScToken*>(rArr.GetNextReference()) )
+ for( formula::FormulaToken* t = rArr.GetNextReference(); t;
+ t = rArr.GetNextReference() )
{
if ( t->GetType() == svSingleRef || t->GetType() == svExternalSingleRef )
ScRefUpdate::MoveRelWrap( pDoc, rPos, nMaxCol, nMaxRow, SingleDoubleRefModifier( *t->GetSingleRef() ).Ref() );
@@ -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());
+ *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());
+ *t->GetDoubleRef());
}
break;
default:
@@ -4158,7 +4158,7 @@ void ScCompiler::CreateStringFromExternal(OUStringBuffer& rBuffer, FormulaToken*
void ScCompiler::CreateStringFromMatrix(
OUStringBuffer& rBuffer, FormulaToken* pTokenP) const
{
- const ScMatrix* pMatrix = static_cast<ScToken*>(pTokenP)->GetMatrix();
+ const ScMatrix* pMatrix = pTokenP->GetMatrix();
SCSIZE nC, nMaxC, nR, nMaxR;
pMatrix->GetDimensions( nMaxC, nMaxR);
@@ -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 = *_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);
+ *_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 = *mpToken.get()->GetSingleRef();
ScAddress aAbs = rRef.toAbs(aPos);
if (!ValidAddress(aAbs))
{
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx
index 3ec81f0..835220f 100644
--- a/sc/source/core/tool/detfunc.cxx
+++ b/sc/source/core/tool/detfunc.cxx
@@ -1367,9 +1367,9 @@ void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n
ScFormulaCell* pFCell = aIter.getFormulaCell();
ScDetectiveRefIter aRefIter(pFCell);
- for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
+ for (formula::FormulaToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
{
- ScTokenRef pRef(static_cast<ScToken*>(p->Clone()));
+ ScTokenRef pRef(p->Clone());
ScRefTokenHelper::join(rRefTokens, pRef, aIter.GetPos());
}
}
@@ -1390,10 +1390,10 @@ void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n
ScFormulaCell* pFCell = aIter.getFormulaCell();
ScDetectiveRefIter aRefIter(pFCell);
- for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
+ for (formula::FormulaToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken())
{
const ScAddress& aPos = aIter.GetPos();
- ScTokenRef pRef(static_cast<ScToken*>(p->Clone()));
+ ScTokenRef pRef(p->Clone());
if (ScRefTokenHelper::intersects(aSrcRange, pRef, aPos))
{
// This address is absolute.
diff --git a/sc/source/core/tool/formularesult.cxx b/sc/source/core/tool/formularesult.cxx
index 983da5d..cf790c8 100644
--- a/sc/source/core/tool/formularesult.cxx
+++ b/sc/source/core/tool/formularesult.cxx
@@ -478,7 +478,7 @@ svl::SharedString ScFormulaResult::GetString() const
ScConstMatrixRef ScFormulaResult::GetMatrix() const
{
if (GetType() == formula::svMatrixCell)
- return static_cast<const ScToken*>(mpToken)->GetMatrix();
+ return mpToken->GetMatrix();
return NULL;
}
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index 53f922d..016a026 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -524,7 +524,7 @@ static void lcl_AdjustJumpMatrix( ScJumpMatrix* pJumpM, SCSIZE nParmCols, SCSIZE
bool ScInterpreter::JumpMatrix( short nStackLevel )
{
- pJumpMatrix = static_cast<ScToken*>(pStack[sp-nStackLevel])->GetJumpMatrix();
+ pJumpMatrix = pStack[sp-nStackLevel]->GetJumpMatrix();
bool bHasResMat = pJumpMatrix->HasResultMatrix();
SCSIZE nC, nR;
if ( nStackLevel == 2 )
@@ -2471,7 +2471,7 @@ void ScInterpreter::ScIsRef()
{
FormulaTokenRef x = PopToken();
if ( !nGlobalError )
- nRes = !static_cast<ScToken*>(x.get())->GetRefList()->empty();
+ nRes = !x.get()->GetRefList()->empty();
}
break;
default:
@@ -7369,7 +7369,7 @@ void ScInterpreter::ScIndex()
else
nRow = 0;
if (GetStackType() == svRefList)
- nAreaCount = (sp ? static_cast<ScToken*>(pStack[sp-1])->GetRefList()->size() : 0);
+ nAreaCount = (sp ? pStack[sp-1]->GetRefList()->size() : 0);
else
nAreaCount = 1; // one reference or array or whatever
if (nAreaCount == 0 || (size_t)nArea > nAreaCount)
@@ -7497,7 +7497,7 @@ void ScInterpreter::ScIndex()
return;
}
ScRange aRange( ScAddress::UNINITIALIZED);
- DoubleRefToRange( (*(static_cast<ScToken*>(xRef.get())->GetRefList()))[nArea-1], aRange);
+ DoubleRefToRange( (*(xRef.get()->GetRefList()))[nArea-1], aRange);
aRange.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
if ( nParamCount == 2 && nRow1 == nRow2 )
bRowArray = true;
@@ -7576,22 +7576,22 @@ void ScInterpreter::ScAreas()
case svSingleRef:
{
FormulaTokenRef xT = PopToken();
- ValidateRef( *static_cast<ScToken*>(xT.get())->GetSingleRef());
+ ValidateRef( *xT.get()->GetSingleRef());
++nCount;
}
break;
case svDoubleRef:
{
FormulaTokenRef xT = PopToken();
- ValidateRef( *static_cast<ScToken*>(xT.get())->GetDoubleRef());
+ ValidateRef( *xT.get()->GetDoubleRef());
++nCount;
}
break;
case svRefList:
{
FormulaTokenRef xT = PopToken();
- ValidateRef( *(static_cast<ScToken*>(xT.get())->GetRefList()));
- nCount += static_cast<ScToken*>(xT.get())->GetRefList()->size();
+ ValidateRef( *(xT.get()->GetRefList()));
+ nCount += xT.get()->GetRefList()->size();
}
break;
default:
@@ -8250,7 +8250,7 @@ void ScInterpreter::ScErrorType()
nErr = nGlobalError;
else
{
- const ScRefList* pRefList = static_cast<ScToken*>(x.get())->GetRefList();
+ const ScRefList* pRefList = x.get()->GetRefList();
size_t n = pRefList->size();
if (!n)
nErr = errNoRef;
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 6674bb8..8fa70fb 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -1938,14 +1938,14 @@ void ScInterpreter::ScIntersect()
return;
}
- ScToken* x1 = static_cast<ScToken*>(p1st.get());
- ScToken* x2 = static_cast<ScToken*>(p2nd.get());
+ formula::FormulaToken* x1 = p1st.get();
+ formula::FormulaToken* x2 = p2nd.get();
if (sv1 == svRefList || sv2 == svRefList)
{
// Now this is a bit nasty but it simplifies things, and having
// intersections with lists isn't too common, if at all..
// Convert a reference to list.
- ScToken* xt[2] = { x1, x2 };
+ formula::FormulaToken* xt[2] = { x1, x2 };
StackVar sv[2] = { sv1, sv2 };
for (size_t i=0; i<2; ++i)
{
@@ -2011,7 +2011,7 @@ void ScInterpreter::ScIntersect()
}
else
{
- ScToken* pt[2] = { x1, x2 };
+ formula::FormulaToken* pt[2] = { x1, x2 };
StackVar sv[2] = { sv1, sv2 };
SCCOL nC1[2], nC2[2];
SCROW nR1[2], nR2[2];
@@ -2100,8 +2100,8 @@ void ScInterpreter::ScUnionFunc()
return;
}
- ScToken* x1 = static_cast<ScToken*>(p1st.get());
- ScToken* x2 = static_cast<ScToken*>(p2nd.get());
+ formula::FormulaToken* x1 = p1st.get();
+ formula::FormulaToken* x2 = p2nd.get();
ScTokenRef xRes;
// Append to an existing RefList if there is one.
@@ -2118,7 +2118,7 @@ void ScInterpreter::ScUnionFunc()
else
xRes = new ScRefListToken;
ScRefList* pRes = xRes->GetRefList();
- ScToken* pt[2] = { x1, x2 };
+ formula::FormulaToken* pt[2] = { x1, x2 };
StackVar sv[2] = { sv1, sv2 };
for (size_t i=0; i<2; ++i)
{
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 4bb62c4..e1eeb71 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -885,7 +885,7 @@ void ScInterpreter::PushWithoutError( FormulaToken& r )
maxsp = sp + 1;
else
pStack[ sp ]->DecRef();
- pStack[ sp ] = (ScToken*) &r;
+ pStack[ sp ] = &r;
++sp;
}
}
@@ -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( *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( *p->GetSingleRef(), nCol, nRow, nTab);
rAdr.Set( nCol, nRow, nTab );
if ( !pDok->aTableOpList.empty() )
ReplaceCell( rAdr );
@@ -1213,7 +1213,7 @@ void ScInterpreter::PopSingleRef( ScAddress& rAdr )
SetError( errUnknownStackVariable);
}
-void ScInterpreter::DoubleRefToVars( const ScToken* p,
+void ScInterpreter::DoubleRefToVars( const formula::FormulaToken* p,
SCCOL& rCol1, SCROW &rRow1, SCTAB& rTab1,
SCCOL& rCol2, SCROW &rRow2, SCTAB& rTab2,
bool bDontCheckForTableOp )
@@ -1284,7 +1284,7 @@ void ScInterpreter::PopDoubleRef(SCCOL& rCol1, SCROW &rRow1, SCTAB& rTab1,
nGlobalError = p->GetError();
break;
case svDoubleRef:
- DoubleRefToVars( static_cast<ScToken*>(p), rCol1, rRow1, rTab1, rCol2, rRow2, rTab2,
+ DoubleRefToVars( p, rCol1, rRow1, rTab1, rCol2, rRow2, rTab2,
bDontCheckForTableOp);
break;
default:
@@ -1317,19 +1317,18 @@ void ScInterpreter::PopDoubleRef( ScRange & rRange, short & rParam, size_t & rRe
if (sp)
{
formula::FormulaToken* pToken = pStack[ sp-1 ];
- ScToken* p = static_cast<ScToken*>(pToken);
switch (pToken->GetType())
{
case svError:
- nGlobalError = p->GetError();
+ nGlobalError = pToken->GetError();
break;
case svDoubleRef:
--sp;
- DoubleRefToRange( *p->GetDoubleRef(), rRange);
+ DoubleRefToRange( *pToken->GetDoubleRef(), rRange);
break;
case svRefList:
{
- const ScRefList* pList = p->GetRefList();
+ const ScRefList* pList = pToken->GetRefList();
if (rRefInList < pList->size())
{
DoubleRefToRange( (*pList)[rRefInList], rRange);
@@ -1369,7 +1368,7 @@ void ScInterpreter::PopDoubleRef( ScRange& rRange, bool bDontCheckForTableOp )
nGlobalError = p->GetError();
break;
case svDoubleRef:
- DoubleRefToRange( *static_cast<ScToken*>(p)->GetDoubleRef(), rRange, bDontCheckForTableOp);
+ DoubleRefToRange( *p->GetDoubleRef(), rRange, bDontCheckForTableOp);
break;
default:
SetError( errIllegalParameter);
@@ -1405,7 +1404,7 @@ void ScInterpreter::PopExternalSingleRef(sal_uInt16& rFileId, OUString& rTabName
rFileId = p->GetIndex();
rTabName = p->GetString().getString();
- rRef = *static_cast<ScToken*>(p)->GetSingleRef();
+ rRef = *p->GetSingleRef();
}
void ScInterpreter::PopExternalSingleRef(ScExternalRefCache::TokenRef& rToken, ScExternalRefCache::CellFormat* pFmt)
@@ -1481,7 +1480,7 @@ void ScInterpreter::PopExternalDoubleRef(sal_uInt16& rFileId, OUString& rTabName
rFileId = p->GetIndex();
rTabName = p->GetString().getString();
- rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
+ rRef = *p->GetDoubleRef();
}
void ScInterpreter::PopExternalDoubleRef(ScExternalRefCache::TokenArrayRef& rArray)
@@ -1508,7 +1507,7 @@ void ScInterpreter::PopExternalDoubleRef(ScMatrixRef& rMat)
// For now, we only support single range data for external
// references, which means the array should only contain a
// single matrix token.
- ScToken* p = static_cast<ScToken*>(pArray->First());
+ formula::FormulaToken* p = pArray->First();
if (!p || p->GetType() != svMatrix)
SetError( errIllegalParameter);
else
@@ -1547,7 +1546,7 @@ void ScInterpreter::GetExternalDoubleRef(
return;
}
- ScToken* pToken = static_cast<ScToken*>(pArray->First());
+ formula::FormulaToken* pToken = pArray->First();
if (pToken->GetType() != svMatrix)
{
SetError(errIllegalArgument);
@@ -1635,7 +1634,7 @@ bool ScInterpreter::ConvertMatrixParameters()
if ( ScParameterClassification::GetParameterType( pCur, nParams - i)
== ScParameterClassification::Value )
{ // only if single value expected
- ScMatrixRef pMat = static_cast<ScToken*>(p)->GetMatrix();
+ ScMatrixRef pMat = p->GetMatrix();
if ( !pMat )
SetError( errUnknownVariable);
else
@@ -1660,7 +1659,7 @@ bool ScInterpreter::ConvertMatrixParameters()
SCCOL nCol1, nCol2;
SCROW nRow1, nRow2;
SCTAB nTab1, nTab2;
- DoubleRefToVars( static_cast<const ScToken*>( p), nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
+ DoubleRefToVars( p, nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
// Make sure the map exists, created if not.
GetTokenMatrixMap();
ScMatrixRef pMat = CreateMatrixFromDoubleRef( p,
@@ -1674,7 +1673,7 @@ bool ScInterpreter::ConvertMatrixParameters()
if ( nJumpRows < static_cast<SCSIZE>(nRow2 - nRow1 + 1) )
nJumpRows = static_cast<SCSIZE>(nRow2 - nRow1 + 1);
}
- ScToken* pNew = new ScMatrixToken( pMat);
+ formula::FormulaToken* pNew = new ScMatrixToken( pMat);
pNew->IncRef();
pStack[ sp - i ] = pNew;
p->DecRef(); // p may be dead now!
@@ -1690,20 +1689,20 @@ bool ScInterpreter::ConvertMatrixParameters()
{
sal_uInt16 nFileId = p->GetIndex();
OUString aTabName = p->GetString().getString();
- const ScComplexRefData& rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
+ const ScComplexRefData& rRef = *p->GetDoubleRef();
ScExternalRefCache::TokenArrayRef pArray;
GetExternalDoubleRef(nFileId, aTabName, rRef, pArray);
if (nGlobalError)
break;
- ScToken* pTemp = static_cast<ScToken*>(pArray->First());
+ formula::FormulaToken* pTemp = pArray->First();
if (!pTemp)
break;
ScMatrixRef pMat = pTemp->GetMatrix();
if (pMat)
{
- ScToken* pNew = new ScMatrixToken( pMat);
+ formula::FormulaToken* pNew = new ScMatrixToken( pMat);
pNew->IncRef();
pStack[ sp - i ] = pNew;
p->DecRef(); // p may be dead now!
@@ -1778,7 +1777,7 @@ ScMatrixRef ScInterpreter::PopMatrix()
break;
case svMatrix:
{
- ScMatrix* pMat = static_cast<ScToken*>(p)->GetMatrix();
+ ScMatrix* pMat = p->GetMatrix();
if ( pMat )
pMat->SetErrorInterpreter( this);
else
@@ -1805,14 +1804,13 @@ sc::RangeMatrix ScInterpreter::PopRangeMatrix()
{
--sp;
FormulaToken* p = pStack[sp];
- ScToken* p2 = static_cast<ScToken*>(p);
- aRet.mpMat = p2->GetMatrix();
+ aRet.mpMat = p->GetMatrix();
if (aRet.mpMat)
{
aRet.mpMat->SetErrorInterpreter(this);
- if (p2->GetByte() == MATRIX_TOKEN_HAS_RANGE)
+ if (p->GetByte() == MATRIX_TOKEN_HAS_RANGE)
{
- const ScComplexRefData& rRef = *p2->GetDoubleRef();
+ const ScComplexRefData& rRef = *p->GetDoubleRef();
if (!rRef.Ref1.IsColRel() && !rRef.Ref1.IsRowRel() && !rRef.Ref2.IsColRel() && !rRef.Ref2.IsRowRel())
{
aRet.mnCol1 = rRef.Ref1.Col();
@@ -3579,7 +3577,7 @@ void ScInterpreter::ScDBArea()
void ScInterpreter::ScColRowNameAuto()
{
- ScComplexRefData aRefData( *static_cast<const ScToken*>(pCur)->GetDoubleRef() );
+ ScComplexRefData aRefData( *pCur->GetDoubleRef() );
ScRange aAbs = aRefData.toAbs(aPos);
if (!ValidRange(aAbs))
{
@@ -4500,7 +4498,7 @@ StackVar ScInterpreter::Interpret()
if (eType == svMatrix)
// Results are immutable in case they would be reused as input for new
// interpreters.
- static_cast<ScToken*>(xResult.get())->GetMatrix()->SetImmutable( true);
+ xResult.get()->GetMatrix()->SetImmutable( true);
return eType;
}
diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx
index 9c28009..f873361 100644
--- a/sc/source/core/tool/interpr5.cxx
+++ b/sc/source/core/tool/interpr5.cxx
@@ -358,7 +358,7 @@ ScMatrixRef ScInterpreter::CreateMatrixFromDoubleRef( const FormulaToken* pToken
if (pTokenMatrixMap && ((aIter = pTokenMatrixMap->find( pToken))
!= pTokenMatrixMap->end()))
{
- return static_cast<ScToken*>((*aIter).second.get())->GetMatrix();
+ return (*aIter).second.get()->GetMatrix();
}
ScMatrixRef pMat = GetNewMat( nMatCols, nMatRows, true);
@@ -406,7 +406,7 @@ ScMatrixRef ScInterpreter::GetMatrix()
SCCOL nCol1, nCol2;
SCROW nRow1, nRow2;
SCTAB nTab1, nTab2;
- const ScToken* p = sp ? static_cast<const ScToken*>(pStack[sp-1]) : NULL;
+ const formula::FormulaToken* p = sp ? pStack[sp-1] : NULL;
PopDoubleRef(nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
pMat = CreateMatrixFromDoubleRef( p, nCol1, nRow1, nTab1,
nCol2, nRow2, nTab2);
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index e770110..768fe70 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -217,9 +217,9 @@ void ScRangeData::GuessPosition()
SCsROW nMinRow = 0;
SCsTAB nMinTab = 0;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
ScSingleRefData& rRef1 = *t->GetSingleRef();
if ( rRef1.IsColRel() && rRef1.Col() < nMinCol )
@@ -282,10 +282,10 @@ void ScRangeData::UpdateTranspose( const ScRange& rSource, const ScAddress& rDes
{
bool bChanged = false;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
if( t->GetType() != svIndex )
{
@@ -314,10 +314,10 @@ void ScRangeData::UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY )
{
bool bChanged = false;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
if( t->GetType() != svIndex )
{
@@ -539,9 +539,9 @@ void ScRangeData::ValidateTabRefs()
SCTAB nMinTab = aPos.Tab();
SCTAB nMaxTab = nMinTab;
- ScToken* t;
+ formula::FormulaToken* t;
pCode->Reset();
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
ScSingleRefData& rRef1 = *t->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(aPos);
@@ -577,7 +577,7 @@ void ScRangeData::ValidateTabRefs()
aPos.SetTab( aPos.Tab() - nMove );
pCode->Reset();
- while ( ( t = static_cast<ScToken*>(pCode->GetNextReference()) ) != NULL )
+ while ( ( t = pCode->GetNextReference() ) != NULL )
{
switch (t->GetType())
{
diff --git a/sc/source/core/tool/reftokenhelper.cxx b/sc/source/core/tool/reftokenhelper.cxx
index a26ab0d..04070f2 100644
--- a/sc/source/core/tool/reftokenhelper.cxx
+++ b/sc/source/core/tool/reftokenhelper.cxx
@@ -80,8 +80,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
{
case svSingleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(p);
- const ScSingleRefData& rRef = *pT->GetSingleRef();
+ const ScSingleRefData& rRef = *p->GetSingleRef();
if (!rRef.Valid())
bFailure = true;
else if (bOnly3DRef && !rRef.IsFlag3D())
@@ -90,8 +89,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
break;
case svDoubleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(p);
- const ScComplexRefData& rRef = *pT->GetDoubleRef();
+ const ScComplexRefData& rRef = *p->GetDoubleRef();
if (!rRef.Valid())
bFailure = true;
else if (bOnly3DRef && !rRef.Ref1.IsFlag3D())
@@ -100,15 +98,13 @@ void ScRefTokenHelper::compileRangeRepresentation(
break;
case svExternalSingleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(p);
- if (!pT->GetSingleRef()->ValidExternal())
+ if (!p->GetSingleRef()->ValidExternal())
bFailure = true;
}
break;
case svExternalDoubleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(p);
- if (!pT->GetDoubleRef()->ValidExternal())
+ if (!p->GetDoubleRef()->ValidExternal())
bFailure = true;
}
break;
@@ -121,8 +117,7 @@ void ScRefTokenHelper::compileRangeRepresentation(
break;
}
if (!bFailure)
- rRefTokens.push_back(
- ScTokenRef(static_cast<ScToken*>(p->Clone())));
+ rRefTokens.push_back(ScTokenRef(p->Clone()));
}
if (bFailure)
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 46cf5ed..6cea8ff 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -449,12 +449,6 @@ void ScRawToken::Delete()
}
}
-// --- class ScToken --------------------------------------------------------
-
-ScToken::~ScToken()
-{
-}
-
namespace {
// TextEqual: if same formula entered (for optimization in sort)
@@ -495,7 +489,7 @@ bool checkTextEqual( const FormulaToken& _rToken1, const FormulaToken& _rToken2
}
#if DEBUG_FORMULA_COMPILER
-void DumpToken(ScToken const & rToken)
+void DumpToken(formula::FormulaToken const & rToken)
{
switch (rToken.GetType()) {
case svSingleRef:
@@ -507,7 +501,22 @@ void DumpToken(ScToken const & rToken)
rToken.GetDoubleRef()->Dump(1);
break;
default:
- cout << "-- ScToken (base class)" << endl;
+ cout << "-- FormulaToken" << endl;
+ cout << " opcode: " << rToken.GetOpCode() << endl;
+ cout << " type: " << static_cast<int>(rToken.GetType()) << endl;
+ switch (rToken.GetType())
+ {
+ case svDouble:
+ cout << " value: " << rToken.GetDouble() << endl;
+ break;
+ case svString:
+ cout << " string: "
+ << OUStringToOString(rToken.GetString().getString(), RTL_TEXTENCODING_UTF8).getStr()
+ << endl;
+ break;
+ default:
+ ;
+ }
break;
}
}
@@ -525,9 +534,6 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
((sv2 = rTok2.GetType()) != svSingleRef && sv2 != svDoubleRef && sv2 != svRefList))
return NULL;
- ScToken *p1 = static_cast<ScToken*>(&rTok1);
- ScToken *p2 = static_cast<ScToken*>(&rTok2);
-
ScTokenRef xRes;
bool bExternal = (sv1 == svExternalSingleRef);
if ((sv1 == svSingleRef || bExternal) && sv2 == svSingleRef)
@@ -553,16 +559,16 @@ 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 = *rTok2.GetSingleRef();
if (bExternal && rRef2.IsFlag3D())
return NULL;
ScComplexRefData aRef;
- aRef.Ref1 = aRef.Ref2 = *p1->GetSingleRef();
+ aRef.Ref1 = aRef.Ref2 = *rTok1.GetSingleRef();
aRef.Ref2.SetFlag3D( false);
aRef.Extend( rRef2, rPos);
if (bExternal)
- xRes = new ScExternalDoubleRefToken( p1->GetIndex(), p1->GetString(), aRef);
+ xRes = new ScExternalDoubleRefToken( rTok1.GetIndex(), rTok1.GetString(), aRef);
else
xRes = new ScDoubleRefToken( aRef);
}
@@ -572,18 +578,18 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
const ScRefList* pRefList = NULL;
if (sv1 == svDoubleRef)
{
- xRes = (bReuseDoubleRef && p1->GetRef() == 1 ? p1 : static_cast<ScToken*>(p1->Clone()));
+ xRes = (bReuseDoubleRef && rTok1.GetRef() == 1 ? &rTok1 : rTok1.Clone());
sv1 = svUnknown; // mark as handled
}
else if (sv2 == svDoubleRef)
{
- xRes = (bReuseDoubleRef && p2->GetRef() == 1 ? p2 : static_cast<ScToken*>(p2->Clone()));
+ xRes = (bReuseDoubleRef && rTok2.GetRef() == 1 ? &rTok2 : rTok2.Clone());
sv2 = svUnknown; // mark as handled
}
else if (sv1 == svRefList)
- pRefList = p1->GetRefList();
+ pRefList = rTok1.GetRefList();
else if (sv2 == svRefList)
- pRefList = p2->GetRefList();
+ pRefList = rTok2.GetRefList();
if (pRefList)
{
if (!pRefList->size())
@@ -595,7 +601,7 @@ FormulaTokenRef extendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2
if (!xRes)
return NULL; // shouldn't happen..
StackVar sv[2] = { sv1, sv2 };
- ScToken* pt[2] = { p1, p2 };
+ formula::FormulaToken* pt[2] = { &rTok1, &rTok2 };
ScComplexRefData& rRef = *xRes->GetDoubleRef();
for (size_t i=0; i<2; ++i)
{
@@ -650,7 +656,7 @@ bool ScSingleRefToken::TextEqual( const FormulaToken& _rToken ) const
}
bool ScSingleRefToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && aSingleRef == *static_cast<const ScToken&>(r).GetSingleRef();
+ return FormulaToken::operator==( r ) && aSingleRef == *r.GetSingleRef();
}
const ScSingleRefData* ScDoubleRefToken::GetSingleRef() const { return &aDoubleRef.Ref1; }
@@ -665,40 +671,40 @@ bool ScDoubleRefToken::TextEqual( const FormulaToken& _rToken ) const
}
bool ScDoubleRefToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && aDoubleRef == *static_cast<const ScToken&>(r).GetDoubleRef();
+ return FormulaToken::operator==( r ) && aDoubleRef == *r.GetDoubleRef();
}
const ScRefList* ScRefListToken::GetRefList() const { return &aRefList; }
ScRefList* ScRefListToken::GetRefList() { return &aRefList; }
bool ScRefListToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && &aRefList == static_cast<const ScToken&>(r).GetRefList();
+ return FormulaToken::operator==( r ) && &aRefList == r.GetRefList();
}
ScMatrixToken::ScMatrixToken( const ScMatrixRef& p ) :
- ScToken(formula::svMatrix), pMatrix(p) {}
+ FormulaToken(formula::svMatrix), pMatrix(p) {}
ScMatrixToken::ScMatrixToken( const ScMatrixToken& r ) :
- ScToken(r), pMatrix(r.pMatrix) {}
+ FormulaToken(r), pMatrix(r.pMatrix) {}
const ScMatrix* ScMatrixToken::GetMatrix() const { return pMatrix.get(); }
ScMatrix* ScMatrixToken::GetMatrix() { return pMatrix.get(); }
bool ScMatrixToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && pMatrix == static_cast<const ScToken&>(r).GetMatrix();
+ return FormulaToken::operator==( r ) && pMatrix == r.GetMatrix();
}
ScMatrixRangeToken::ScMatrixRangeToken( const ScMatrixRef& p, const ScComplexRefData& rRef ) :
- ScToken(formula::svMatrix), mpMatrix(p), maRef(rRef) {}
+ FormulaToken(formula::svMatrix), mpMatrix(p), maRef(rRef) {}
ScMatrixRangeToken::ScMatrixRangeToken( const sc::RangeMatrix& rMat ) :
- ScToken(formula::svMatrix), mpMatrix(rMat.mpMat)
+ FormulaToken(formula::svMatrix), mpMatrix(rMat.mpMat)
{
maRef.InitRange(rMat.mnCol1, rMat.mnRow1, rMat.mnTab1, rMat.mnCol2, rMat.mnRow2, rMat.mnTab2);
}
ScMatrixRangeToken::ScMatrixRangeToken( const ScMatrixRangeToken& r ) :
- ScToken(r), mpMatrix(r.mpMatrix), maRef(r.maRef) {}
+ FormulaToken(r), mpMatrix(r.mpMatrix), maRef(r.maRef) {}
sal_uInt8 ScMatrixRangeToken::GetByte() const
{
@@ -727,7 +733,7 @@ ScComplexRefData* ScMatrixRangeToken::GetDoubleRef()
bool ScMatrixRangeToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==(r) && mpMatrix == static_cast<const ScToken&>(r).GetMatrix();
+ return FormulaToken::operator==(r) && mpMatrix == r.GetMatrix();
}
FormulaToken* ScMatrixRangeToken::Clone() const
@@ -736,7 +742,7 @@ FormulaToken* ScMatrixRangeToken::Clone() const
}
ScExternalSingleRefToken::ScExternalSingleRefToken( sal_uInt16 nFileId, const svl::SharedString& rTabName, const ScSingleRefData& r ) :
- ScToken( svExternalSingleRef, ocPush),
+ FormulaToken( svExternalSingleRef, ocPush),
mnFileId(nFileId),
maTabName(rTabName),
maSingleRef(r)
@@ -744,7 +750,7 @@ ScExternalSingleRefToken::ScExternalSingleRefToken( sal_uInt16 nFileId, const sv
}
ScExternalSingleRefToken::ScExternalSingleRefToken( const ScExternalSingleRefToken& r ) :
- ScToken(r),
+ FormulaToken(r),
mnFileId(r.mnFileId),
maTabName(r.maTabName),
maSingleRef(r.maSingleRef)
@@ -786,11 +792,11 @@ bool ScExternalSingleRefToken::operator ==( const FormulaToken& r ) const
if (maTabName != r.GetString())
return false;
- return maSingleRef == *static_cast<const ScToken&>(r).GetSingleRef();
+ return maSingleRef == *r.GetSingleRef();
}
ScExternalDoubleRefToken::ScExternalDoubleRefToken( sal_uInt16 nFileId, const svl::SharedString& rTabName, const ScComplexRefData& r ) :
- ScToken( svExternalDoubleRef, ocPush),
+ FormulaToken( svExternalDoubleRef, ocPush),
mnFileId(nFileId),
maTabName(rTabName),
maDoubleRef(r)
@@ -798,7 +804,7 @@ ScExternalDoubleRefToken::ScExternalDoubleRefToken( sal_uInt16 nFileId, const sv
}
ScExternalDoubleRefToken::ScExternalDoubleRefToken( const ScExternalDoubleRefToken& r ) :
- ScToken(r),
+ FormulaToken(r),
mnFileId(r.mnFileId),
maTabName(r.maTabName),
maDoubleRef(r.maDoubleRef)
@@ -851,7 +857,7 @@ ScComplexRefData* ScExternalDoubleRefToken::GetDoubleRef()
bool ScExternalDoubleRefToken::operator ==( const FormulaToken& r ) const
{
- if (!ScToken::operator==(r))
+ if (!FormulaToken::operator==(r))
return false;
if (mnFileId != r.GetIndex())
@@ -860,18 +866,18 @@ bool ScExternalDoubleRefToken::operator ==( const FormulaToken& r ) const
if (maTabName != r.GetString())
return false;
- return maDoubleRef == *static_cast<const ScToken&>(r).GetDoubleRef();
+ return maDoubleRef == *r.GetDoubleRef();
}
ScExternalNameToken::ScExternalNameToken( sal_uInt16 nFileId, const svl::SharedString& rName ) :
- ScToken( svExternalName, ocPush),
+ FormulaToken( svExternalName, ocPush),
mnFileId(nFileId),
maName(rName)
{
}
ScExternalNameToken::ScExternalNameToken( const ScExternalNameToken& r ) :
- ScToken(r),
+ FormulaToken(r),
mnFileId(r.mnFileId),
maName(r.maName)
{
@@ -903,7 +909,7 @@ bool ScExternalNameToken::operator==( const FormulaToken& r ) const
ScJumpMatrix* ScJumpMatrixToken::GetJumpMatrix() const { return pJumpMatrix; }
bool ScJumpMatrixToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && pJumpMatrix == static_cast<const ScToken&>(r).GetJumpMatrix();
+ return FormulaToken::operator==( r ) && pJumpMatrix == r.GetJumpMatrix();
}
ScJumpMatrixToken::~ScJumpMatrixToken()
{
@@ -925,10 +931,10 @@ bool ScEmptyCellToken::operator==( const FormulaToken& r ) const
}
ScMatrixCellResultToken::ScMatrixCellResultToken( const ScConstMatrixRef& pMat, formula::FormulaToken* pUL ) :
- ScToken(formula::svMatrixCell), xMatrix(pMat), xUpperLeft(pUL) {}
+ FormulaToken(formula::svMatrixCell), xMatrix(pMat), xUpperLeft(pUL) {}
ScMatrixCellResultToken::ScMatrixCellResultToken( const ScMatrixCellResultToken& r ) :
- ScToken(r), xMatrix(r.xMatrix), xUpperLeft(r.xUpperLeft) {}
+ FormulaToken(r), xMatrix(r.xMatrix), xUpperLeft(r.xUpperLeft) {}
double ScMatrixCellResultToken::GetDouble() const { return xUpperLeft->GetDouble(); }
@@ -1004,7 +1010,7 @@ void ScMatrixFormulaCellToken::Assign( const formula::FormulaToken& r )
if (r.GetType() == svMatrix)
{
xUpperLeft = NULL;
- xMatrix = static_cast<const ScToken&>(r).GetMatrix();
+ xMatrix = r.GetMatrix();
}
else
{
@@ -1046,7 +1052,7 @@ void ScMatrixFormulaCellToken::ResetResult()
ScHybridCellToken::ScHybridCellToken(
double f, const svl::SharedString & rStr, const OUString & rFormula ) :
- ScToken( formula::svHybridCell ),
+ FormulaToken( formula::svHybridCell ),
mfDouble( f ), maString( rStr ),
maFormula( rFormula )
{
@@ -1496,11 +1502,11 @@ void ScTokenArray::GenHash()
size_t nHash = 1;
OpCode eOp;
StackVar eType;
- const ScToken* p;
+ const formula::FormulaToken* p;
sal_uInt16 n = std::min<sal_uInt16>(nLen, 20);
for (sal_uInt16 i = 0; i < n; ++i)
{
- p = static_cast<const ScToken*>(pCode[i]);
+ p = pCode[i];
eOp = p->GetOpCode();
if (eOp == ocPush)
{
@@ -1570,8 +1576,7 @@ bool ScTokenArray::IsInvariant() const
case svSingleRef:
case svExternalSingleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(*p);
- const ScSingleRefData& rRef = *pT->GetSingleRef();
+ const ScSingleRefData& rRef = *(*p)->GetSingleRef();
if (rRef.IsRowRel())
return false;
}
@@ -1579,8 +1584,7 @@ bool ScTokenArray::IsInvariant() const
case svDoubleRef:
case svExternalDoubleRef:
{
- const ScToken* pT = static_cast<const ScToken*>(*p);
- const ScComplexRefData& rRef = *pT->GetDoubleRef();
+ const ScComplexRefData& rRef = *(*p)->GetDoubleRef();
if (rRef.Ref1.IsRowRel() || rRef.Ref2.IsRowRel())
return false;
}
@@ -1646,7 +1650,7 @@ ScTokenArray* ScTokenArray::Clone() const
if( nLen )
{
pp = p->pCode = new FormulaToken*[ nLen ];
- memcpy( pp, pCode, nLen * sizeof( ScToken* ) );
+ memcpy( pp, pCode, nLen * sizeof( formula::FormulaToken* ) );
for( sal_uInt16 i = 0; i < nLen; i++, pp++ )
{
*pp = (*pp)->Clone();
@@ -1656,7 +1660,7 @@ ScTokenArray* ScTokenArray::Clone() const
if( nRPN )
{
pp = p->pRPN = new FormulaToken*[ nRPN ];
- memcpy( pp, pRPN, nRPN * sizeof( ScToken* ) );
+ memcpy( pp, pRPN, nRPN * sizeof( formula::FormulaToken* ) );
for( sal_uInt16 i = 0; i < nRPN; i++, pp++ )
{
FormulaToken* t = *pp;
@@ -2020,7 +2024,7 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
{
case svSingleRef :
{
- ScSingleRefData& rRef = *static_cast<ScToken*>(p)->GetSingleRef();
+ ScSingleRefData& rRef = *p->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
switch ( eDir )
{
@@ -2057,7 +2061,7 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
break;
case svDoubleRef :
{
- ScComplexRefData& rRef = *static_cast<ScToken*>(p)->GetDoubleRef();
+ ScComplexRefData& rRef = *p->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
switch ( eDir )
{
@@ -2114,9 +2118,9 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
{
case svDoubleRef :
{
- ScSingleRefData& rRef2 = *static_cast<ScToken*>(pCode[j])->GetSingleRef2();
+ ScSingleRefData& rRef2 = *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() || pCode[j]->GetSingleRef()->IsFlag3D() )
{
ScAddress aAbs = rRef2.toAbs(rOldPos);
rRef2.SetAddress(aAbs, rNewPos);
@@ -2125,7 +2129,7 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
//! fallthru
case svSingleRef :
{
- ScSingleRefData& rRef1 = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef1 = *pCode[j]->GetSingleRef();
if ( rRef1.IsFlag3D() )
{
ScAddress aAbs = rRef1.toAbs(rOldPos);
@@ -2135,14 +2139,14 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
break;
case svExternalDoubleRef :
{
- ScSingleRefData& rRef2 = *static_cast<ScToken*>(pCode[j])->GetSingleRef2();
+ ScSingleRefData& rRef2 = *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 = *pCode[j]->GetSingleRef();
ScAddress aAbs = rRef1.toAbs(rOldPos);
rRef1.SetAddress(aAbs, rNewPos);
}
@@ -2172,7 +2176,7 @@ bool IsInCopyRange( const ScRange& rRange, const ScDocument* pClipDoc )
return rClipParam.maRanges.In(rRange);
}
-bool SkipReference(ScToken* pToken, const ScAddress& rPos, const ScDocument* pOldDoc, bool bRangeName, bool bCheckCopyArea)
+bool SkipReference(formula::FormulaToken* pToken, const ScAddress& rPos, const ScDocument* pOldDoc, bool bRangeName, bool bCheckCopyArea)
{
ScRange aRange;
@@ -2233,10 +2237,10 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, cons
{
case svDoubleRef :
{
- if (SkipReference(static_cast<ScToken*>(pCode[j]), rPos, pOldDoc, bRangeName, true))
+ if (SkipReference(pCode[j], rPos, pOldDoc, bRangeName, true))
continue;
- ScComplexRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetDoubleRef();
+ ScComplexRefData& rRef = *pCode[j]->GetDoubleRef();
ScSingleRefData& rRef2 = rRef.Ref2;
ScSingleRefData& rRef1 = rRef.Ref1;
@@ -2254,10 +2258,10 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, cons
break;
case svSingleRef :
{
- if (SkipReference(static_cast<ScToken*>(pCode[j]), rPos, pOldDoc, bRangeName, true))
+ if (SkipReference(pCode[j], rPos, pOldDoc, bRangeName, true))
continue;
- ScSingleRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef = *pCode[j]->GetSingleRef();
if ( rRef.IsFlag3D() && !rRef.IsTabRel() )
{
@@ -2288,10 +2292,10 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
{
case svDoubleRef :
{
- if (!SkipReference(static_cast<ScToken*>(pCode[j]), rOldPos, pOldDoc, false, bCheckCopyRange))
+ if (!SkipReference(pCode[j], rOldPos, pOldDoc, false, bCheckCopyRange))
continue;
- ScComplexRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetDoubleRef();
+ ScComplexRefData& rRef = *pCode[j]->GetDoubleRef();
ScSingleRefData& rRef2 = rRef.Ref2;
ScSingleRefData& rRef1 = rRef.Ref1;
@@ -2304,10 +2308,10 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
break;
case svSingleRef :
{
- if (!SkipReference(static_cast<ScToken*>(pCode[j]), rOldPos, pOldDoc, false, bCheckCopyRange))
+ if (!SkipReference(pCode[j], rOldPos, pOldDoc, false, bCheckCopyRange))
continue;
- ScSingleRefData& rRef = *static_cast<ScToken*>(pCode[j])->GetSingleRef();
+ ScSingleRefData& rRef = *pCode[j]->GetSingleRef();
// for range names only adjust if all parts are absolute
if (!bRangeName || !(rRef.IsColRel() || rRef.IsRowRel() || rRef.IsTabRel()))
@@ -2562,7 +2566,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
@@ -2597,7 +2601,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
@@ -2663,7 +2667,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);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
rRef.SetAddress(aAbs, aNewPos);
@@ -2672,7 +2676,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnShift( const sc::RefUpdateCon
case svExternalDoubleRef:
{
// Same as above.
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
rRef.SetRange(aAbs, aNewPos);
@@ -2716,7 +2720,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rOldPos);
if (aOldRange.In(aAbs))
@@ -2732,7 +2736,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnMove(
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rOldPos);
if (aOldRange.In(aAbs))
@@ -2775,7 +2779,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
if (aOldRange.In(aAbs))
@@ -2789,7 +2793,7 @@ sc::RefUpdateResult ScTokenArray::MoveReference( const ScAddress& rPos, const sc
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (aOldRange.In(aAbs))
@@ -2826,7 +2830,7 @@ void ScTokenArray::MoveReferenceColReorder(
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
@@ -2846,7 +2850,7 @@ void ScTokenArray::MoveReferenceColReorder(
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
@@ -2889,7 +2893,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
ScAddress aAbs = rRef.toAbs(rPos);
@@ -2909,7 +2913,7 @@ void ScTokenArray::MoveReferenceRowReorder( const ScAddress& rPos, SCTAB nTab, S
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
@@ -3038,7 +3042,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
if (adjustSingleRefInName(rRef, rCxt, rPos))
aRes.mbReferenceModified = true;
@@ -3046,7 +3050,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName(
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
ScRange aAbs = rRef.toAbs(rPos);
if (rCxt.maRange.In(aAbs))
@@ -3156,7 +3160,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
{
case svSingleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScSingleRefData& rRef = *pToken->GetSingleRef();
if (rRef.IsColRel() || rRef.IsRowRel() || rRef.IsTabRel())
continue;
@@ -3173,7 +3177,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInMovedName( const sc::RefUpdat
break;
case svDoubleRef:
{
- ScToken* pToken = static_cast<ScToken*>(*p);
+ formula::FormulaToken* pToken = *p;
ScComplexRefData& rRef = *pToken->GetDoubleRef();
if (rRef.Ref1.IsColRel() || rRef.Ref1.IsRowRel() || rRef.Ref1.IsTabRel() ||
rRef.Ref2.IsColRel() || rRef.Ref2.IsRowRel() || rRef.Ref2.IsTabRel())
@@ -3262,7 +3266,7 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceOnDeletedTab( sc::RefUpdateDele
{
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list