[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - sc/inc sc/source
Kohei Yoshida
kohei.yoshida at gmail.com
Mon Jul 15 17:17:05 PDT 2013
sc/inc/refdata.hxx | 5 ++---
sc/source/core/tool/refdata.cxx | 24 +++++-------------------
sc/source/core/tool/token.cxx | 12 ++----------
3 files changed, 9 insertions(+), 32 deletions(-)
New commits:
commit 2d399787bb705324d53cfba74ff08f65f51ae002
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Mon Jul 15 20:17:19 2013 -0400
SmartRelAbs() is no more.
Change-Id: I8822d6dc36f49fe1e77100275616d8017b0a7627
diff --git a/sc/inc/refdata.hxx b/sc/inc/refdata.hxx
index 2e5b5c7..0eef078 100644
--- a/sc/inc/refdata.hxx
+++ b/sc/inc/refdata.hxx
@@ -83,7 +83,6 @@ struct SC_DLLPUBLIC ScSingleRefData
ScAddress toAbs( const ScAddress& rPos ) const;
- void SmartRelAbs( const ScAddress& rPos );
void CalcRelFromAbs( const ScAddress& rPos );
void CalcAbsIfRel( const ScAddress& rPos );
bool operator==( const ScSingleRefData& ) const;
@@ -151,8 +150,6 @@ struct ScComplexRefData
Ref1.InitAddress( nCol1, nRow1, nTab1 );
Ref2.InitAddress( nCol2, nRow2, nTab2 );
}
- inline void SmartRelAbs( const ScAddress& rPos )
- { Ref1.SmartRelAbs( rPos ); Ref2.SmartRelAbs( rPos ); }
inline void CalcRelFromAbs( const ScAddress& rPos )
{ Ref1.CalcRelFromAbs( rPos ); Ref2.CalcRelFromAbs( rPos ); }
inline void CalcAbsIfRel( const ScAddress& rPos )
@@ -165,6 +162,8 @@ struct ScComplexRefData
tab if one sheet, or >=0 if more than one sheets. */
inline bool ValidExternal() const;
+ ScRange toAbs( const ScAddress& rPos ) const;
+
/// Absolute references have to be up-to-date when calling this!
void PutInOrder();
inline bool operator==( const ScComplexRefData& r ) const
diff --git a/sc/source/core/tool/refdata.cxx b/sc/source/core/tool/refdata.cxx
index cdfaded..fa479d0 100644
--- a/sc/source/core/tool/refdata.cxx
+++ b/sc/source/core/tool/refdata.cxx
@@ -43,25 +43,6 @@ ScAddress ScSingleRefData::toAbs( const ScAddress& rPos ) const
return ScAddress(nRetCol, nRetRow, nRetTab);
}
-void ScSingleRefData::SmartRelAbs( const ScAddress& rPos )
-{
- if ( Flags.bColRel )
- nCol = nRelCol + rPos.Col();
- else
- nRelCol = nCol - rPos.Col();
-
- if ( Flags.bRowRel )
- nRow = nRelRow + rPos.Row();
- else
- nRelRow = nRow - rPos.Row();
-
- if ( Flags.bTabRel )
- nTab = nRelTab + rPos.Tab();
- else
- nRelTab = nTab - rPos.Tab();
-}
-
-
void ScSingleRefData::CalcAbsIfRel( const ScAddress& rPos )
{
if ( Flags.bColRel )
@@ -269,4 +250,9 @@ ScComplexRefData& ScComplexRefData::Extend( const ScComplexRefData & rRef, const
return Extend( rRef.Ref1, rPos).Extend( rRef.Ref2, rPos);
}
+ScRange ScComplexRefData::toAbs( const ScAddress& rPos ) const
+{
+ return ScRange(Ref1.toAbs(rPos), Ref2.toAbs(rPos));
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index f8e3e3b..5dccc7c 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -496,19 +496,11 @@ bool ScToken::TextEqual( const FormulaToken& _rToken ) const
aTemp2 = rToken.GetDoubleRef();
ScAddress aPos;
- aTemp1.SmartRelAbs(aPos);
- aTemp2.SmartRelAbs(aPos);
+ ScRange aRange1 = aTemp1.toAbs(aPos), aRange2 = aTemp2.toAbs(aPos);
// memcmp doesn't work because of the alignment byte after bFlags.
// After SmartRelAbs only absolute parts have to be compared.
- return aTemp1.Ref1.nCol == aTemp2.Ref1.nCol &&
- aTemp1.Ref1.nRow == aTemp2.Ref1.nRow &&
- aTemp1.Ref1.nTab == aTemp2.Ref1.nTab &&
- aTemp1.Ref1.mnFlagValue == aTemp2.Ref1.mnFlagValue &&
- aTemp1.Ref2.nCol == aTemp2.Ref2.nCol &&
- aTemp1.Ref2.nRow == aTemp2.Ref2.nRow &&
- aTemp1.Ref2.nTab == aTemp2.Ref2.nTab &&
- aTemp1.Ref2.mnFlagValue == aTemp2.Ref2.mnFlagValue;
+ return aRange1 == aRange2 && aTemp1.Ref1.mnFlagValue == aTemp2.Ref1.mnFlagValue && aTemp1.Ref2.mnFlagValue == aTemp2.Ref2.mnFlagValue;
}
else
return *this == _rToken; // else normal operator==
More information about the Libreoffice-commits
mailing list