LibreOffice Module sc (master)  1
dociter.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include "address.hxx"
23 #include "formulagroup.hxx"
24 #include "global.hxx"
25 #include "scdllapi.h"
26 #include "cellvalue.hxx"
27 #include "mtvelements.hxx"
28 #include "queryparam.hxx"
29 #include <vcl/outdev.hxx>
30 #include <vcl/vclptr.hxx>
31 
32 #include <memory>
33 #include <set>
34 #include <vector>
35 
36 class ScDocument;
37 class ScPatternAttr;
38 class ScAttrArray;
39 class ScAttrIterator;
41 class ScMatrix;
42 struct ScDBQueryParamBase;
43 struct ScQueryParam;
46 class ScFormulaCell;
47 class OutputDevice;
49 enum class SvNumFormatType : sal_Int16;
50 
51 class ScValueIterator // walk through all values in an area
52 {
53  typedef sc::CellStoreType::const_position_type PositionType;
54 
58  sal_uInt32 nNumFormat; // for CalcAsShown
59  sal_uInt32 nNumFmtIndex;
67  bool bNumValid;
70 
72  PositionType maCurPos;
73 
74  SCROW GetRow() const;
75  void IncBlock();
76  void IncPos();
77 
82  bool GetThis( double& rValue, FormulaError& rErr );
83 
84 public:
85 
87  ScDocument& rDocument, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE,
88  bool bTextAsZero = false );
89 
90  void GetCurNumFmtInfo( const ScInterpreterContext& rContext, SvNumFormatType& nType, sal_uInt32& nIndex );
91 
93  bool GetFirst( double& rValue, FormulaError& rErr );
94 
96  bool GetNext( double& rValue, FormulaError& rErr );
97 
98  void SetInterpreterContext( ScInterpreterContext* context ) { pContext = context; }
99 };
100 
102 {
103 public:
104  struct Value
105  {
106  OUString maString;
107  double mfValue;
110 
111  Value();
112  };
113 
114 private:
115  static const sc::CellStoreType* GetColumnCellStore(ScDocument& rDoc, SCTAB nTab, SCCOL nCol);
116  static const ScAttrArray* GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol);
117  static bool IsQueryValid(ScDocument& rDoc, const ScQueryParam& rParam, SCTAB nTab, SCROW nRow, const ScRefCellValue* pCell);
118 
120  {
121  public:
122  DataAccess();
123  virtual ~DataAccess() = 0;
124  virtual bool getCurrent(Value& rValue) = 0;
125  virtual bool getFirst(Value& rValue) = 0;
126  virtual bool getNext(Value& rValue) = 0;
127  };
128 
129  class DataAccessInternal final : public DataAccess
130  {
131  typedef std::pair<sc::CellStoreType::const_iterator,size_t> PositionType;
132  public:
134  virtual ~DataAccessInternal() override;
135  virtual bool getCurrent(Value& rValue) override;
136  virtual bool getFirst(Value& rValue) override;
137  virtual bool getNext(Value& rValue) override;
138 
139  private:
140  void incBlock();
141  void incPos();
142 
144  PositionType maCurPos;
149  sal_uInt32 nNumFormat; // for CalcAsShown
150  sal_uInt32 nNumFmtIndex;
157  };
158 
159  class DataAccessMatrix final : public DataAccess
160  {
161  public:
163  virtual ~DataAccessMatrix() override;
164  virtual bool getCurrent(Value& rValue) override;
165  virtual bool getFirst(Value& rValue) override;
166  virtual bool getNext(Value& rValue) override;
167 
168  private:
169  bool isValidQuery(SCROW mnRow, const ScMatrix& rMat) const;
170 
174  };
175 
176  ::std::unique_ptr<ScDBQueryParamBase> mpParam;
177  ::std::unique_ptr<DataAccess> mpData;
178 
179 public:
180  ScDBQueryDataIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, std::unique_ptr<ScDBQueryParamBase> pParam);
182  bool GetFirst(Value& rValue);
184  bool GetNext(Value& rValue);
185 };
186 
188 {
189 private:
193  bool mbNullCol;
194  size_t mnIndex;
195  std::vector<sc::FormulaGroupEntry> maEntries;
196 
197 public:
199 
202 };
203 
208 {
209  typedef std::pair<sc::CellStoreType::const_iterator, size_t> PositionType;
210 
215 
216  PositionType maCurColPos;
218 
220 
221  void incBlock();
222  void incPos();
223  void setPos(size_t nPos);
224 
225  const ScColumn* getColumn() const;
226 
227  void init();
228  bool getCurrent();
229 
230 public:
231  ScCellIterator( ScDocument& rDoc, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE );
232 
233  const ScAddress& GetPos() const { return maCurPos; }
234 
235  CellType getType() const { return maCurCell.meType;}
236  OUString getString() const;
237  const EditTextObject* getEditText() const { return maCurCell.mpEditText;}
238  ScFormulaCell* getFormulaCell() { return maCurCell.mpFormula;}
239  const ScFormulaCell* getFormulaCell() const { return maCurCell.mpFormula;}
240  ScCellValue getCellValue() const;
241  const ScRefCellValue& getRefCellValue() const { return maCurCell;}
242 
243  bool hasString() const;
244  bool isEmpty() const;
245  bool equalsWithoutFormat( const ScAddress& rPos ) const;
246 
247  bool first();
248  bool next();
249 };
250 
251 class ScQueryCellIterator // walk through all non-empty cells in an area
252 {
254  {
259  };
260 
262  {
267  };
268 
269  typedef sc::CellStoreType::const_position_type PositionType;
270  PositionType maCurPos;
271 
282 
284  void InitPos();
285  void IncPos();
286  void IncBlock();
287  bool GetThis();
288 
289  /* Only works if no regular expression is involved, only
290  searches for rows in one column, and only the first
291  query entry is considered with simple conditions
292  SC_LESS_EQUAL (sorted ascending) or SC_GREATER_EQUAL
293  (sorted descending). Check these things before
294  invocation! Delivers a starting point, continue with
295  GetThis() and GetNext() afterwards. Introduced for
296  FindEqualOrSortedLastInRange()
297  */
298  bool BinarySearch();
299 
300 public:
301  ScQueryCellIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, SCTAB nTable,
302  const ScQueryParam& aParam, bool bMod);
303  // when !bMod, the QueryParam has to be filled
304  // (bIsString)
305  bool GetFirst();
306  bool GetNext();
307  SCCOL GetCol() const { return nCol; }
308  SCROW GetRow() const { return nRow; }
309 
310  // increments all Entry.nField, if column
311  // changes, for ScInterpreter ScHLookup()
313  { bAdvanceQuery = bVal; }
315 
326  void SetStopOnMismatch( bool bVal )
327  {
328  nStopOnMismatch = sal::static_int_cast<sal_uInt8>(bVal ? nStopOnMismatchEnabled :
330  }
331  bool StoppedOnMismatch() const
332  { return nStopOnMismatch == nStopOnMismatchExecuted; }
333 
339  void SetTestEqualCondition( bool bVal )
340  {
341  nTestEqualCondition = sal::static_int_cast<sal_uInt8>(bVal ?
344  }
346  { return nTestEqualCondition == nTestEqualConditionFulfilled; }
347 
366  bool FindEqualOrSortedLastInRange( SCCOL& nFoundCol, SCROW& nFoundRow );
367 };
368 
369 // Used by ScInterpreter::ScCountIf.
370 // Walk through all non-empty cells in an area.
372 {
373  typedef sc::CellStoreType::const_position_type PositionType;
374  PositionType maCurPos;
381 
383  void InitPos();
384  void IncPos();
385  void IncBlock();
387 
388 public:
389  ScCountIfCellIterator(ScDocument& rDocument, const ScInterpreterContext& rContext, SCTAB nTable,
390  const ScQueryParam& aParam);
391  int GetCount();
392 };
393 
394 class ScDocAttrIterator // all attribute areas
395 {
396 private:
403  std::unique_ptr<ScAttrIterator>
405 
406 public:
407  ScDocAttrIterator(ScDocument& rDocument, SCTAB nTable,
408  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
410 
411  const ScPatternAttr* GetNext( SCCOL& rCol, SCROW& rRow1, SCROW& rRow2 );
412 };
413 
414 class ScAttrRectIterator // all attribute areas, including areas stretching
415  // across more than one column
416 {
417 private:
425  std::unique_ptr<ScAttrIterator>
427 
428 public:
429  ScAttrRectIterator(ScDocument& rDocument, SCTAB nTable,
430  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
432 
433  void DataChanged();
434  const ScPatternAttr* GetNext( SCCOL& rCol1, SCCOL& rCol2, SCROW& rRow1, SCROW& rRow2 );
435 };
436 
437 class ScHorizontalCellIterator // walk through all non empty cells in an area
438 { // row by row
439  struct ColParam
440  {
441  sc::CellStoreType::const_iterator maPos;
442  sc::CellStoreType::const_iterator maEnd;
444  };
445 
446  std::vector<ColParam>::iterator maColPos;
447  std::vector<ColParam> maColPositions;
448 
458  bool mbMore;
459 
460 public:
461  ScHorizontalCellIterator(ScDocument& rDocument, SCTAB nTable,
462  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
464 
465  ScRefCellValue* GetNext( SCCOL& rCol, SCROW& rRow );
466  bool GetPos( SCCOL& rCol, SCROW& rRow );
468  void SetTab( SCTAB nTab );
469 
470 private:
471  void Advance();
472  void SkipInvalid();
473  bool SkipInvalidInRow();
475 };
476 
479 {
480 private:
483  std::unique_ptr<ScHorizontalCellIterator>
485  sal_uInt32 nNumFormat; // for CalcAsShown
492 
493 public:
494 
496  const ScRange& rRange );
499  bool GetNext( double& rValue, FormulaError& rErr );
500 };
501 
502 // returns all areas with non-default formatting (horizontal)
503 
505 {
506 private:
513 
514  std::unique_ptr<SCROW[]> pNextEnd;
515  std::unique_ptr<SCCOL[]> pHorizEnd;
516  std::unique_ptr<SCSIZE[]> pIndices;
517  std::unique_ptr<const ScPatternAttr*[]>
521  bool bRowEmpty;
523 
524  void InitForNextRow(bool bInitialization);
525  bool InitForNextAttr();
526 
527 public:
528  ScHorizontalAttrIterator( ScDocument& rDocument, SCTAB nTable,
529  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
531 
532  const ScPatternAttr* GetNext( SCCOL& rCol1, SCCOL& rCol2, SCROW& rRow );
533 };
534 
535 // returns non-empty cells and areas with formatting (horizontal)
536 
538 {
539 private:
542 
545 
553 
554  SCCOL nFoundStartCol; // results after GetNext
558 
560 
561 public:
562  ScUsedAreaIterator( ScDocument& rDocument, SCTAB nTable,
563  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
565 
566  bool GetNext();
567 
568  SCCOL GetStartCol() const { return nFoundStartCol; }
569  SCCOL GetEndCol() const { return nFoundEndCol; }
570  SCROW GetRow() const { return nFoundRow; }
571  const ScPatternAttr* GetPattern() const { return pFoundPattern; }
572  const ScRefCellValue& GetCell() const { return maFoundCell;}
573 };
574 
576 {
577 public:
578  static constexpr SCROW NOT_FOUND = -1;
579 
580  explicit ScRowBreakIterator(::std::set<SCROW>& rBreaks);
581  SCROW first();
582  SCROW next();
583 
584 private:
585  ::std::set<SCROW>& mrBreaks;
586  ::std::set<SCROW>::const_iterator maItr;
587  ::std::set<SCROW>::const_iterator maEnd;
588 };
589 
591 {
592 public:
593  struct TabRanges
594  {
597 
598  TabRanges(SCTAB nTab, SCROW nMaxRow);
599  };
600 
605  explicit ScDocRowHeightUpdater(
606  ScDocument& rDoc, OutputDevice* pOutDev, double fPPTX, double fPPTY,
607  const ::std::vector<TabRanges>* pTabRangesArray);
608 
609  void update();
610 
611 private:
612  void updateAll();
613 
614 private:
617  double mfPPTX;
618  double mfPPTY;
619  const ::std::vector<TabRanges>* mpTabRangesArray;
620 };
621 
622 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:112
ScValueIterator(ScDocument &rDocument, const ScRange &rRange, SubtotalFlags nSubTotalFlags=SubtotalFlags::NONE, bool bTextAsZero=false)
Definition: dociter.cxx:103
bool bIgnoreMismatchOnLeadingStrings
Definition: dociter.hxx:281
sal_uInt8 nStopOnMismatch
Definition: dociter.hxx:278
ScAddress maCurPos
Definition: dociter.hxx:214
const sc::CellStoreType * mpCells
Definition: dociter.hxx:143
sal_uInt8 nTestEqualCondition
Definition: dociter.hxx:279
OUString getString() const
Definition: dociter.cxx:983
bool isValidQuery(SCROW mnRow, const ScMatrix &rMat) const
Definition: dociter.cxx:617
ScRefCellValue * GetNext(SCCOL &rCol, SCROW &rRow)
Definition: dociter.cxx:2132
ScDocRowHeightUpdater(ScDocument &rDoc, OutputDevice *pOutDev, double fPPTX, double fPPTY, const ::std::vector< TabRanges > *pTabRangesArray)
Passing a NULL pointer to pTabRangesArray forces the heights of all rows in all tables to be updated...
Definition: dociter.cxx:2683
std::unique_ptr< const ScPatternAttr *[]> ppPatterns
Definition: dociter.hxx:518
DataAccessMatrix(ScDBQueryParamMatrix *pParam)
Definition: dociter.cxx:530
ScDocument & rDoc
Definition: dociter.hxx:397
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:373
virtual bool getFirst(Value &rValue) override
Definition: dociter.cxx:487
const ScInterpreterContext & mrContext
Definition: dociter.hxx:377
bool GetPos(SCCOL &rCol, SCROW &rRow)
Definition: dociter.cxx:2155
bool equalsWithoutFormat(const ScAddress &rPos) const
Definition: dociter.cxx:1024
ScRefCellValue maCurCell
Definition: dociter.hxx:457
::std::set< SCROW >::const_iterator maEnd
Definition: dociter.hxx:587
bool bTextAsZero
Definition: dociter.hxx:69
bool getCurrent()
Definition: dociter.cxx:907
std::unique_ptr< ScAttrIterator > pColIter
Definition: dociter.hxx:404
const ScAttrArray * pAttrArray
Definition: dociter.hxx:482
virtual bool getCurrent(Value &rValue)=0
bool GetNext(Value &rValue)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:777
std::vector< sc::FormulaGroupEntry > maEntries
Definition: dociter.hxx:195
bool hasString() const
Definition: dociter.cxx:1014
ScAddress maStartPos
Definition: dociter.hxx:212
void AdvanceQueryParamEntryField()
Definition: dociter.cxx:1247
This is very similar to ScCellValue, except that it references the original value instead of copying ...
Definition: cellvalue.hxx:103
static bool IsQueryValid(ScDocument &rDoc, const ScQueryParam &rParam, SCTAB nTab, SCROW nRow, const ScRefCellValue *pCell)
Definition: dociter.cxx:343
SubtotalFlags mnSubTotalFlags
Definition: dociter.hxx:217
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
const ScInterpreterContext & mrContext
Definition: dociter.hxx:147
std::pair< sc::CellStoreType::const_iterator, size_t > PositionType
Definition: dociter.hxx:131
ScQueryCellIterator(ScDocument &rDocument, const ScInterpreterContext &rContext, SCTAB nTable, const ScQueryParam &aParam, bool bMod)
Definition: dociter.cxx:1048
ScFormulaCell * getFormulaCell()
Definition: dociter.hxx:238
static const sc::CellStoreType * GetColumnCellStore(ScDocument &rDoc, SCTAB nTab, SCCOL nCol)
Definition: dociter.cxx:326
ScAddress maEndPos
Definition: dociter.hxx:213
DataAccessInternal(ScDBQueryParamInternal *pParam, ScDocument &rDoc, const ScInterpreterContext &rContext)
Definition: dociter.cxx:350
std::unique_ptr< SCSIZE[]> pIndices
Definition: dociter.hxx:516
Row-wise value iterator.
Definition: dociter.hxx:478
CellType getType() const
Definition: dociter.hxx:235
ScFormulaGroupIterator(ScDocument &rDoc)
Definition: dociter.cxx:782
::std::set< SCROW >::const_iterator maItr
Definition: dociter.hxx:586
const ScPatternAttr * pPattern
Definition: dociter.hxx:552
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:35
ScQueryParam maParam
Definition: dociter.hxx:375
SubtotalFlags
Definition: global.hxx:250
const ScColumn * getColumn() const
Definition: dociter.cxx:870
const ScRefCellValue & GetCell() const
Definition: dociter.hxx:572
const sc::CellStoreType * mpCells
Definition: dociter.hxx:71
ScDocument & rDoc
Definition: dociter.hxx:273
bool IsEqualConditionFulfilled() const
Definition: dociter.hxx:345
void SetTab(SCTAB nTab)
Set a(nother) sheet and (re)init.
Definition: dociter.cxx:2095
const EditTextObject * mpEditText
Definition: cellvalue.hxx:109
void SetStopOnMismatch(bool bVal)
If set, iterator stops on first non-matching cell content.
Definition: dociter.hxx:326
PositionType maCurColPos
Definition: dociter.hxx:216
SCROW GetRow() const
Definition: dociter.cxx:132
const ScRefCellValue & getRefCellValue() const
Definition: dociter.hxx:241
SCCOL GetCol() const
Definition: dociter.hxx:307
void InitPos()
Initialize position for new column.
Definition: dociter.cxx:1077
Walk through all cells in an area.
Definition: dociter.hxx:207
PositionType maCurPos
Definition: dociter.hxx:270
ScFormulaCell * mpFormula
Definition: cellvalue.hxx:110
const ::std::vector< TabRanges > * mpTabRangesArray
Definition: dociter.hxx:619
void SetInterpreterContext(ScInterpreterContext *context)
Definition: dociter.hxx:98
ScAttrRectIterator(ScDocument &rDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2767
void SetTestEqualCondition(bool bVal)
If set, an additional test for SC_EQUAL condition is executed in ScTable::ValidQuery() if SC_LESS_EQU...
Definition: dociter.hxx:339
ScCountIfCellIterator(ScDocument &rDocument, const ScInterpreterContext &rContext, SCTAB nTable, const ScQueryParam &aParam)
Definition: dociter.cxx:1456
bool GetNext(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:2333
ScDBQueryParamMatrix * mpParam
Definition: dociter.hxx:171
void SetAdvanceQueryParamEntryField(bool bVal)
Definition: dociter.hxx:312
std::vector< ColParam >::iterator maColPos
Definition: dociter.hxx:446
SvNumFormatType nNumFmtType
Definition: dociter.hxx:66
sc::CellStoreType::const_iterator maEnd
Definition: dociter.hxx:442
ScQueryParam maParam
Definition: dociter.hxx:272
ScDocument & mrDoc
Definition: dociter.hxx:190
void AdvanceQueryParamEntryField()
Definition: dociter.cxx:1578
std::unique_ptr< SCCOL[]> pHorizEnd
Definition: dociter.hxx:515
virtual bool getNext(Value &rValue)=0
ScRefCellValue maCurCell
Definition: dociter.hxx:219
PositionType maCurPos
Definition: dociter.hxx:72
ScAddress maEndPos
Definition: dociter.hxx:61
const ScFormulaCell * getFormulaCell() const
Definition: dociter.hxx:239
sal_Int16 SCCOL
Definition: types.hxx:21
void setPos(size_t nPos)
Definition: dociter.cxx:864
sc::FormulaGroupEntry * next()
Definition: dociter.cxx:804
virtual bool getFirst(Value &rValue) override
Definition: dociter.cxx:570
const ScPatternAttr * GetPattern() const
Definition: dociter.hxx:571
bool GetThis(double &rValue, FormulaError &rErr)
See if the cell at the current position is a non-empty cell.
Definition: dociter.cxx:155
std::vector< ColParam > maColPositions
Definition: dociter.hxx:447
SCROW nAttrEndRow
Definition: dociter.hxx:64
VclPtr< OutputDevice > mpOutDev
Definition: dociter.hxx:616
bool StoppedOnMismatch() const
Definition: dociter.hxx:331
SvNumFormatType
SCROW FindNextNonEmptyRow()
Find the next row that has some real content in one of its columns.
Definition: dociter.cxx:2239
sal_uInt32 nNumFmtIndex
Definition: dociter.hxx:59
bool GetFirst(Value &rValue)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:772
TabRanges(SCTAB nTab, SCROW nMaxRow)
Definition: dociter.cxx:2678
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:269
ScHorizontalAttrIterator(ScDocument &rDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2384
ScDocument & rDoc
Definition: dociter.hxx:376
SCROW GetRow() const
Definition: dociter.hxx:570
std::unique_ptr< ScAttrIterator > pColIter
Definition: dociter.hxx:426
ScCellIterator(ScDocument &rDoc, const ScRange &rRange, SubtotalFlags nSubTotalFlags=SubtotalFlags::NONE)
Definition: dociter.cxx:834
bool FindEqualOrSortedLastInRange(SCCOL &nFoundCol, SCROW &nFoundRow)
In a range assumed to be sorted find either the last of a sequence of equal entries or the last being...
Definition: dociter.cxx:1267
::std::set< SCROW > & mrBreaks
Definition: dociter.hxx:585
FormulaError
SCROW GetRow() const
Definition: dociter.hxx:308
bool isEmpty() const
Definition: dociter.cxx:1019
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:53
ScHorizontalCellIterator(ScDocument &rDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2068
sal_uInt32 nNumFormat
Definition: dociter.hxx:58
std::unique_ptr< ScHorizontalCellIterator > pCellIter
Definition: dociter.hxx:484
const ScAddress & GetPos() const
Definition: dociter.hxx:233
const EditTextObject * getEditText() const
Definition: dociter.hxx:237
CellType meType
Definition: cellvalue.hxx:105
sal_Int32 SCROW
Definition: types.hxx:17
static constexpr SCROW NOT_FOUND
Definition: dociter.hxx:578
::std::unique_ptr< ScDBQueryParamBase > mpParam
Definition: dociter.hxx:176
ScFlatBoolRowSegments maRanges
Definition: dociter.hxx:596
PositionType maCurPos
Definition: dociter.hxx:374
sc::CellStoreType::const_iterator maPos
Definition: dociter.hxx:441
ScDocument & mrDoc
Definition: dociter.hxx:211
unsigned char sal_uInt8
static const ScAttrArray * GetAttrArrayByCol(ScDocument &rDoc, SCTAB nTab, SCCOL nCol)
Definition: dociter.cxx:336
ScAddress maStartPos
Definition: dociter.hxx:60
bool GetFirst(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:288
void InitForNextRow(bool bInitialization)
Definition: dociter.cxx:2414
CellType
Definition: global.hxx:281
sc::FormulaGroupEntry * first()
Definition: dociter.cxx:799
void InitPos()
Initialize position for new column.
Definition: dociter.cxx:1469
ScHorizontalValueIterator(ScDocument &rDocument, const ScRange &rRange)
Definition: dociter.cxx:2295
virtual bool getNext(Value &rValue) override
Definition: dociter.cxx:576
const ScInterpreterContext & mrContext
Definition: dociter.hxx:274
bool bCalcAsShown
Definition: dociter.hxx:68
const ScPatternAttr * GetNext(SCCOL &rCol1, SCCOL &rCol2, SCROW &rRow1, SCROW &rRow2)
Definition: dociter.cxx:2805
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:398
const ScPatternAttr * GetNext(SCCOL &rCol, SCROW &rRow1, SCROW &rRow2)
Definition: dociter.cxx:2658
ScHorizontalAttrIterator aAttrIter
Definition: dociter.hxx:541
void GetCurNumFmtInfo(const ScInterpreterContext &rContext, SvNumFormatType &nType, sal_uInt32 &nIndex)
Definition: dociter.cxx:273
bool GetNext(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:312
ScCellValue getCellValue() const
Definition: dociter.cxx:988
virtual bool getFirst(Value &rValue)=0
ScRefCellValue * pCell
Definition: dociter.hxx:548
virtual bool getCurrent(Value &rValue) override
Definition: dociter.cxx:543
const ScPatternAttr * GetNext(SCCOL &rCol1, SCCOL &rCol2, SCROW &rRow)
Definition: dociter.cxx:2502
ScDocument & rDoc
Definition: dociter.hxx:418
ScDocAttrIterator(ScDocument &rDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2636
virtual bool getCurrent(Value &rValue) override
Definition: dociter.cxx:384
void incPos()
Definition: dociter.cxx:851
sal_Int32 mnRow
SCCOL GetStartCol() const
Definition: dociter.hxx:568
SubtotalFlags mnSubTotalFlags
Definition: dociter.hxx:65
const ScPatternAttr * pFoundPattern
Definition: dociter.hxx:557
ScInterpreterContext * pContext
Definition: dociter.hxx:56
ScRowBreakIterator(::std::set< SCROW > &rBreaks)
Definition: dociter.cxx:2834
std::pair< sc::CellStoreType::const_iterator, size_t > PositionType
Definition: dociter.hxx:209
ScDocument & mrDoc
Definition: dociter.hxx:615
SCCOL GetEndCol() const
Definition: dociter.hxx:569
ScHorizontalCellIterator aCellIter
Definition: dociter.hxx:540
void incBlock()
Definition: dociter.cxx:843
::std::unique_ptr< DataAccess > mpData
Definition: dociter.hxx:177
virtual bool getNext(Value &rValue) override
Definition: dociter.cxx:500
void IncBlock()
Definition: dociter.cxx:139
ScDBQueryDataIterator(ScDocument &rDocument, const ScInterpreterContext &rContext, std::unique_ptr< ScDBQueryParamBase > pParam)
Definition: dociter.cxx:753
#define SC_DLLPUBLIC
Definition: scdllapi.h:27
std::unique_ptr< SCROW[]> pNextEnd
Definition: dociter.hxx:514
ScDBQueryParamInternal * mpParam
Definition: dociter.hxx:145
const ScAttrArray * pAttrArray
Definition: dociter.hxx:57
sal_Int16 SCTAB
Definition: types.hxx:22
ScRefCellValue maFoundCell
Definition: dociter.hxx:559
ScDocument & mrDoc
Definition: dociter.hxx:55