26#include <osl/diagnose.h>
36 nCol1(r.nCol1),nRow1(r.nRow1),nCol2(r.nCol2),nRow2(r.nRow2),
37 aDataAreaExtras(r.aDataAreaExtras),
38 nUserIndex(r.nUserIndex),
39 bHasHeader(r.bHasHeader),bByRow(r.bByRow),bCaseSens(r.bCaseSens),
40 bNaturalSort(r.bNaturalSort),
43 nDestTab(r.nDestTab),nDestCol(r.nDestCol),nDestRow(r.nDestRow),
44 maKeyState( r.maKeyState ),
45 aCollatorLocale( r.aCollatorLocale ), aCollatorAlgorithm( r.aCollatorAlgorithm ),
46 nCompatHeader( r.nCompatHeader )
106 sal_uInt16 nLast = 0;
107 sal_uInt16 nOtherLast = 0;
112 while (
maKeyState[nLast++].bDoSort && nLast < nSortSize ) ;
118 while ( rOther.
maKeyState[nOtherLast++].bDoSort && nOtherLast < nSortSize ) ;
122 if ( (nLast == nOtherLast)
146 for ( sal_uInt16
i=0;
i<=nLast && bEqual;
i++ )
157 nCol1(rSub.nCol1),nRow1(rSub.nRow1),nCol2(rSub.nCol2),nRow2(rSub.nRow2),
158 aDataAreaExtras(rOld.aDataAreaExtras),
159 nUserIndex(rSub.nUserIndex),
160 bHasHeader(true),bByRow(true),bCaseSens(rSub.bCaseSens),bNaturalSort(rOld.bNaturalSort),
161 bUserDef(rSub.bUserDef),
163 nDestTab(0),nDestCol(0),nDestRow(0),
164 aCollatorLocale( rOld.aCollatorLocale ), aCollatorAlgorithm( rOld.aCollatorAlgorithm ),
165 nCompatHeader( rOld.nCompatHeader )
189 bool bDouble =
false;
205 nCol1(nCol),nRow1(rParam.nRow1),nCol2(nCol),nRow2(rParam.nRow2),nUserIndex(0),
206 bHasHeader(rParam.bHasHeader),bByRow(true),bCaseSens(rParam.bCaseSens),
211 nDestTab(0),nDestCol(0),nDestRow(0), nCompatHeader(2)
237 nCol1 = sal::static_int_cast<SCCOL>(
nCol1 + nDifX );
238 nRow1 = sal::static_int_cast<SCROW>(
nRow1 + nDifY );
239 nCol2 = sal::static_int_cast<SCCOL>(
nCol2 + nDifX );
240 nRow2 = sal::static_int_cast<SCROW>(
nRow2 + nDifY );
251 OSL_FAIL(
"MoveToDest, bInplace == TRUE");
263 bool operator() (
const ReorderIndex& r1,
const ReorderIndex& r2 )
const
265 return r1.mnPos2 < r2.mnPos2;
272 ReorderIndex(
SCCOLROW nPos1,
SCCOLROW nPos2 ) : mnPos1(nPos1), mnPos2(nPos2) {}
286 std::vector<ReorderIndex> aBucket;
288 for (
size_t i = 0;
i <
n; ++
i)
292 aBucket.emplace_back(nPos1, nPos2);
295 std::sort(aBucket.begin(), aBucket.end(), ReorderIndex::LessByPos2());
296 std::vector<SCCOLROW> aNew;
298 for (
size_t i = 0;
i <
n; ++
i)
299 aNew.push_back(aBucket[
i].mnPos1);
CAUTION! The following defines must be in the same namespace as the respective type.
::std::vector< ScSortKeyState > maKeyState
OUString aCollatorAlgorithm
ScSortParam & operator=(const ScSortParam &r)
ScDataAreaExtras aDataAreaExtras
css::lang::Locale aCollatorLocale
bool operator==(const ScSortParam &rOther) const
sal_uInt16 GetSortKeyCount() const
bool bAscending
sort ascending
bool bGroupActive[MAXSUBTOTAL]
active groups
SCCOL nField[MAXSUBTOTAL]
associated field
bool bIncludePattern
sort formats
void reverse()
Reorder the position indices such that it can be used to undo the original reordering.
std::vector< SCCOLROW > maOrderIndices
List of original column / row positions after reordering.
ScRange maSortRange
This sort range already takes into account the presence or absence of header row / column i....
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW