diff options
author | Tor Lillqvist <tml@collabora.com> | 2017-11-28 12:38:03 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-03-19 14:55:30 +0100 |
commit | 5bc6c41dd0d9cbbc556f15106017697762efdd80 (patch) | |
tree | 682b11fd00896944fc200854d523f0da6e7493a4 /sc/source/core | |
parent | 5ad2c98f552a14692feeb490a77d30e3a35044ff (diff) |
Do as the FIXME suggested
Not exactly, though. The FIXME said "Make this a comparison operator
at the TokenArray?" but I think that would be misleading as the code
in question specifically does not check the TokenArrays for being
completely identical; it intentionally ignores the RPN part. So make
it a member function 'EqualTokens' instead.
Change-Id: I15d840c422844fa144415a76c1f8fcbd6cae3c83
Reviewed-on: https://gerrit.libreoffice.org/45404
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit aa28b54ab568fb7160095bb4a2fec338b1398b43)
Diffstat (limited to 'sc/source/core')
-rw-r--r-- | sc/source/core/data/conditio.cxx | 17 | ||||
-rw-r--r-- | sc/source/core/tool/token.cxx | 17 |
2 files changed, 18 insertions, 16 deletions
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 8ceebcc1411c..79b4ee063783 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -625,26 +625,11 @@ void ScConditionEntry::UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt ) StartListening(); } -//FIXME: Make this a comparison operator at the TokenArray? static bool lcl_IsEqual( const ScTokenArray* pArr1, const ScTokenArray* pArr2 ) { // We only compare the non-RPN array if ( pArr1 && pArr2 ) - { - sal_uInt16 nLen = pArr1->GetLen(); - if ( pArr2->GetLen() != nLen ) - return false; - - FormulaToken** ppToken1 = pArr1->GetArray(); - FormulaToken** ppToken2 = pArr2->GetArray(); - for (sal_uInt16 i=0; i<nLen; i++) - { - if ( ppToken1[i] != ppToken2[i] && - !(*ppToken1[i] == *ppToken2[i]) ) - return false; // Difference - } - return true; // All entries are the same - } + return pArr1->EqualTokens( pArr2 ); else return !pArr1 && !pArr2; // Both 0? -> the same } diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 089ed5b5f48d..8103731db85f 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -1943,6 +1943,23 @@ ScTokenArray& ScTokenArray::operator=( const ScTokenArray& rArr ) return *this; } +bool ScTokenArray::EqualTokens( const ScTokenArray* pArr2) const +{ + // We only compare the non-RPN array + if ( pArr2->nLen != nLen ) + return false; + + FormulaToken** ppToken1 = GetArray(); + FormulaToken** ppToken2 = pArr2->GetArray(); + for (sal_uInt16 i=0; i<nLen; i++) + { + if ( ppToken1[i] != ppToken2[i] && + !(*ppToken1[i] == *ppToken2[i]) ) + return false; // Difference + } + return true; // All entries are the same +} + void ScTokenArray::Clear() { mnHashValue = 0; |