20 #ifndef INCLUDED_SC_INC_COMPRESSEDARRAY_HXX
21 #define INCLUDED_SC_INC_COMPRESSEDARRAY_HXX
78 void Reset(
const D& rValue );
79 void SetValue( A nPos,
const D& rValue );
80 void SetValue( A nStart, A nEnd,
const D& rValue );
88 const D&
GetValue( A nPos,
size_t& nIndex, A& nEnd )
const;
111 {
CopyFrom(rArray, nStart, nEnd, nStart); }
113 A nDestStart, A nDestEnd, A nSrcStart );
119 Iterator
begin()
const {
return Iterator(*
this); }
128 template<
typename A,
typename D >
136 pData[0].aValue = aTmpVal;
137 pData[0].nEnd = nMaxAccess;
140 template<
typename A,
typename D >
146 template<
typename A,
typename D >
150 return pData[nIndex].aValue;
153 template<
typename A,
typename D >
157 nEnd =
pData[nIndex].nEnd;
158 return pData[nIndex].aValue;
161 template<
typename A,
typename D >
166 aData.
mnRow1 = nIndex == 0 ? 0 :
pData[nIndex - 1].nEnd + 1;
172 template<
typename A,
typename D >
178 nEnd =
pData[nEntry].nEnd;
179 return pData[nEntry].aValue;
193 void AndValue( A nPos,
const D& rValueToAnd );
194 void OrValue( A nPos,
const D& rValueToOr );
195 void AndValue( A nStart, A nEnd,
const D& rValueToAnd );
196 void OrValue( A nStart, A nEnd,
const D& rValueToOr );
201 A nStart, A nEnd,
const D& rValueToAnd );
209 template<
typename A,
typename D >
213 if ((rValue & rValueToAnd) != rValue)
214 this->
SetValue( nPos, rValue & rValueToAnd);
217 template<
typename A,
typename D >
221 if ((rValue | rValueToOr) != rValue)
222 this->
SetValue( nPos, rValue | rValueToOr);
225 #endif // INCLUDED_SC_INC_COMPRESSEDARRAY_HXX
const D & GetNextValue(size_t &nIndex, A &nEnd) const
Get next value and it's region end row.
const D & operator*() const
void CopyFromAnded(const ScBitMaskCompressedArray &rArray, A nStart, A nEnd, const D &rValueToAnd)
Copy values from rArray and bitwise AND them with rValueToAnd.
void Remove(A nStart, size_t nCount)
std::unique_ptr< ContentProperties > pData
void AndValue(A nPos, const D &rValueToAnd)
void InsertPreservingSize(A nStart, size_t nCount, const D &rFillValue)
virtual ~ScCompressedArray()
A GetLastAnyBitAccess(const D &rBitMask) const
Return the last row where an entry meets the condition: ((aValue & rBitMask) != 0), start searching at 0.
css::uno::Any const & rValue
SC_DLLPUBLIC size_t Search(A nPos) const
Obtain index into entries for nPos.
constexpr OUStringLiteral aData
const ScCompressedArray & mrArray
void SetValue(A nPos, const D &rValue)
void RemovePreservingSize(A nStart, size_t nCount, const D &rFillValue)
ScCompressedArray(A nMaxAccess, const D &rValue)
Construct with nMaxAccess=MAXROW, for example.
const D & GetValue(A nPos) const
Iterator operator+(size_t) const
void CopyFrom(const ScCompressedArray &rArray, A nStart, A nEnd)
Copy rArray.nStart+nSourceDy to this.nStart.
Iterator(const ScCompressedArray &rArray, size_t nIndex, A nRegion)
void Reset(const D &rValue)
ScBitMaskCompressedArray(A nMaxAccessP, const D &rValue)
RangeData GetRangeData(A nPos) const
Get range data for a row, i.e.
Compressed array of row (or column) entries, e.g.
The data type represents bits, manageable by bitwise operations.
void OrValue(A nPos, const D &rValueToOr)
const D & Insert(A nStart, size_t nCount)
Insert rows before nStart and copy value for inserted rows from nStart-1, return that value...
Iterator(const ScCompressedArray &rArray)
std::unique_ptr< DataEntry[]> pData