[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - sc/inc sc/source
Kohei Yoshida
kohei.yoshida at gmail.com
Mon Jul 15 21:17:01 PDT 2013
sc/inc/refdata.hxx | 2 +-
sc/source/core/data/formulacell.cxx | 25 +++++++++++--------------
sc/source/filter/excel/xeformula.cxx | 12 ++++++------
sc/source/filter/excel/xelink.cxx | 35 ++++++++++++++++-------------------
sc/source/filter/inc/xelink.hxx | 4 ++--
sc/source/filter/lotus/lotform.cxx | 3 ---
6 files changed, 36 insertions(+), 45 deletions(-)
New commits:
commit 79074d1b32057bef6ae8982d5eb63d3672d89b46
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 16 00:17:08 2013 -0400
More on replacing CalcAbsIfRel() with toAbs().
Change-Id: I7f658e15a1ab6bdabd5f774e129e12c48a032f1a
diff --git a/sc/inc/refdata.hxx b/sc/inc/refdata.hxx
index d619f4f..74028ac 100644
--- a/sc/inc/refdata.hxx
+++ b/sc/inc/refdata.hxx
@@ -166,7 +166,7 @@ struct ScComplexRefData
tab if one sheet, or >=0 if more than one sheets. */
inline bool ValidExternal() const;
- ScRange toAbs( const ScAddress& rPos ) const;
+ SC_DLLPUBLIC ScRange toAbs( const ScAddress& rPos ) const;
/// Absolute references have to be up-to-date when calling this!
void PutInOrder();
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index 570b55c..3b756cb 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -643,10 +643,9 @@ void ScFormulaCell::GetFormula( OUStringBuffer& rBuffer,
* Can we live without in all cases? */
ScFormulaCell* pCell = NULL;
ScSingleRefData& rRef = p->GetSingleRef();
- rRef.CalcAbsIfRel( aPos );
- if ( rRef.Valid() )
- pCell = pDocument->GetFormulaCell(
- ScAddress(rRef.nCol, rRef.nRow, rRef.nTab));
+ ScAddress aAbs = rRef.toAbs(aPos);
+ if (ValidAddress(aAbs))
+ pCell = pDocument->GetFormulaCell(aAbs);
if (pCell)
{
@@ -1842,10 +1841,10 @@ bool ScFormulaCell::GetMatrixOrigin( ScAddress& rPos ) const
if( t )
{
ScSingleRefData& rRef = t->GetSingleRef();
- rRef.CalcAbsIfRel( aPos );
- if ( rRef.Valid() )
+ ScAddress aAbs = rRef.toAbs(aPos);
+ if (ValidAddress(aAbs))
{
- rPos.Set( rRef.nCol, rRef.nRow, rRef.nTab );
+ rPos = aAbs;
return true;
}
}
@@ -2229,8 +2228,7 @@ bool ScFormulaCell::UpdateReference(
ScSingleRefData& rRef = t->GetSingleRef();
if ( nDy > 0 && rRef.IsColRel() )
{ // ColName
- rRef.CalcAbsIfRel( aPos );
- ScAddress aAdr( rRef.nCol, rRef.nRow, rRef.nTab );
+ ScAddress aAdr = rRef.toAbs(aPos);
ScRangePair* pR = pColList->Find( aAdr );
if ( pR )
{ // defined
@@ -2246,7 +2244,7 @@ bool ScFormulaCell::UpdateReference(
if ( nDx > 0 && rRef.IsRowRel() )
{ // RowName
rRef.CalcAbsIfRel( aPos );
- ScAddress aAdr( rRef.nCol, rRef.nRow, rRef.nTab );
+ ScAddress aAdr = rRef.toAbs(aPos);
ScRangePair* pR = pRowList->Find( aAdr );
if ( pR )
{ // defined
@@ -2275,11 +2273,10 @@ bool ScFormulaCell::UpdateReference(
while ( t && !bColRowNameCompile )
{
ScSingleRefData& rRef = t->GetSingleRef();
- rRef.CalcAbsIfRel( aPos );
- if ( rRef.Valid() )
+ ScAddress aAbs = rRef.toAbs(aPos);
+ if (ValidAddress(aAbs))
{
- ScAddress aAdr( rRef.nCol, rRef.nRow, rRef.nTab );
- if ( rRange.In( aAdr ) )
+ if (rRange.In(aAbs))
bColRowNameCompile = true;
}
t = static_cast<ScToken*>(pCode->GetNextColRowName());
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index 97a11cb..a862ae4 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -2005,7 +2005,7 @@ void XclExpFmlaCompImpl::ProcessExternalCellRef( const XclExpScToken& rTokData )
sal_uInt16 nFileId = rTokData.mpScToken->GetIndex();
const String& rTabName = rTokData.mpScToken->GetString();
if( mxData->mrCfg.mbFromCell && mxData->mpScBasePos )
- mxData->mpLinkMgr->StoreCell( nFileId, rTabName, aRefData );
+ mxData->mpLinkMgr->StoreCell(nFileId, rTabName, aRefData.toAbs(*mxData->mpScBasePos));
// 1-based EXTERNSHEET index and 0-based Excel sheet indexes
sal_uInt16 nExtSheet, nFirstSBTab, nLastSBTab;
@@ -2041,7 +2041,7 @@ void XclExpFmlaCompImpl::ProcessExternalRangeRef( const XclExpScToken& rTokData
sal_uInt16 nFileId = rTokData.mpScToken->GetIndex();
const String& rTabName = rTokData.mpScToken->GetString();
if( mxData->mrCfg.mbFromCell && mxData->mpScBasePos )
- mxData->mpLinkMgr->StoreCellRange( nFileId, rTabName, aRefData );
+ mxData->mpLinkMgr->StoreCellRange(nFileId, rTabName, aRefData.toAbs(*mxData->mpScBasePos));
// 1-based EXTERNSHEET index and 0-based Excel sheet indexes
sal_uInt16 nExtSheet, nFirstSBTab, nLastSBTab;
@@ -2119,15 +2119,15 @@ void XclExpFmlaCompImpl::ProcessExternalName( const XclExpScToken& rTokData )
case svExternalSingleRef:
{
ScSingleRefData aRefData = static_cast< ScToken* >( pScToken )->GetSingleRef();
- aRefData.CalcAbsIfRel( *mxData->mpScBasePos );
- mxData->mpLinkMgr->StoreCell( nFileId, pScToken->GetString(), aRefData );
+ mxData->mpLinkMgr->StoreCell(
+ nFileId, pScToken->GetString(), aRefData.toAbs(*mxData->mpScBasePos));
}
break;
case svExternalDoubleRef:
{
ScComplexRefData aRefData = static_cast< ScToken* >( pScToken )->GetDoubleRef();
- aRefData.CalcAbsIfRel( *mxData->mpScBasePos );
- mxData->mpLinkMgr->StoreCellRange( nFileId, pScToken->GetString(), aRefData );
+ mxData->mpLinkMgr->StoreCellRange(
+ nFileId, pScToken->GetString(), aRefData.toAbs(*mxData->mpScBasePos));
}
default:
; // nothing, avoid compiler warning
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 6ba0612..90ea02c 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -472,8 +472,8 @@ public:
/** Derived classes store all cells in the given range in a CRN record list. */
virtual void StoreCellRange( const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 ) = 0;
- virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef ) = 0;
- virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 ) = 0;
+ virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos ) = 0;
+ virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange ) = 0;
/** Derived classes find or insert an EXTERNNAME record for an add-in function name. */
virtual bool InsertAddIn(
@@ -520,8 +520,8 @@ public:
virtual void StoreCellRange( const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 );
- virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef );
- virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 );
+ virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos );
+ virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange );
virtual bool InsertAddIn(
sal_uInt16& rnExtSheet, sal_uInt16& rnExtName,
@@ -590,8 +590,8 @@ public:
virtual void StoreCellRange( const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 );
- virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef );
- virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 );
+ virtual void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos );
+ virtual void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange );
virtual bool InsertAddIn(
sal_uInt16& rnExtSheet, sal_uInt16& rnExtName,
@@ -1964,12 +1964,12 @@ void XclExpLinkManagerImpl5::StoreCellRange( const ScSingleRefData& /*rRef1*/, c
// not implemented
}
-void XclExpLinkManagerImpl5::StoreCell( sal_uInt16 /*nFileId*/, const String& /*rTabName*/, const ScSingleRefData& /*rRef*/ )
+void XclExpLinkManagerImpl5::StoreCell( sal_uInt16 /*nFileId*/, const String& /*rTabName*/, const ScAddress& /*rPos*/ )
{
// not implemented
}
-void XclExpLinkManagerImpl5::StoreCellRange( sal_uInt16 /*nFileId*/, const String& /*rTabName*/, const ScSingleRefData& /*rRef1*/, const ScSingleRefData& /*rRef2*/ )
+void XclExpLinkManagerImpl5::StoreCellRange( sal_uInt16 /*nFileId*/, const String& /*rTabName*/, const ScRange& /*rRange*/ )
{
// not implemented
}
@@ -2162,17 +2162,14 @@ void XclExpLinkManagerImpl8::StoreCellRange( const ScSingleRefData& rRef1, const
}
}
-void XclExpLinkManagerImpl8::StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef )
+void XclExpLinkManagerImpl8::StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos )
{
- ScAddress aAddr(rRef.nCol, rRef.nRow, rRef.nTab);
- maSBBuffer.StoreCell(nFileId, rTabName, aAddr);
+ maSBBuffer.StoreCell(nFileId, rTabName, rPos);
}
-void XclExpLinkManagerImpl8::StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef1, const ScSingleRefData& rRef2 )
+void XclExpLinkManagerImpl8::StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange )
{
- ScRange aRange(static_cast<SCCOL>(rRef1.nCol), static_cast<SCROW>(rRef1.nRow), static_cast<SCTAB>(rRef1.nTab),
- static_cast<SCCOL>(rRef2.nCol), static_cast<SCROW>(rRef2.nRow), static_cast<SCTAB>(rRef2.nTab));
- maSBBuffer.StoreCellRange(nFileId, rTabName, aRange);
+ maSBBuffer.StoreCellRange(nFileId, rTabName, rRange);
}
bool XclExpLinkManagerImpl8::InsertAddIn(
@@ -2310,14 +2307,14 @@ void XclExpLinkManager::StoreCellRange( const ScComplexRefData& rRef )
mxImpl->StoreCellRange( rRef.Ref1, rRef.Ref2 );
}
-void XclExpLinkManager::StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef )
+void XclExpLinkManager::StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos )
{
- mxImpl->StoreCell( nFileId, rTabName, rRef );
+ mxImpl->StoreCell(nFileId, rTabName, rPos);
}
-void XclExpLinkManager::StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScComplexRefData& rRef )
+void XclExpLinkManager::StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange )
{
- mxImpl->StoreCellRange( nFileId, rTabName, rRef.Ref1, rRef.Ref2 );
+ mxImpl->StoreCellRange(nFileId, rTabName, rRange);
}
bool XclExpLinkManager::InsertAddIn(
diff --git a/sc/source/filter/inc/xelink.hxx b/sc/source/filter/inc/xelink.hxx
index 56cb6f6..cdf65d3 100644
--- a/sc/source/filter/inc/xelink.hxx
+++ b/sc/source/filter/inc/xelink.hxx
@@ -170,9 +170,9 @@ public:
/** Stores all cells in the given range in a CRN record list. */
void StoreCellRange( const ScComplexRefData& rRef );
- void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef );
+ void StoreCell( sal_uInt16 nFileId, const String& rTabName, const ScAddress& rPos );
- void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScComplexRefData& rRef );
+ void StoreCellRange( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange );
/** Finds or inserts an EXTERNNAME record for an add-in function name.
@param rnExtSheet (out-param) Returns the index of the EXTSHEET structure for the add-in function name.
diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx
index 1f5dd65..0278c75 100644
--- a/sc/source/filter/lotus/lotform.cxx
+++ b/sc/source/filter/lotus/lotform.cxx
@@ -283,9 +283,6 @@ void LotusToSc::LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefDa
rSRD.nRelRow = static_cast< SCsROW >( static_cast< sal_Int16 >( nRow ) );
else
rSRD.nRow = static_cast< SCsROW >( nRow );
-
- if( rSRD.IsRowRel() || rSRD.IsColRel() )
- rSRD.CalcAbsIfRel( aEingPos );
}
More information about the Libreoffice-commits
mailing list