diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2017-06-15 21:42:01 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2017-06-15 21:42:01 +0100 |
commit | 2d042c1ab555d1044a4e7752788d8a96dd46ef00 (patch) | |
tree | ce354da314762791b6f5056796a5f2b71f2a88fd | |
parent | Double account for indexes so we can detect differences. (diff) | |
download | core-private/mmeeks/formula-iterator.tar.gz core-private/mmeeks/formula-iterator.zip |
Fails: catch differences in index.
private/mmeeks/formula-iterator
Change-Id: I9bc20b9e877ec26202ba674998f4857fdb38f6df
-rw-r--r-- | formula/source/core/api/FormulaCompiler.cxx | 6 | ||||
-rw-r--r-- | formula/source/core/api/token.cxx | 24 | ||||
-rw-r--r-- | include/formula/tokenarray.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/tool/compiler.cxx | 1 |
4 files changed, 25 insertions, 8 deletions
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index d3327433b986..f9d0f3c179ed 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -1269,7 +1269,6 @@ bool FormulaCompiler::GetToken() nWasColRowName = 1; else nWasColRowName = 0; - maArrIterator.assertSanity(pArr); mpToken = maArrIterator.Next(); while( mpToken && mpToken->GetOpCode() == ocSpaces ) { @@ -2654,11 +2653,6 @@ void FormulaCompiler::PushTokenArray( FormulaTokenArray* pa, bool bTemp ) maArrIterator = FormulaTokenArrayPlainIterator(*pArr, false); } -void FormulaTokenArrayPlainIterator::assertSanity( FormulaTokenArray *pArr ) -{ - assert (mpFTA == pArr); -} - } // namespace formula /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index 2def76b6723e..d8894aaaf8c1 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -1723,6 +1723,7 @@ void FormulaTokenIterator::Reset() FormulaToken* FormulaTokenArrayPlainIterator::GetNextName() { + assertSanity(); if( mpFTA->pCode ) { while ( *mpIndex < mpFTA->nLen ) @@ -1802,6 +1803,7 @@ bool FormulaTokenIterator::IsEndOfPath() const FormulaToken* FormulaTokenArrayPlainIterator::GetNextReference() { + assertSanity(); while( *mpIndex < mpFTA->nLen ) { FormulaToken* t = mpFTA->pCode[ (*mpIndex)++ ]; @@ -1825,6 +1827,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::GetNextReference() FormulaToken* FormulaTokenArrayPlainIterator::GetNextColRowName() { + assertSanity(); while( *mpIndex < mpFTA->nLen ) { FormulaToken* t = mpFTA->pCode[ (*mpIndex)++ ]; @@ -1840,6 +1843,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::GetNextColRowName() FormulaToken* FormulaTokenArrayPlainIterator::GetNextReferenceRPN() { + assertSanity(); while( *mpIndex < mpFTA->nRPN ) { FormulaToken* t = mpFTA->pRPN[ (*mpIndex)++ ]; @@ -1863,6 +1867,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::GetNextReferenceRPN() FormulaToken* FormulaTokenArrayPlainIterator::GetNextReferenceOrName() { + assertSanity(); if( mpFTA->pCode ) { while ( *mpIndex < mpFTA->nLen ) @@ -1891,6 +1896,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::GetNextReferenceOrName() FormulaToken* FormulaTokenArrayPlainIterator::Next() { + assertSanity(); if( mpFTA->pCode && *mpIndex < mpFTA->nLen ) { FormulaToken *token = mpFTA->pCode[ (*mpIndex)++ ]; @@ -1903,6 +1909,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::Next() FormulaToken* FormulaTokenArrayPlainIterator::NextNoSpaces() { + assertSanity(); if( mpFTA->pCode ) { while( (*mpIndex < mpFTA->nLen) && (mpFTA->pCode[ *mpIndex ]->GetOpCode() == ocSpaces) ) @@ -1920,6 +1927,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::NextNoSpaces() FormulaToken* FormulaTokenArrayPlainIterator::NextRPN() { + assertSanity(); if( mpFTA->pRPN && *mpIndex < mpFTA->nRPN ) { FormulaToken *token = mpFTA->pRPN[ (*mpIndex)++ ]; @@ -1932,6 +1940,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::NextRPN() FormulaToken* FormulaTokenArrayPlainIterator::PrevRPN() { + assertSanity(); if( mpFTA->pRPN && *mpIndex ) { FormulaToken *token = mpFTA->pRPN[ --(*mpIndex) ]; @@ -1944,6 +1953,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::PrevRPN() FormulaToken* FormulaTokenArrayPlainIterator::PeekNext() { + assertSanity(); if( mpFTA->pCode && *mpIndex < mpFTA->nLen ) return mpFTA->pCode[ *mpIndex ]; else @@ -1952,6 +1962,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::PeekNext() FormulaToken* FormulaTokenArrayPlainIterator::PeekNextNoSpaces() const { + assertSanity(); if( mpFTA->pCode && *mpIndex < mpFTA->nLen ) { sal_uInt16 j = *mpIndex; @@ -1968,6 +1979,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::PeekNextNoSpaces() const FormulaToken* FormulaTokenArrayPlainIterator::PeekPrevNoSpaces() const { + assertSanity(); if( mpFTA->pCode && *mpIndex > 1 ) { sal_uInt16 j = *mpIndex - 2; @@ -1984,6 +1996,7 @@ FormulaToken* FormulaTokenArrayPlainIterator::PeekPrevNoSpaces() const void FormulaTokenArrayPlainIterator::AfterRemoveToken( sal_uInt16 nOffset, sal_uInt16 nCount ) { + assertSanity(); const sal_uInt16 nStop = std::min( static_cast<sal_uInt16>(nOffset + nCount), mpFTA->nLen); if (*mpIndex >= nOffset) @@ -2134,17 +2147,20 @@ FormulaTokenArrayPlainIterator::FormulaTokenArrayPlainIterator( const FormulaTok void FormulaTokenArrayPlainIterator::Reset() { + assertSanity(); *mpIndex = 0; _nIndex = *mpIndex; } sal_uInt16 FormulaTokenArrayPlainIterator::GetIndex() const { + assertSanity(); return *mpIndex; } FormulaToken* FormulaTokenArrayPlainIterator::First() { + assertSanity(); *mpIndex = 0; _nIndex = *mpIndex; return Next(); @@ -2152,12 +2168,14 @@ FormulaTokenArrayPlainIterator::FormulaTokenArrayPlainIterator( const FormulaTok void FormulaTokenArrayPlainIterator::Jump(sal_uInt16 nIndex) { + assertSanity(); *mpIndex = nIndex; _nIndex = *mpIndex; } void FormulaTokenArrayPlainIterator::BackOne() { + assertSanity(); if (*mpIndex > 0) (*mpIndex)--; _nIndex = *mpIndex; @@ -2165,6 +2183,7 @@ FormulaTokenArrayPlainIterator::FormulaTokenArrayPlainIterator( const FormulaTok FormulaToken* FormulaTokenArrayPlainIterator::FirstRPN() { + assertSanity(); *mpIndex = 0; _nIndex = *mpIndex; return NextRPN(); @@ -2172,11 +2191,16 @@ FormulaTokenArrayPlainIterator::FormulaTokenArrayPlainIterator( const FormulaTok FormulaToken* FormulaTokenArrayPlainIterator::LastRPN() { + assertSanity(); *mpIndex = mpFTA->nRPN; _nIndex = *mpIndex; return PrevRPN(); } + void FormulaTokenArrayPlainIterator::assertSanity() const + { + assert (*mpIndex == _nIndex); + } } // formula diff --git a/include/formula/tokenarray.hxx b/include/formula/tokenarray.hxx index 54c09718b284..89ee7ab2687e 100644 --- a/include/formula/tokenarray.hxx +++ b/include/formula/tokenarray.hxx @@ -421,7 +421,7 @@ private: public: FormulaTokenArrayPlainIterator( const FormulaTokenArray& rFTA, bool bInternal = true ); - void assertSanity( FormulaTokenArray *pArr ); + void assertSanity() const; void Reset(); sal_uInt16 GetIndex() const; diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index f323a3b61668..dfb2568946e5 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -4647,7 +4647,6 @@ ScTokenArray* ScCompiler::CompileString( const OUString& rFormula ) pNew->GenHash(); pArr = pNew; maArrIterator = FormulaTokenArrayPlainIterator(*pArr, false); - maArrIterator.assertSanity(pArr); if (!maExternalFiles.empty()) { |