sc/inc/attarray.hxx | 10 ++++++---- sc/inc/dociter.hxx | 2 +- sc/source/core/data/attarray.cxx | 39 +++++++++++++-------------------------- sc/source/core/data/dociter.cxx | 24 +++++++++++++++--------- 4 files changed, 35 insertions(+), 40 deletions(-)
New commits: commit cd13c045846bb2af4eefc46dc8f020f6073b6054 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 05:36:02 2013 +0100 unfriend this class and the method Change-Id: I43645409bee380ef6664109c4480ca37c5f3ecd2 diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx index c56207a..66db88a 100644 --- a/sc/inc/attarray.hxx +++ b/sc/inc/attarray.hxx @@ -87,9 +87,6 @@ friend class ScDocument; // for FillInfo friend class ScDocumentIterator; friend class ScAttrIterator; friend class ScHorizontalAttrIterator; -friend void ScAttrArray_IterGetNumberFormat( sal_uLong& nFormat, - const ScAttrArray*& rpArr, SCROW& nAttrEndRow, - const ScAttrArray* pNewArr, SCROW nRow, ScDocument* pDoc ); bool ApplyFrame( const SvxBoxItem* pLineOuter, const SvxBoxInfoItem* pLineInner, SCROW nStartRow, SCROW nEndRow, diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index cfcc52a..9d6098d 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -222,12 +222,18 @@ void ScAttrArray_IterGetNumberFormat( sal_uLong& nFormat, const ScAttrArray*& rp { if ( rpArr != pNewArr || nAttrEndRow < nRow ) { - SCSIZE nPos; - pNewArr->Search( nRow, nPos ); // nPos 0 gueltig wenn nicht gefunden - const ScPatternAttr* pPattern = pNewArr->pData[nPos].pPattern; + SCROW nRowStart = 0; + SCROW nRowEnd = MAXROW; + const ScPatternAttr* pPattern; + if( !(pPattern = pNewArr->GetPatternRange( nRowStart, nRowEnd, nRow ) ) ) + { + pPattern = pDoc->GetDefPattern(); + nRowEnd = MAXROW; + } + nFormat = pPattern->GetNumberFormat( pDoc->GetFormatTable() ); rpArr = pNewArr; - nAttrEndRow = pNewArr->pData[nPos].nRow; + nAttrEndRow = nRowEnd; } } commit 41281d375300512011113c69ddda5995463a3c88 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 05:05:31 2013 +0100 make a few more users of ScAttrArray outside of the class const Change-Id: I76aca6b1ddb8a326eecf70a68bed2a754e462c49 diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx index 7244921..3683111 100644 --- a/sc/inc/dociter.hxx +++ b/sc/inc/dociter.hxx @@ -141,7 +141,7 @@ public: private: static SCROW GetRowByColEntryIndex(ScDocument& rDoc, SCTAB nTab, SCCOL nCol, SCSIZE nColRow); static ScBaseCell* GetCellByColEntryIndex(ScDocument& rDoc, SCTAB nTab, SCCOL nCol, SCSIZE nColRow); - static ScAttrArray* GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol); + static const ScAttrArray* GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol); static bool IsQueryValid(ScDocument& rDoc, const ScQueryParam& rParam, SCTAB nTab, SCROW nRow, ScBaseCell* pCell); static SCSIZE SearchColEntryIndex(ScDocument& rDoc, SCTAB nTab, SCROW nRow, SCCOL nCol); diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index e343680..cfcc52a 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -98,7 +98,7 @@ bool ScDocumentIterator::GetThisCol() return false; } ScColumn* pCol = &pTab->aCol[nCol]; - ScAttrArray* pAtt = pCol->pAttrArray; + const ScAttrArray* pAtt = pCol->pAttrArray; bool bFound = false; do @@ -477,7 +477,7 @@ ScBaseCell* ScDBQueryDataIterator::GetCellByColEntryIndex(ScDocument& rDoc, SCTA return pCol->maItems[nColRow].pCell; } -ScAttrArray* ScDBQueryDataIterator::GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol) +const ScAttrArray* ScDBQueryDataIterator::GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol) { if (nTab >= rDoc.GetTableCount()) OSL_FAIL("try to access index out of bounds, FIX IT"); @@ -1938,7 +1938,7 @@ ScHorizontalAttrIterator::ScHorizontalAttrIterator( ScDocument* pDocument, SCTAB for (i=nStartCol; i<=nEndCol; i++) { SCCOL nPos = i - nStartCol; - ScAttrArray* pArray = pDoc->maTabs[nTab]->aCol[i].pAttrArray; + const ScAttrArray* pArray = pDoc->maTabs[nTab]->aCol[i].pAttrArray; OSL_ENSURE( pArray, "pArray == 0" ); SCSIZE nIndex; @@ -1967,7 +1967,7 @@ ScHorizontalAttrIterator::ScHorizontalAttrIterator( ScDocument* pDocument, SCTAB ScHorizontalAttrIterator::~ScHorizontalAttrIterator() { - delete[] (ScPatternAttr**)ppPatterns; + delete[] ppPatterns; delete[] pNextEnd; delete[] pIndices; } @@ -2012,7 +2012,7 @@ const ScPatternAttr* ScHorizontalAttrIterator::GetNext( SCCOL& rCol1, SCCOL& rCo SCCOL nPos = i-nStartCol; if ( pNextEnd[nPos] < nRow ) { - ScAttrArray* pArray = pDoc->maTabs[nTab]->aCol[i].pAttrArray; + const ScAttrArray* pArray = pDoc->maTabs[nTab]->aCol[i].pAttrArray; SCSIZE nIndex = ++pIndices[nPos]; if ( nIndex < pArray->nCount ) commit e8226a93aca391e9abe63edebc87aec05d3bf5bf Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 04:56:56 2013 +0100 this check always will result in true Actually I believe that pData is non-NULL in all cases now but proving it is quite complicated because there are a few too many friends of the class. Change-Id: I024605676281c0a4a46b42827b00ef98bf68ea79 diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index 39c87d0..50a1397 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -142,12 +142,9 @@ void ScAttrArray::Reset( const ScPatternAttr* pPattern ) nCount = nLimit = 1; pData = new ScAttrEntry[1]; - if (pData) - { - ScPatternAttr* pNewPattern = (ScPatternAttr*) &pDocPool->Put(*pPattern); - pData[0].nRow = MAXROW; - pData[0].pPattern = pNewPattern; - } + ScPatternAttr* pNewPattern = (ScPatternAttr*) &pDocPool->Put(*pPattern); + pData[0].nRow = MAXROW; + pData[0].pPattern = pNewPattern; } } commit 1830e257d85481bed61774fc8febf302a35c1dea Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 04:39:36 2013 +0100 this parameter was always true Change-Id: If78c958c11b5786f31127fc729806e1e5bc5d58a diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx index 9fc9677..c56207a 100644 --- a/sc/inc/attarray.hxx +++ b/sc/inc/attarray.hxx @@ -112,7 +112,7 @@ public: #if OSL_DEBUG_LEVEL > 1 void TestData() const; #endif - void Reset( const ScPatternAttr* pPattern, bool bAlloc = sal_True ); + void Reset( const ScPatternAttr* pPattern); bool Concat(SCSIZE nPos); const ScPatternAttr* GetPattern( SCROW nRow ) const; diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index 7d5dc7b..39c87d0 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -112,7 +112,7 @@ void ScAttrArray::TestData() const //------------------------------------------------------------------------ -void ScAttrArray::Reset( const ScPatternAttr* pPattern, bool bAlloc ) +void ScAttrArray::Reset( const ScPatternAttr* pPattern ) { if (pData) { @@ -140,21 +140,13 @@ void ScAttrArray::Reset( const ScPatternAttr* pPattern, bool bAlloc ) if (pDocument->IsStreamValid(nTab)) pDocument->SetStreamValid(nTab, false); - if (bAlloc) + nCount = nLimit = 1; + pData = new ScAttrEntry[1]; + if (pData) { - nCount = nLimit = 1; - pData = new ScAttrEntry[1]; - if (pData) - { - ScPatternAttr* pNewPattern = (ScPatternAttr*) &pDocPool->Put(*pPattern); - pData[0].nRow = MAXROW; - pData[0].pPattern = pNewPattern; - } - } - else - { - nCount = nLimit = 0; - pData = NULL; // should be immediately occupied again + ScPatternAttr* pNewPattern = (ScPatternAttr*) &pDocPool->Put(*pPattern); + pData[0].nRow = MAXROW; + pData[0].pPattern = pNewPattern; } } } commit 225e4ac6511699aba57286a7c3bff08c3c438406 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 04:05:08 2013 +0100 prevent copy c'tor and operator= Change-Id: Ibf45ab23a2272043729e7404de89ad514735bf06 diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx index 0f6b419..9fc9677 100644 --- a/sc/inc/attarray.hxx +++ b/sc/inc/attarray.hxx @@ -98,6 +98,11 @@ friend void ScAttrArray_IterGetNumberFormat( sal_uLong& nFormat, void RemoveCellCharAttribs( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr* pPattern, ScEditDataArray* pDataArray ); + // prevent the copy c'tor and operator= + // this is just to prevent accidental use + ScAttrArray(const ScAttrArray&); + ScAttrArray& operator=(const ScAttrArray&); + public: ScAttrArray( SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc ); ~ScAttrArray(); commit b0255df4bd988a89d41be060c4972d37eb9e3ec8 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 03:52:37 2013 +0100 prefer the c'tor initializer list Change-Id: Ic4087959ae04b27c228abf67ef538aa8717fae4f diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index f11eefa..7d5dc7b 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -51,15 +51,13 @@ using ::editeng::SvxBorderLine; ScAttrArray::ScAttrArray( SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc ) : nCol( nNewCol ), nTab( nNewTab ), - pDocument( pDoc ) + pDocument( pDoc ), + nCount(1), + nLimit(1), + pData(new ScAttrEntry[1]) { - nCount = nLimit = 1; - pData = new ScAttrEntry[1]; - if (pData) - { - pData[0].nRow = MAXROW; - pData[0].pPattern = pDocument->GetDefPattern(); // no put - } + pData[0].nRow = MAXROW; + pData[0].pPattern = pDocument->GetDefPattern(); // no put } //------------------------------------------------------------------------ commit c3669e680f8c557965945fa975ee0283706a15a8 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jan 30 02:22:35 2013 +0100 adapt comment to correct code Change-Id: I669036358773b0e9583d7d0b8130ca947d89fae9 diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index 8059b17..f11eefa 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -1286,7 +1286,7 @@ bool ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, sal_uInt16 nMask ) const // well it is not true that we found one // but existing one + cell where conditional // formatting does not remove it - // => we have a protected cell + // => we should use the existing protection settting bFoundCond = bFoundTemp; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits