diff options
Diffstat (limited to 'sc/inc/dociter.hxx')
-rw-r--r-- | sc/inc/dociter.hxx | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx index 99ceb1e99972..90fbd614b8bd 100644 --- a/sc/inc/dociter.hxx +++ b/sc/inc/dociter.hxx @@ -248,149 +248,6 @@ public: bool next(); }; -class ScQueryCellIterator // walk through all non-empty cells in an area -{ - enum StopOnMismatchBits - { - nStopOnMismatchDisabled = 0x00, - nStopOnMismatchEnabled = 0x01, - nStopOnMismatchOccurred = 0x02, - nStopOnMismatchExecuted = nStopOnMismatchEnabled | nStopOnMismatchOccurred - }; - - enum TestEqualConditionBits - { - nTestEqualConditionDisabled = 0x00, - nTestEqualConditionEnabled = 0x01, - nTestEqualConditionMatched = 0x02, - nTestEqualConditionFulfilled = nTestEqualConditionEnabled | nTestEqualConditionMatched - }; - - typedef sc::CellStoreType::const_position_type PositionType; - PositionType maCurPos; - - ScQueryParam maParam; - ScDocument& rDoc; - const ScInterpreterContext& mrContext; - SCTAB nTab; - SCCOL nCol; - SCROW nRow; - sal_uInt8 nStopOnMismatch; - sal_uInt8 nTestEqualCondition; - bool bAdvanceQuery; - bool bIgnoreMismatchOnLeadingStrings; - - /** Initialize position for new column. */ - void InitPos(); - void IncPos(); - void IncBlock(); - bool GetThis(); - - /* Only works if no regular expression is involved, only - searches for rows in one column, and only the first - query entry is considered with simple conditions - SC_LESS_EQUAL (sorted ascending) or SC_GREATER_EQUAL - (sorted descending). Check these things before - invocation! Delivers a starting point, continue with - GetThis() and GetNext() afterwards. Introduced for - FindEqualOrSortedLastInRange() - */ - bool BinarySearch(); - -public: - ScQueryCellIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, SCTAB nTable, - const ScQueryParam& aParam, bool bMod); - // when !bMod, the QueryParam has to be filled - // (bIsString) - bool GetFirst(); - bool GetNext(); - SCCOL GetCol() const { return nCol; } - SCROW GetRow() const { return nRow; } - - // increments all Entry.nField, if column - // changes, for ScInterpreter ScHLookup() - void SetAdvanceQueryParamEntryField( bool bVal ) - { bAdvanceQuery = bVal; } - void AdvanceQueryParamEntryField(); - - /** If set, iterator stops on first non-matching cell - content. May be used in SC_LESS_EQUAL queries where a - cell range is assumed to be sorted; stops on first - value being greater than the queried value and - GetFirst()/GetNext() return NULL. StoppedOnMismatch() - returns true then. - However, the iterator's conditions are not set to end - all queries, GetCol() and GetRow() return values for - the non-matching cell, further GetNext() calls may be - executed. */ - void SetStopOnMismatch( bool bVal ) - { - nStopOnMismatch = sal::static_int_cast<sal_uInt8>(bVal ? nStopOnMismatchEnabled : - nStopOnMismatchDisabled); - } - bool StoppedOnMismatch() const - { return nStopOnMismatch == nStopOnMismatchExecuted; } - - /** If set, an additional test for SC_EQUAL condition is - executed in ScTable::ValidQuery() if SC_LESS_EQUAL or - SC_GREATER_EQUAL conditions are to be tested. May be - used where a cell range is assumed to be sorted to stop - if an equal match is found. */ - void SetTestEqualCondition( bool bVal ) - { - nTestEqualCondition = sal::static_int_cast<sal_uInt8>(bVal ? - nTestEqualConditionEnabled : - nTestEqualConditionDisabled); - } - bool IsEqualConditionFulfilled() const - { return nTestEqualCondition == nTestEqualConditionFulfilled; } - - /** In a range assumed to be sorted find either the last of - a sequence of equal entries or the last being less than - (or greater than) the queried value. Used by the - interpreter for [HV]?LOOKUP() and MATCH(). Column and - row position of the found entry are returned, otherwise - invalid. - - The search does not stop when encountering a string and does not - assume that no values follow anymore. - If querying for a string a mismatch on the first - entry, e.g. column header, is ignored. - - @ATTENTION! StopOnMismatch, TestEqualCondition and - the internal IgnoreMismatchOnLeadingStrings and query - params are in an undefined state upon return! The - iterator is not usable anymore except for obtaining the - number format! - */ - bool FindEqualOrSortedLastInRange( SCCOL& nFoundCol, SCROW& nFoundRow ); -}; - -// Used by ScInterpreter::ScCountIf. -// Walk through all non-empty cells in an area. -class ScCountIfCellIterator -{ - typedef sc::CellStoreType::const_position_type PositionType; - PositionType maCurPos; - ScQueryParam maParam; - ScDocument& rDoc; - const ScInterpreterContext& mrContext; - SCTAB nTab; - SCCOL nCol; - SCROW nRow; - - /** Initialize position for new column. */ - void InitPos(); - void IncPos(); - void IncBlock(); - void AdvanceQueryParamEntryField(); - -public: - ScCountIfCellIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, SCTAB nTable, - const ScQueryParam& aParam); - int GetCount(); -}; - class ScDocAttrIterator // all attribute areas { private: |