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 #ifndef INCLUDED_SC_INC_DOCITER_HXX
21 #define INCLUDED_SC_INC_DOCITER_HXX
22 
23 #include "address.hxx"
24 #include "formulagroup.hxx"
25 #include "global.hxx"
26 #include "scdllapi.h"
27 #include "cellvalue.hxx"
28 #include "mtvelements.hxx"
29 #include "queryparam.hxx"
30 #include <vcl/outdev.hxx>
31 #include <vcl/vclptr.hxx>
32 
33 #include <memory>
34 #include <set>
35 #include <vector>
36 
37 class ScDocument;
38 class ScPatternAttr;
39 class ScAttrArray;
40 class ScAttrIterator;
42 class ScMatrix;
43 struct ScDBQueryParamBase;
44 struct ScQueryParam;
47 class ScFormulaCell;
48 class OutputDevice;
50 enum class SvNumFormatType : sal_Int16;
51 
52 class ScValueIterator // walk through all values in an area
53 {
54  typedef sc::CellStoreType::const_position_type PositionType;
55 
59  sal_uInt32 nNumFormat; // for CalcAsShown
60  sal_uInt32 nNumFmtIndex;
68  bool bNumValid;
71 
73  PositionType maCurPos;
74 
75  SCROW GetRow() const;
76  void IncBlock();
77  void IncPos();
78 
83  bool GetThis( double& rValue, FormulaError& rErr );
84 
85 public:
86 
88  ScDocument* pDocument, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE,
89  bool bTextAsZero = false );
90 
91  void GetCurNumFmtInfo( const ScInterpreterContext& rContext, SvNumFormatType& nType, sal_uInt32& nIndex );
92 
94  bool GetFirst( double& rValue, FormulaError& rErr );
95 
97  bool GetNext( double& rValue, FormulaError& rErr );
98 
99  void SetInterpreterContext( ScInterpreterContext* context ) { pContext = context; }
100 };
101 
103 {
104 public:
105  struct Value
106  {
107  OUString maString;
108  double mfValue;
111 
112  Value();
113  };
114 
115 private:
116  static const sc::CellStoreType* GetColumnCellStore(ScDocument& rDoc, SCTAB nTab, SCCOL nCol);
117  static const ScAttrArray* GetAttrArrayByCol(ScDocument& rDoc, SCTAB nTab, SCCOL nCol);
118  static bool IsQueryValid(ScDocument& rDoc, const ScQueryParam& rParam, SCTAB nTab, SCROW nRow, const ScRefCellValue* pCell);
119 
121  {
122  public:
123  DataAccess();
124  virtual ~DataAccess() = 0;
125  virtual bool getCurrent(Value& rValue) = 0;
126  virtual bool getFirst(Value& rValue) = 0;
127  virtual bool getNext(Value& rValue) = 0;
128  };
129 
130  class DataAccessInternal final : public DataAccess
131  {
132  typedef std::pair<sc::CellStoreType::const_iterator,size_t> PositionType;
133  public:
135  virtual ~DataAccessInternal() override;
136  virtual bool getCurrent(Value& rValue) override;
137  virtual bool getFirst(Value& rValue) override;
138  virtual bool getNext(Value& rValue) override;
139 
140  private:
141  void incBlock();
142  void incPos();
143 
145  PositionType maCurPos;
150  sal_uInt32 nNumFormat; // for CalcAsShown
151  sal_uInt32 nNumFmtIndex;
158  };
159 
160  class DataAccessMatrix final : public DataAccess
161  {
162  public:
164  virtual ~DataAccessMatrix() override;
165  virtual bool getCurrent(Value& rValue) override;
166  virtual bool getFirst(Value& rValue) override;
167  virtual bool getNext(Value& rValue) override;
168 
169  private:
170  bool isValidQuery(SCROW mnRow, const ScMatrix& rMat) const;
171 
175  };
176 
177  ::std::unique_ptr<ScDBQueryParamBase> mpParam;
178  ::std::unique_ptr<DataAccess> mpData;
179 
180 public:
181  ScDBQueryDataIterator(ScDocument* pDocument, const ScInterpreterContext& rContext, std::unique_ptr<ScDBQueryParamBase> pParam);
183  bool GetFirst(Value& rValue);
185  bool GetNext(Value& rValue);
186 };
187 
189 {
190 private:
194  bool mbNullCol;
195  size_t mnIndex;
196  std::vector<sc::FormulaGroupEntry> maEntries;
197 
198 public:
200 
203 };
204 
209 {
210  typedef std::pair<sc::CellStoreType::const_iterator, size_t> PositionType;
211 
216 
217  PositionType maCurColPos;
219 
221 
222  void incBlock();
223  void incPos();
224  void setPos(size_t nPos);
225 
226  const ScColumn* getColumn() const;
227 
228  void init();
229  bool getCurrent();
230 
231 public:
232  ScCellIterator( ScDocument* pDoc, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE );
233 
234  const ScAddress& GetPos() const { return maCurPos; }
235 
236  CellType getType() const { return maCurCell.meType;}
237  OUString getString() const;
238  const EditTextObject* getEditText() const { return maCurCell.mpEditText;}
239  ScFormulaCell* getFormulaCell() { return maCurCell.mpFormula;}
240  const ScFormulaCell* getFormulaCell() const { return maCurCell.mpFormula;}
241  ScCellValue getCellValue() const;
242  const ScRefCellValue& getRefCellValue() const { return maCurCell;}
243 
244  bool hasString() const;
245  bool isEmpty() const;
246  bool equalsWithoutFormat( const ScAddress& rPos ) const;
247 
248  bool first();
249  bool next();
250 };
251 
252 class ScQueryCellIterator // walk through all non-empty cells in an area
253 {
255  {
260  };
261 
263  {
268  };
269 
270  typedef sc::CellStoreType::const_position_type PositionType;
271  PositionType maCurPos;
272 
283 
285  void InitPos();
286  void IncPos();
287  void IncBlock();
288  bool GetThis();
289 
290  /* Only works if no regular expression is involved, only
291  searches for rows in one column, and only the first
292  query entry is considered with simple conditions
293  SC_LESS_EQUAL (sorted ascending) or SC_GREATER_EQUAL
294  (sorted descending). Check these things before
295  invocation! Delivers a starting point, continue with
296  GetThis() and GetNext() afterwards. Introduced for
297  FindEqualOrSortedLastInRange()
298  */
299  bool BinarySearch();
300 
301 public:
302  ScQueryCellIterator(ScDocument* pDocument, const ScInterpreterContext& rContext, SCTAB nTable,
303  const ScQueryParam& aParam, bool bMod);
304  // when !bMod, the QueryParam has to be filled
305  // (bIsString)
306  bool GetFirst();
307  bool GetNext();
308  SCCOL GetCol() const { return nCol; }
309  SCROW GetRow() const { return nRow; }
310 
311  // increments all Entry.nField, if column
312  // changes, for ScInterpreter ScHLookup()
314  { bAdvanceQuery = bVal; }
316 
327  void SetStopOnMismatch( bool bVal )
328  {
329  nStopOnMismatch = sal::static_int_cast<sal_uInt8>(bVal ? nStopOnMismatchEnabled :
331  }
332  bool StoppedOnMismatch() const
333  { return nStopOnMismatch == nStopOnMismatchExecuted; }
334 
340  void SetTestEqualCondition( bool bVal )
341  {
342  nTestEqualCondition = sal::static_int_cast<sal_uInt8>(bVal ?
345  }
347  { return nTestEqualCondition == nTestEqualConditionFulfilled; }
348 
367  bool FindEqualOrSortedLastInRange( SCCOL& nFoundCol, SCROW& nFoundRow );
368 };
369 
370 // Used by ScInterpreter::ScCountIf.
371 // Walk through all non-empty cells in an area.
373 {
374  typedef sc::CellStoreType::const_position_type PositionType;
375  PositionType maCurPos;
382 
384  void InitPos();
385  void IncPos();
386  void IncBlock();
388 
389 public:
390  ScCountIfCellIterator(ScDocument* pDocument, const ScInterpreterContext& rContext, SCTAB nTable,
391  const ScQueryParam& aParam);
392  int GetCount();
393 };
394 
395 class ScDocAttrIterator // all attribute areas
396 {
397 private:
404  std::unique_ptr<ScAttrIterator>
406 
407 public:
408  ScDocAttrIterator(ScDocument* pDocument, SCTAB nTable,
409  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
411 
412  const ScPatternAttr* GetNext( SCCOL& rCol, SCROW& rRow1, SCROW& rRow2 );
413 };
414 
415 class ScAttrRectIterator // all attribute areas, including areas stretching
416  // across more than one column
417 {
418 private:
426  std::unique_ptr<ScAttrIterator>
428 
429 public:
430  ScAttrRectIterator(ScDocument* pDocument, SCTAB nTable,
431  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
433 
434  void DataChanged();
435  const ScPatternAttr* GetNext( SCCOL& rCol1, SCCOL& rCol2, SCROW& rRow1, SCROW& rRow2 );
436 };
437 
438 class ScHorizontalCellIterator // walk through all non empty cells in an area
439 { // row by row
440  struct ColParam
441  {
442  sc::CellStoreType::const_iterator maPos;
443  sc::CellStoreType::const_iterator maEnd;
445  };
446 
447  std::vector<ColParam>::iterator maColPos;
448  std::vector<ColParam> maColPositions;
449 
459  bool mbMore;
460 
461 public:
462  ScHorizontalCellIterator(ScDocument* pDocument, SCTAB nTable,
463  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
465 
466  ScRefCellValue* GetNext( SCCOL& rCol, SCROW& rRow );
467  bool GetPos( SCCOL& rCol, SCROW& rRow );
469  void SetTab( SCTAB nTab );
470 
471 private:
472  void Advance();
473  void SkipInvalid();
474  bool SkipInvalidInRow();
476 };
477 
480 {
481 private:
484  std::unique_ptr<ScHorizontalCellIterator>
486  sal_uInt32 nNumFormat; // for CalcAsShown
493 
494 public:
495 
497  const ScRange& rRange );
500  bool GetNext( double& rValue, FormulaError& rErr );
501 };
502 
503 // returns all areas with non-default formatting (horizontal)
504 
506 {
507 private:
514 
515  std::unique_ptr<SCROW[]> pNextEnd;
516  std::unique_ptr<SCCOL[]> pHorizEnd;
517  std::unique_ptr<SCSIZE[]> pIndices;
518  std::unique_ptr<const ScPatternAttr*[]>
522  bool bRowEmpty;
524 
525  void InitForNextRow(bool bInitialization);
526  bool InitForNextAttr();
527 
528 public:
529  ScHorizontalAttrIterator( ScDocument* pDocument, SCTAB nTable,
530  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
532 
533  const ScPatternAttr* GetNext( SCCOL& rCol1, SCCOL& rCol2, SCROW& rRow );
534 };
535 
536 // returns non-empty cells and areas with formatting (horizontal)
537 
539 {
540 private:
543 
546 
554 
555  SCCOL nFoundStartCol; // results after GetNext
559 
561 
562 public:
563  ScUsedAreaIterator( ScDocument* pDocument, SCTAB nTable,
564  SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
566 
567  bool GetNext();
568 
569  SCCOL GetStartCol() const { return nFoundStartCol; }
570  SCCOL GetEndCol() const { return nFoundEndCol; }
571  SCROW GetRow() const { return nFoundRow; }
572  const ScPatternAttr* GetPattern() const { return pFoundPattern; }
573  const ScRefCellValue& GetCell() const { return maFoundCell;}
574 };
575 
577 {
578 public:
579  static constexpr SCROW NOT_FOUND = -1;
580 
581  explicit ScRowBreakIterator(::std::set<SCROW>& rBreaks);
582  SCROW first();
583  SCROW next();
584 
585 private:
586  ::std::set<SCROW>& mrBreaks;
587  ::std::set<SCROW>::const_iterator maItr;
588  ::std::set<SCROW>::const_iterator maEnd;
589 };
590 
592 {
593 public:
594  struct TabRanges
595  {
598 
599  TabRanges(SCTAB nTab, SCROW nMaxRow);
600  };
601 
606  explicit ScDocRowHeightUpdater(
607  ScDocument& rDoc, OutputDevice* pOutDev, double fPPTX, double fPPTY,
608  const ::std::vector<TabRanges>* pTabRangesArray);
609 
610  void update();
611 
612 private:
613  void updateAll();
614 
615 private:
618  double mfPPTX;
619  double mfPPTY;
620  const ::std::vector<TabRanges>* mpTabRangesArray;
621 };
622 
623 #endif
624 
625 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:113
bool bIgnoreMismatchOnLeadingStrings
Definition: dociter.hxx:282
sal_uInt8 nStopOnMismatch
Definition: dociter.hxx:279
ScAddress maCurPos
Definition: dociter.hxx:215
const sc::CellStoreType * mpCells
Definition: dociter.hxx:144
sal_uInt8 nTestEqualCondition
Definition: dociter.hxx:280
OUString getString() const
Definition: dociter.cxx:983
bool isValidQuery(SCROW mnRow, const ScMatrix &rMat) const
Definition: dociter.cxx:616
ScRefCellValue * GetNext(SCCOL &rCol, SCROW &rRow)
Definition: dociter.cxx:2127
ScHorizontalValueIterator(ScDocument *pDocument, const ScRange &rRange)
Definition: dociter.cxx:2290
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:2678
std::unique_ptr< const ScPatternAttr *[]> ppPatterns
Definition: dociter.hxx:519
DataAccessMatrix(ScDBQueryParamMatrix *pParam)
Definition: dociter.cxx:528
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:374
virtual bool getFirst(Value &rValue) override
Definition: dociter.cxx:485
const ScInterpreterContext & mrContext
Definition: dociter.hxx:378
bool GetPos(SCCOL &rCol, SCROW &rRow)
Definition: dociter.cxx:2150
bool equalsWithoutFormat(const ScAddress &rPos) const
Definition: dociter.cxx:1024
ScRefCellValue maCurCell
Definition: dociter.hxx:458
::std::set< SCROW >::const_iterator maEnd
Definition: dociter.hxx:588
bool bTextAsZero
Definition: dociter.hxx:70
bool getCurrent()
Definition: dociter.cxx:907
std::unique_ptr< ScAttrIterator > pColIter
Definition: dociter.hxx:405
const ScAttrArray * pAttrArray
Definition: dociter.hxx:483
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:196
ScQueryCellIterator(ScDocument *pDocument, const ScInterpreterContext &rContext, SCTAB nTable, const ScQueryParam &aParam, bool bMod)
Definition: dociter.cxx:1048
bool hasString() const
Definition: dociter.cxx:1014
ScAddress maStartPos
Definition: dociter.hxx:213
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:104
static bool IsQueryValid(ScDocument &rDoc, const ScQueryParam &rParam, SCTAB nTab, SCROW nRow, const ScRefCellValue *pCell)
Definition: dociter.cxx:340
SubtotalFlags mnSubTotalFlags
Definition: dociter.hxx:218
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
const ScInterpreterContext & mrContext
Definition: dociter.hxx:148
std::pair< sc::CellStoreType::const_iterator, size_t > PositionType
Definition: dociter.hxx:132
ScFormulaCell * getFormulaCell()
Definition: dociter.hxx:239
static const sc::CellStoreType * GetColumnCellStore(ScDocument &rDoc, SCTAB nTab, SCCOL nCol)
Definition: dociter.cxx:323
ScAddress maEndPos
Definition: dociter.hxx:214
std::unique_ptr< SCSIZE[]> pIndices
Definition: dociter.hxx:517
Row-wise value iterator.
Definition: dociter.hxx:479
CellType getType() const
Definition: dociter.hxx:236
::std::set< SCROW >::const_iterator maItr
Definition: dociter.hxx:587
const ScPatternAttr * pPattern
Definition: dociter.hxx:553
css::uno::Any const & rValue
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:36
ScQueryParam maParam
Definition: dociter.hxx:376
SubtotalFlags
Definition: global.hxx:250
const ScColumn * getColumn() const
Definition: dociter.cxx:870
const ScRefCellValue & GetCell() const
Definition: dociter.hxx:573
const sc::CellStoreType * mpCells
Definition: dociter.hxx:72
ScHorizontalAttrIterator(ScDocument *pDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2379
bool IsEqualConditionFulfilled() const
Definition: dociter.hxx:346
void SetTab(SCTAB nTab)
Set a(nother) sheet and (re)init.
Definition: dociter.cxx:2090
const EditTextObject * mpEditText
Definition: cellvalue.hxx:110
void SetStopOnMismatch(bool bVal)
If set, iterator stops on first non-matching cell content.
Definition: dociter.hxx:327
ScDocument * pDoc
Definition: dociter.hxx:377
PositionType maCurColPos
Definition: dociter.hxx:217
SCROW GetRow() const
Definition: dociter.cxx:129
const ScRefCellValue & getRefCellValue() const
Definition: dociter.hxx:242
SCCOL GetCol() const
Definition: dociter.hxx:308
void InitPos()
Initialize position for new column.
Definition: dociter.cxx:1077
Walk through all cells in an area.
Definition: dociter.hxx:208
PositionType maCurPos
Definition: dociter.hxx:271
ScFormulaCell * mpFormula
Definition: cellvalue.hxx:111
const ::std::vector< TabRanges > * mpTabRangesArray
Definition: dociter.hxx:620
ScHorizontalCellIterator(ScDocument *pDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2063
void SetInterpreterContext(ScInterpreterContext *context)
Definition: dociter.hxx:99
ScDocAttrIterator(ScDocument *pDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2631
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:340
bool GetNext(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:2328
ScDBQueryParamMatrix * mpParam
Definition: dociter.hxx:172
void SetAdvanceQueryParamEntryField(bool bVal)
Definition: dociter.hxx:313
std::vector< ColParam >::iterator maColPos
Definition: dociter.hxx:447
SvNumFormatType nNumFmtType
Definition: dociter.hxx:67
sc::CellStoreType::const_iterator maEnd
Definition: dociter.hxx:443
ScQueryParam maParam
Definition: dociter.hxx:273
void AdvanceQueryParamEntryField()
Definition: dociter.cxx:1576
ScDBQueryDataIterator(ScDocument *pDocument, const ScInterpreterContext &rContext, std::unique_ptr< ScDBQueryParamBase > pParam)
Definition: dociter.cxx:753
std::unique_ptr< SCCOL[]> pHorizEnd
Definition: dociter.hxx:516
virtual bool getNext(Value &rValue)=0
ScRefCellValue maCurCell
Definition: dociter.hxx:220
PositionType maCurPos
Definition: dociter.hxx:73
ScAddress maEndPos
Definition: dociter.hxx:62
const ScFormulaCell * getFormulaCell() const
Definition: dociter.hxx:240
sal_Int16 SCCOL
Definition: types.hxx:22
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:569
const ScPatternAttr * GetPattern() const
Definition: dociter.hxx:572
bool GetThis(double &rValue, FormulaError &rErr)
See if the cell at the current position is a non-empty cell.
Definition: dociter.cxx:152
std::vector< ColParam > maColPositions
Definition: dociter.hxx:448
SCROW nAttrEndRow
Definition: dociter.hxx:65
ScDocument * mpDoc
Definition: dociter.hxx:212
VclPtr< OutputDevice > mpOutDev
Definition: dociter.hxx:617
bool StoppedOnMismatch() const
Definition: dociter.hxx:332
SvNumFormatType
SCROW FindNextNonEmptyRow()
Find the next row that has some real content in one of its columns.
Definition: dociter.cxx:2234
sal_uInt32 nNumFmtIndex
Definition: dociter.hxx:60
bool GetFirst(Value &rValue)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:772
TabRanges(SCTAB nTab, SCROW nMaxRow)
Definition: dociter.cxx:2673
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:270
SCROW GetRow() const
Definition: dociter.hxx:571
std::unique_ptr< ScAttrIterator > pColIter
Definition: dociter.hxx:427
ScCountIfCellIterator(ScDocument *pDocument, const ScInterpreterContext &rContext, SCTAB nTable, const ScQueryParam &aParam)
Definition: dociter.cxx:1456
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:586
FormulaError
SCROW GetRow() const
Definition: dociter.hxx:309
bool isEmpty() const
Definition: dociter.cxx:1019
sc::CellStoreType::const_position_type PositionType
Definition: dociter.hxx:54
sal_uInt32 nNumFormat
Definition: dociter.hxx:59
std::unique_ptr< ScHorizontalCellIterator > pCellIter
Definition: dociter.hxx:485
const ScAddress & GetPos() const
Definition: dociter.hxx:234
ScDocument * pDoc
Definition: dociter.hxx:419
const EditTextObject * getEditText() const
Definition: dociter.hxx:238
CellType meType
Definition: cellvalue.hxx:106
sal_Int32 SCROW
Definition: types.hxx:18
static constexpr SCROW NOT_FOUND
Definition: dociter.hxx:579
::std::unique_ptr< ScDBQueryParamBase > mpParam
Definition: dociter.hxx:177
ScFlatBoolRowSegments maRanges
Definition: dociter.hxx:597
PositionType maCurPos
Definition: dociter.hxx:375
sc::CellStoreType::const_iterator maPos
Definition: dociter.hxx:442
unsigned char sal_uInt8
static const ScAttrArray * GetAttrArrayByCol(ScDocument &rDoc, SCTAB nTab, SCCOL nCol)
Definition: dociter.cxx:333
ScAttrRectIterator(ScDocument *pDocument, SCTAB nTable, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: dociter.cxx:2762
ScAddress maStartPos
Definition: dociter.hxx:61
bool GetFirst(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:285
void InitForNextRow(bool bInitialization)
Definition: dociter.cxx:2409
CellType
Definition: global.hxx:281
sc::FormulaGroupEntry * first()
Definition: dociter.cxx:799
ScValueIterator(ScDocument *pDocument, const ScRange &rRange, SubtotalFlags nSubTotalFlags=SubtotalFlags::NONE, bool bTextAsZero=false)
Definition: dociter.cxx:100
void InitPos()
Initialize position for new column.
Definition: dociter.cxx:1467
virtual bool getNext(Value &rValue) override
Definition: dociter.cxx:575
ScDocument * pDoc
Definition: dociter.hxx:274
DataAccessInternal(ScDBQueryParamInternal *pParam, ScDocument *pDoc, const ScInterpreterContext &rContext)
Definition: dociter.cxx:347
const ScInterpreterContext & mrContext
Definition: dociter.hxx:275
bool bCalcAsShown
Definition: dociter.hxx:69
const ScPatternAttr * GetNext(SCCOL &rCol1, SCCOL &rCol2, SCROW &rRow1, SCROW &rRow2)
Definition: dociter.cxx:2800
ScFormulaGroupIterator(ScDocument *pDoc)
Definition: dociter.cxx:782
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:401
const ScPatternAttr * GetNext(SCCOL &rCol, SCROW &rRow1, SCROW &rRow2)
Definition: dociter.cxx:2653
ScHorizontalAttrIterator aAttrIter
Definition: dociter.hxx:542
void GetCurNumFmtInfo(const ScInterpreterContext &rContext, SvNumFormatType &nType, sal_uInt32 &nIndex)
Definition: dociter.cxx:270
bool GetNext(double &rValue, FormulaError &rErr)
Does NOT reset rValue if no value found!
Definition: dociter.cxx:309
ScCellValue getCellValue() const
Definition: dociter.cxx:988
virtual bool getFirst(Value &rValue)=0
ScRefCellValue * pCell
Definition: dociter.hxx:549
ScDocument * pDoc
Definition: dociter.hxx:56
ScDocument * mpDoc
Definition: dociter.hxx:191
virtual bool getCurrent(Value &rValue) override
Definition: dociter.cxx:542
const ScPatternAttr * GetNext(SCCOL &rCol1, SCCOL &rCol2, SCROW &rRow)
Definition: dociter.cxx:2497
ScCellIterator(ScDocument *pDoc, const ScRange &rRange, SubtotalFlags nSubTotalFlags=SubtotalFlags::NONE)
Definition: dociter.cxx:834
virtual bool getCurrent(Value &rValue) override
Definition: dociter.cxx:382
void incPos()
Definition: dociter.cxx:851
sal_Int32 mnRow
SCCOL GetStartCol() const
Definition: dociter.hxx:569
SubtotalFlags mnSubTotalFlags
Definition: dociter.hxx:66
const ScPatternAttr * pFoundPattern
Definition: dociter.hxx:558
ScInterpreterContext * pContext
Definition: dociter.hxx:57
ScRowBreakIterator(::std::set< SCROW > &rBreaks)
Definition: dociter.cxx:2829
std::pair< sc::CellStoreType::const_iterator, size_t > PositionType
Definition: dociter.hxx:210
ScDocument * pDoc
Definition: dociter.hxx:398
ScDocument & mrDoc
Definition: dociter.hxx:616
SCCOL GetEndCol() const
Definition: dociter.hxx:570
ScHorizontalCellIterator aCellIter
Definition: dociter.hxx:541
void incBlock()
Definition: dociter.cxx:843
::std::unique_ptr< DataAccess > mpData
Definition: dociter.hxx:178
virtual bool getNext(Value &rValue) override
Definition: dociter.cxx:498
void IncBlock()
Definition: dociter.cxx:136
#define SC_DLLPUBLIC
Definition: scdllapi.h:28
std::unique_ptr< SCROW[]> pNextEnd
Definition: dociter.hxx:515
ScDBQueryParamInternal * mpParam
Definition: dociter.hxx:146
const ScAttrArray * pAttrArray
Definition: dociter.hxx:58
sal_Int16 SCTAB
Definition: types.hxx:23
ScRefCellValue maFoundCell
Definition: dociter.hxx:560