LibreOffice Module sc (master)  1
dptabres.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 "global.hxx"
23 #include "dpfilteredcache.hxx"
24 #include "calcmacros.hxx"
25 #include "dpitemdata.hxx"
26 #include "subtotal.hxx"
27 
28 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
29 #include <com/sun/star/sheet/DataPilotFieldReference.hpp>
30 
31 #include <map>
32 #include <unordered_map>
33 #include <unordered_set>
34 #include <memory>
35 #include <vector>
36 
37 namespace com::sun::star::sheet { struct DataResult; }
38 namespace com::sun::star::sheet { struct MemberResult; }
39 namespace com::sun::star::uno { template <typename > class Sequence; }
40 
41 class ScDPSource;
42 class ScDPDimension;
43 class ScDPLevel;
44 class ScDPMember;
45 class ScDPResultMember;
47 
48 struct ScDPValue;
50 
56 {
57 public:
58  struct Member
59  {
62 
63  Member(tools::Long nSrcIndex, SCROW nNameIndex);
64  };
65 
66  void AddMember(tools::Long nSourceIndex, SCROW nMember);
67  void RemoveMember();
68 
69  const std::vector<Member>& GetMembers() const { return maMembers; }
70 
71 private:
72  std::vector<Member> maMembers;
73 };
74 
75 typedef ::std::vector<sal_Int32> ScMemberSortOrder;
76 
81 {
86 
88  eColForce( SUBTOTAL_FUNC_NONE ),
89  eRowForce( SUBTOTAL_FUNC_NONE ),
90  nColSubTotalFunc( -1 ),
91  nRowSubTotalFunc( -1 )
92  {}
93 };
94 
105 {
106 public:
107  typedef std::vector<sal_Int32> IndexArray;
108 
110 
113 
114  const IndexArray& GetColVisible() const { return maColVisible;}
115  const IndexArray& GetColSorted() const { return maColSorted;}
116  const IndexArray& GetRowVisible() const { return maRowVisible;}
117  const IndexArray& GetRowSorted() const { return maRowSorted;}
118 
119  void AddColIndex( sal_Int32 nVisible, tools::Long nSorted );
120  void AddRowIndex( sal_Int32 nVisible, tools::Long nSorted );
121  void RemoveColIndex();
122  void RemoveRowIndex();
123 
124 private:
127 
128  mutable IndexArray maColVisible;
129  mutable IndexArray maColSorted;
130  mutable IndexArray maRowVisible;
131  mutable IndexArray maRowSorted;
132 };
133 
135 {
136  tools::Long nBasePos; // simple count, without sort order applied
138 
139  ScDPRelativePos( tools::Long nBase, tools::Long nDir );
140 };
141 
142 // aggregated data
144 
145 // Possible values for the nCount member:
146 // (greater than 0 counts the collected values)
147 const sal_Int64 SC_DPAGG_EMPTY = 0; // empty during data collection
148 const sal_Int64 SC_DPAGG_DATA_ERROR = -1; // error during data collection
149 const sal_Int64 SC_DPAGG_RESULT_EMPTY = -2; // empty result calculated
150 const sal_Int64 SC_DPAGG_RESULT_VALID = -3; // valid result calculated
151 const sal_Int64 SC_DPAGG_RESULT_ERROR = -4; // error in calculated result
152 
154 {
155 private:
157  double fVal;
158  double fAux;
159  sal_Int64 nCount;
160  std::unique_ptr<ScDPAggData> pChild;
161  std::vector<double> mSortedValues;
162 
163 public:
164  ScDPAggData() : fVal(0.0), fAux(0.0), nCount(SC_DPAGG_EMPTY) {}
165 
166  void Update( const ScDPValue& rNext, ScSubTotalFunc eFunc, const ScDPSubTotalState& rSubState );
167  void Calculate( ScSubTotalFunc eFunc, const ScDPSubTotalState& rSubState );
168  bool IsCalculated() const;
169 
170  double GetResult() const;
171  bool HasError() const;
172  bool HasData() const;
173 
174  void SetResult( double fNew );
175  void SetEmpty( bool bSet );
176  void SetError();
177 
178  double GetAuxiliary() const;
179  void SetAuxiliary( double fNew );
180 
181  void Reset(); // also deletes children
182 
183  const ScDPAggData* GetExistingChild() const { return pChild.get(); }
185 
186 #if DUMP_PIVOT_TABLE
187  void Dump(int nIndent) const;
188 #endif
189 };
190 
191 // Row and grand total state, passed down (column total is at result member)
192 
194 {
198 
199 public:
200  ScDPRowTotals();
201  ~ScDPRowTotals();
202 
203  ScDPAggData* GetRowTotal( tools::Long nMeasure );
205 
206  bool IsInColRoot() const { return bIsInColRoot; }
207  void SetInColRoot(bool bSet) { bIsInColRoot = bSet; }
208 };
209 
210 // results for a hierarchy dimension
211 
212 class ScDPResultDimension;
213 class ScDPDataDimension;
214 class ScDPDataMember;
215 
216 #define SC_DPMEASURE_ALL -1
217 #define SC_DPMEASURE_ANY -2
218 
220 {
221  const SCROW mnOrder;
225 
227  ScDPParentDimData(SCROW nIndex, const ScDPDimension* pDim, const ScDPLevel* pLev, const ScDPMember* pMember);
228 };
229 
230 class ResultMembers final
231 {
232  std::unordered_map<SCROW, ScDPParentDimData> maMemberHash;
234 public:
235  const ScDPParentDimData* FindMember( SCROW nIndex ) const;
236  void InsertMember( ScDPParentDimData const & rNew );
238  void SetHasHideDetailsMembers( bool b ) { mbHasHideDetailsMember = b; }
239  ResultMembers();
240  ~ResultMembers();
241 };
242 
244 {
245 private:
246  const ::std::vector<ScDPDimension*>& mppDim;
247  const ::std::vector<ScDPLevel*>& mppLev;
248 
249  bool mbRow:1;
250  bool mbInitChild:1;
252 public:
253  LateInitParams( const ::std::vector<ScDPDimension*>& ppDim, const ::std::vector<ScDPLevel*>& ppLev,
254  bool bRow);
255 
256  void SetInitChild( bool b ) { mbInitChild = b; }
257  void SetInitAllChildren( bool b ) { mbAllChildren = b; }
258 
259  ScDPDimension* GetDim( size_t nPos ) const { return mppDim[nPos];}
260  ScDPLevel* GetLevel( size_t nPos ) const { return mppLev[nPos];}
261 
262  bool GetInitChild() const {return mbInitChild; }
263  bool GetInitAllChild() const { return mbAllChildren; }
264  bool IsRow() const { return mbRow; }
265  bool IsEnd( size_t nPos ) const ;
266 };
267 
272 {
275 
276  std::vector<ScSubTotalFunc> maMeasureFuncs;
277  std::vector<css::sheet::DataPilotFieldReference> maMeasureRefs;
278  std::vector<css::sheet::DataPilotFieldOrientation> maMeasureRefOrients;
279  std::vector<OUString> maMeasureNames;
280 
281  bool bLateInit:1;
282  bool bDataAtCol:1;
283  bool bDataAtRow:1;
284 
286  mutable std::vector<std::unique_ptr<ResultMembers>> maDimMembers;
287 public:
288  ScDPResultData( ScDPSource& rSrc );
289  ~ScDPResultData();
290 
291  void SetMeasureData(
292  std::vector<ScSubTotalFunc>& rFunctions,
293  std::vector<css::sheet::DataPilotFieldReference>& rRefs,
294  std::vector<css::sheet::DataPilotFieldOrientation>& rRefOrient,
295  std::vector<OUString>& rNames );
296 
297  void SetDataLayoutOrientation( css::sheet::DataPilotFieldOrientation nOrient );
298  void SetLateInit( bool bSet );
299 
300  tools::Long GetMeasureCount() const { return maMeasureFuncs.size(); }
302  OUString GetMeasureString(tools::Long nMeasure, bool bForce, ScSubTotalFunc eForceFunc, bool& rbTotalResult) const;
303  OUString GetMeasureDimensionName(tools::Long nMeasure) const;
304  const css::sheet::DataPilotFieldReference& GetMeasureRefVal(tools::Long nMeasure) const;
305  css::sheet::DataPilotFieldOrientation GetMeasureRefOrient(tools::Long nMeasure) const;
306 
307  bool IsLateInit() const { return bLateInit; }
308 
311 
312  tools::Long GetCountForMeasure( tools::Long nMeas ) const { return (nMeas == SC_DPMEASURE_ALL) ? maMeasureFuncs.size() : 1; }
313 
314  bool IsBaseForGroup( tools::Long nDim ) const; // any group
315  tools::Long GetGroupBase( tools::Long nGroupDim ) const;
316  bool IsNumOrDateGroup( tools::Long nDim ) const;
317  bool IsInGroup( SCROW nGroupDataId, tools::Long nGroupIndex,
318  const ScDPItemData& rBaseData, tools::Long nBaseIndex ) const;
319  bool HasCommonElement( SCROW nFirstDataId, tools::Long nFirstIndex,
320  const ScDPItemData& rSecondData, tools::Long nSecondIndex ) const;
321 
322  ResultMembers& GetDimResultMembers(tools::Long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const;
323 
324  const ScDPSource& GetSource() const { return mrSource;}
325 };
326 
328 {
329 private:
332  std::unique_ptr<ScDPResultDimension> pChildDimension;
333  std::unique_ptr<ScDPDataMember> pDataRoot;
334  bool bHasElements:1;
337  bool bInitialized:1;
338  bool bAutoHidden:1;
339  ScDPAggData aColTotal; // to store column totals
340 
341  sal_uInt16 nMemberStep; // step to show details
342 public:
344  const ScDPResultData* pData, const ScDPParentDimData& rParentDimData );
345  ScDPResultMember( const ScDPResultData* pData, bool bForceSub );
347 
348  void InitFrom( const ::std::vector<ScDPDimension*>& ppDim,
349  const ::std::vector<ScDPLevel*>& ppLev,
350  size_t nPos,
351  ScDPInitState& rInitState,
352  bool bInitChild = true );
353  void LateInitFrom(
354  LateInitParams& rParams,
355  const ::std::vector< SCROW >& pItemData,
356  size_t nPos,
357  ScDPInitState& rInitState);
358  void CheckShowEmpty( bool bShow = false );
359  OUString GetName() const;
360  OUString GetDisplayName( bool bLocaleIndependent ) const;
361 
362  ScDPItemData FillItemData() const;
363  bool IsValid() const;
364  bool IsVisible() const;
365  tools::Long GetSize(tools::Long nMeasure) const;
366  // bHasHiddenDetails is set only if the "show details" flag is off,
367  // and there was a child dimension to skip
368  bool HasHiddenDetails() const { return bHasHiddenDetails; }
369  bool IsSubTotalInTitle(tools::Long nMeasure) const;
370 
371  tools::Long GetSubTotalCount( tools::Long* pUserSubStart = nullptr ) const;
372 
373  bool IsNamedItem( SCROW nIndex ) const;
374  bool IsValidEntry( const ::std::vector< SCROW >& aMembers ) const;
375 
376  void SetHasElements() { bHasElements = true; }
377  void SetAutoHidden() { bAutoHidden = true; }
378 
379  void ProcessData( const ::std::vector<SCROW>& aChildMembers,
380  const ScDPResultDimension* pDataDim,
381  const ::std::vector<SCROW>& aDataMembers,
382  const ::std::vector<ScDPValue>& aValues );
383  void FillMemberResults(
384  css::uno::Sequence< css::sheet::MemberResult>* pSequences,
385  tools::Long& rPos, tools::Long nMeasure, bool bRoot, const OUString* pMemberName, const OUString* pMemberCaption );
386 
387  void FillDataResults(
388  const ScDPResultMember* pRefMember,
389  ScDPResultFilterContext& rFilterCxt,
390  css::uno::Sequence< css::uno::Sequence< css::sheet::DataResult> >& rSequence,
391  tools::Long nMeasure) const;
392 
393  void UpdateDataResults( const ScDPResultMember* pRefMember, tools::Long nMeasure ) const;
394  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure,
395  ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const;
396 
397  void SortMembers( ScDPResultMember* pRefMember );
398  void DoAutoShow( ScDPResultMember* pRefMember );
399 
400  void ResetResults();
401 
402 #if DUMP_PIVOT_TABLE
403  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
404 
405  void Dump(int nIndent) const;
406 #endif
407 
409  const ScDPResultDimension* GetChildDimension() const { return pChildDimension.get(); }
410  ScDPResultDimension* GetChildDimension() { return pChildDimension.get(); }
411 
412  ScDPDataMember* GetDataRoot() const { return pDataRoot.get(); }
413 
414  const ScDPDimension* GetParentDim() const { return aParentDimData.mpParentDim; }
415  const ScDPLevel* GetParentLevel() const { return aParentDimData.mpParentLevel; }
416  const ScDPMember* GetDPMember()const { return aParentDimData.mpMemberDesc; }
417  SCROW GetOrder() const { return aParentDimData.mnOrder; }
418  bool IsRoot() const { return GetParentLevel() == nullptr; }
419  SCROW GetDataId( ) const ;
420  ScDPAggData* GetColTotal( tools::Long nMeasure ) const;
421 
422  void FillVisibilityData(ScDPResultVisibilityData& rData) const;
423 };
424 
426 {
427 private:
430  std::unique_ptr<ScDPDataDimension>
433 
434  void UpdateValues( const ::std::vector<ScDPValue>& aValues, const ScDPSubTotalState& rSubState );
435 
436 public:
437  ScDPDataMember( const ScDPResultData* pData, const ScDPResultMember* pRes );
438  ~ScDPDataMember();
439 
440  void InitFrom( const ScDPResultDimension* pDim );
441 
442  OUString GetName() const;
443  bool IsVisible() const;
444  bool HasData( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
445 
446  bool IsNamedItem( SCROW nRow ) const;
447  bool HasHiddenDetails() const;
448 
449  void ProcessData( const ::std::vector< SCROW >& aChildMembers, const ::std::vector<ScDPValue>& aValues,
450  const ScDPSubTotalState& rSubState );
451  bool HasError( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
452  double GetAggregate( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
453  const ScDPAggData* GetConstAggData( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
454  ScDPAggData* GetAggData( tools::Long nMeasure, const ScDPSubTotalState& rSubState );
455 
456  void FillDataRow(
457  const ScDPResultMember* pRefMember,
458  ScDPResultFilterContext& rFilterCxt,
459  css::uno::Sequence<css::sheet::DataResult>& rSequence,
460  tools::Long nMeasure, bool bIsSubTotalRow,
461  const ScDPSubTotalState& rSubState) const;
462 
463  void UpdateDataRow( const ScDPResultMember* pRefMember, tools::Long nMeasure, bool bIsSubTotalRow,
464  const ScDPSubTotalState& rSubState );
465  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure, bool bIsSubTotalRow,
466  const ScDPSubTotalState& rSubState, ScDPRunningTotalState& rRunning,
467  ScDPRowTotals& rTotals, const ScDPResultMember& rRowParent );
468 
469  void SortMembers( ScDPResultMember* pRefMember );
470  void DoAutoShow( ScDPResultMember* pRefMember );
471 
472  void ResetResults();
473 
474 #if DUMP_PIVOT_TABLE
475  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
476  void Dump(int nIndent) const;
477 #endif
478 
480  const ScDPDataDimension* GetChildDimension() const { return pChildDimension.get(); }
482 };
483 
484 // result dimension contains only members
485 
487 {
488 public:
489  typedef std::vector<std::unique_ptr<ScDPResultMember>> MemberArray;
490  typedef std::map<SCROW, ScDPResultMember*> MemberHash;
491 private:
493  MemberArray maMemberArray;
494  MemberHash maMemberHash;
495  OUString aDimensionName;
497  ScMemberSortOrder aMemberOrder; // used when sorted by measure
498  bool bIsDataLayout:1;
499  bool bSortByData:1;
501  bool bAutoShow:1;
503  bool bInitialized:1;
506 
507  ScDPResultMember* FindMember( SCROW iData ) const;
509  ScDPResultMember* InsertMember( const ScDPParentDimData* pMemberData );
510  void InitWithMembers( LateInitParams& rParams,
511  const ::std::vector< SCROW >& pItemData,
512  size_t nPos,
513  ScDPInitState& rInitState );
514 public:
515  ScDPResultDimension( const ScDPResultData* pData );
517 
518  // allocates new members
519  void InitFrom(
520  const ::std::vector<ScDPDimension*>& ppDim, const ::std::vector<ScDPLevel*>& ppLev,
521  size_t nPos, ScDPInitState& rInitState, bool bInitChild = true );
522  void LateInitFrom( LateInitParams& rParams,
523  const ::std::vector< SCROW >& pItemData,
524  size_t nPos,
525  ScDPInitState& rInitState );
526  void CheckShowEmpty( bool bShow = false );
527 
528  tools::Long GetSize(tools::Long nMeasure) const;
529 
530  bool IsValidEntry( const ::std::vector<SCROW>& aMembers ) const;
531 
532  // modifies existing members, allocates data dimensions
533  void ProcessData( const ::std::vector<SCROW>& aMembers,
534  const ScDPResultDimension* pDataDim,
535  const ::std::vector<SCROW>& aDataMembers,
536  const ::std::vector<ScDPValue>& aValues ) const;
537  void FillMemberResults( css::uno::Sequence<
538  css::sheet::MemberResult>* pSequences,
539  tools::Long nStart, tools::Long nMeasure );
540 
541  void FillDataResults(
542  const ScDPResultMember* pRefMember,
543  ScDPResultFilterContext& rFilterCxt,
544  css::uno::Sequence<
545  css::uno::Sequence<
546  css::sheet::DataResult> >& rSequence,
547  tools::Long nMeasure) const;
548 
549  void UpdateDataResults( const ScDPResultMember* pRefMember, tools::Long nMeasure ) const;
550  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure,
551  ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const;
552 
553  void SortMembers( ScDPResultMember* pRefMember );
554  tools::Long GetSortedIndex( tools::Long nUnsorted ) const;
555 
556  void DoAutoShow( ScDPResultMember* pRefMember );
557 
558  void ResetResults();
559 
560  // called for the reference dimension
562  const ScDPRelativePos* pMemberPos, const OUString* pName,
563  const sal_Int32* pRowIndexes, const sal_Int32* pColIndexes ) const;
564 
565  // uses row root member from ScDPRunningTotalState
567  const ScDPRelativePos* pMemberPos, const OUString* pName,
568  sal_Int32 nRefDimPos, const ScDPRunningTotalState& rRunning );
569 
570 #if DUMP_PIVOT_TABLE
571  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
572  void Dump(int nIndent) const;
573 #endif
574 
575  // for ScDPDataDimension::InitFrom
576  tools::Long GetMemberCount() const;
577  const ScDPResultMember* GetMember(tools::Long n) const;
579 
580  const ScMemberSortOrder& GetMemberOrder() const { return aMemberOrder; }
582 
583  bool IsDataLayout() const { return bIsDataLayout; }
584  const OUString& GetName() const { return aDimensionName; }
585 
586  bool IsSortByData() const { return bSortByData; }
587  bool IsSortAscending() const { return bSortAscending; }
589 
590  bool IsAutoShow() const { return bAutoShow; }
591  bool IsAutoTopItems() const { return bAutoTopItems; }
593  tools::Long GetAutoCount() const { return nAutoCount; }
594 
596 
597  void FillVisibilityData(ScDPResultVisibilityData& rData) const;
598 };
599 
601 {
602 private:
605  std::vector<std::unique_ptr<ScDPDataMember>> maMembers;
607 
608 public:
609  ScDPDataDimension( const ScDPResultData* pData );
611 
612  void InitFrom( const ScDPResultDimension* pDim ); // recursive
613  void ProcessData( const ::std::vector< SCROW >& aDataMembers, const ::std::vector<ScDPValue>& aValues,
614  const ScDPSubTotalState& rSubState );
615  void FillDataRow(
616  const ScDPResultDimension* pRefDim,
617  ScDPResultFilterContext& rFilterCxt,
618  css::uno::Sequence<css::sheet::DataResult>& rSequence,
619  tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState& rSubState) const;
620 
621  void UpdateDataRow( const ScDPResultDimension* pRefDim, tools::Long nMeasure, bool bIsSubTotalRow,
622  const ScDPSubTotalState& rSubState ) const;
623  void UpdateRunningTotals( const ScDPResultDimension* pRefDim, tools::Long nMeasure, bool bIsSubTotalRow,
624  const ScDPSubTotalState& rSubState, ScDPRunningTotalState& rRunning,
625  ScDPRowTotals& rTotals, const ScDPResultMember& rRowParent ) const;
626 
627  void SortMembers( ScDPResultDimension* pRefDim );
628  tools::Long GetSortedIndex( tools::Long nUnsorted ) const;
629 
630  void DoAutoShow( ScDPResultDimension* pRefDim );
631 
632  void ResetResults();
633 
634 #if DUMP_PIVOT_TABLE
635  void DumpState( const ScDPResultDimension* pRefDim, ScDocument* pDoc, ScAddress& rPos ) const;
636  void Dump(int nIndent) const;
637 #endif
638 
639  tools::Long GetMemberCount() const;
640  const ScDPDataMember* GetMember(tools::Long n) const;
642 };
643 
649 {
650 public:
653 
654  void addVisibleMember(const OUString& rDimName, const ScDPItemData& rMemberItem);
655  void fillFieldFilters(::std::vector<ScDPFilteredCache::Criterion>& rFilters) const;
656 
657 private:
658  struct MemberHash
659  {
660  size_t operator()(const ScDPItemData& r) const;
661  };
662  typedef std::unordered_set<ScDPItemData, MemberHash> VisibleMemberType;
663  typedef std::unordered_map<OUString, VisibleMemberType> DimMemberType;
664  DimMemberType maDimensions;
665 
667 };
668 
669 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetAuxiliary(double fNew)
Definition: dptabres.cxx:653
ScDPRelativePos(tools::Long nBase, tools::Long nDir)
Definition: dptabres.cxx:368
void DoAutoShow(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:1713
std::unique_ptr< ScDPDataMember > pDataRoot
Definition: dptabres.hxx:333
MemberArray maMemberArray
Definition: dptabres.hxx:493
void SetInitAllChildren(bool b)
Definition: dptabres.hxx:257
const sal_Int64 SC_DPAGG_RESULT_EMPTY
Definition: dptabres.hxx:149
bool bHasHiddenDetails
Definition: dptabres.hxx:336
std::unique_ptr< ScDPAggData > pChild
Definition: dptabres.hxx:160
bool IsCalculated() const
Definition: dptabres.cxx:595
bool IsAutoTopItems() const
Definition: dptabres.hxx:591
const ScDPLevel * mpParentLevel
Ref.
Definition: dptabres.hxx:223
ScSubTotalFunc eRowForce
Definition: dptabres.hxx:83
void UpdateDataRow(const ScDPResultMember *pRefMember, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:2169
OUString GetName() const
Definition: dptabres.cxx:978
bool HasCommonElement(SCROW nFirstDataId, tools::Long nFirstIndex, const ScDPItemData &rSecondData, tools::Long nSecondIndex) const
Definition: dptabres.cxx:910
std::unique_ptr< ScDPResultDimension > pChildDimension
Definition: dptabres.hxx:332
ScDPDimension * GetDim(size_t nPos) const
Definition: dptabres.hxx:259
bool bIsInColRoot
Definition: dptabres.hxx:197
void SetEmpty(bool bSet)
Definition: dptabres.cxx:635
void Update(const ScDPValue &rNext, ScSubTotalFunc eFunc, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:374
const ScDPParentDimData * FindMember(SCROW nIndex) const
Definition: dptabres.cxx:4033
void InitFrom(const ::std::vector< ScDPDimension * > &ppDim, const ::std::vector< ScDPLevel * > &ppLev, size_t nPos, ScDPInitState &rInitState, bool bInitChild=true)
Definition: dptabres.cxx:1039
std::vector< css::sheet::DataPilotFieldOrientation > maMeasureRefOrients
Definition: dptabres.hxx:278
void SetInitChild(bool b)
Definition: dptabres.hxx:256
tools::Long GetMemberCount() const
Definition: dptabres.cxx:3864
void InitFrom(const ScDPResultDimension *pDim)
Definition: dptabres.cxx:1880
void CheckShowEmpty(bool bShow=false)
Definition: dptabres.cxx:4072
The term 'measure' here roughly equals "data dimension" ?
Definition: dptabres.hxx:271
void SortMembers(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:1698
ScDPAggData aAggregate
Definition: dptabres.hxx:432
void CheckShowEmpty(bool bShow=false)
Definition: dptabres.cxx:4084
ScDPParentDimData aParentDimData
Definition: dptabres.hxx:331
static ScDPDataMember * GetColReferenceMember(const ScDPRelativePos *pMemberPos, const OUString *pName, sal_Int32 nRefDimPos, const ScDPRunningTotalState &rRunning)
Definition: dptabres.cxx:3338
long Long
ScDPResultDimension * GetChildDimension()
Definition: dptabres.hxx:410
std::vector< css::sheet::DataPilotFieldReference > maMeasureRefs
Definition: dptabres.hxx:277
tools::Long nRowSubTotalFunc
Definition: dptabres.hxx:85
void SetLateInit(bool bSet)
Definition: dptabres.cxx:801
const ScDPResultData * pResultData
Definition: dptabres.hxx:330
OUString aDimensionName
Definition: dptabres.hxx:495
const css::sheet::DataPilotFieldReference & GetMeasureRefVal(tools::Long nMeasure) const
Definition: dptabres.cxx:828
Member names that are being processed for InitFrom/LateInitFrom (needed for initialization of grouped...
Definition: dptabres.hxx:55
IndexArray maRowSorted
Definition: dptabres.hxx:131
const ScDPResultDimension * pResultDimension
Definition: dptabres.hxx:604
ScDPLevel * GetLevel(size_t nPos) const
Definition: dptabres.hxx:260
ResultMembers & GetDimResultMembers(tools::Long nDim, const ScDPDimension *pDim, ScDPLevel *pLevel) const
Definition: dptabres.cxx:920
const ScDPMember * GetDPMember() const
Ref.
Definition: dptabres.hxx:416
bool IsNamedItem(SCROW nIndex) const
Definition: dptabres.cxx:1011
const ScDPDimension * mpParentDim
Ref.
Definition: dptabres.hxx:222
void UpdateDataResults(const ScDPResultMember *pRefMember, tools::Long nMeasure) const
Definition: dptabres.cxx:1649
void DumpState(const ScDPResultMember *pRefMember, ScDocument *pDoc, ScAddress &rPos) const
ScDPParentDimData()
Ref.
Definition: dptabres.cxx:4026
void ProcessData(const ::std::vector< SCROW > &aChildMembers, const ScDPResultDimension *pDataDim, const ::std::vector< SCROW > &aDataMembers, const ::std::vector< ScDPValue > &aValues)
Definition: dptabres.cxx:1257
Select subtotal information, passed down the dimensions.
Definition: dptabres.hxx:80
ScMemberSortOrder & GetMemberOrder()
Definition: dptabres.hxx:581
void SetAutoHidden()
Definition: dptabres.hxx:377
void FillDataResults(const ScDPResultMember *pRefMember, ScDPResultFilterContext &rFilterCxt, css::uno::Sequence< css::uno::Sequence< css::sheet::DataResult > > &rSequence, tools::Long nMeasure) const
Definition: dptabres.cxx:3060
bool IsValid() const
Definition: dptabres.cxx:1212
void UpdateRunningTotals(const ScDPResultDimension *pRefDim, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState, ScDPRunningTotalState &rRunning, ScDPRowTotals &rTotals, const ScDPResultMember &rRowParent) const
Definition: dptabres.cxx:3794
tools::Long GetSize(tools::Long nMeasure) const
Definition: dptabres.cxx:2975
void Dump(int nIndent) const
OUString GetMeasureString(tools::Long nMeasure, bool bForce, ScSubTotalFunc eForceFunc, bool &rbTotalResult) const
Definition: dptabres.cxx:840
bool IsVisible() const
Definition: dptabres.cxx:1856
void DoAutoShow(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:3140
ScMemberSortOrder aMemberOrder
Definition: dptabres.hxx:497
std::vector< Member > maMembers
Definition: dptabres.hxx:72
tools::Long GetRowStartMeasure() const
Definition: dptabres.cxx:814
std::vector< sal_Int32 > IndexArray
Definition: dptabres.hxx:107
tools::Long GetCountForMeasure(tools::Long nMeas) const
Definition: dptabres.hxx:312
std::unique_ptr< ScDPDataDimension > pChildDimension
Ref?
Definition: dptabres.hxx:431
const ::std::vector< ScDPDimension * > & mppDim
Definition: dptabres.hxx:246
ScDPDataDimension(const ScDPResultData *pData)
or ptr to IntDimension?
Definition: dptabres.cxx:3528
bool IsVisible() const
Definition: dptabres.cxx:1194
void Calculate(ScSubTotalFunc eFunc, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:449
ScDPResultMember * GetRowResRoot() const
Definition: dptabres.hxx:112
std::map< SCROW, ScDPResultMember * > MemberHash
Definition: dptabres.hxx:490
ScDPAggData * GetColTotal(tools::Long nMeasure) const
Definition: dptabres.cxx:1826
ScDPResultMember(const ScDPResultData *pData, const ScDPParentDimData &rParentDimData)
Definition: dptabres.cxx:949
const ScDPResultData * pResultData
Definition: dptabres.hxx:603
void SetError()
Definition: dptabres.cxx:628
bool mbHasHideDetailsMember
Definition: dptabres.hxx:233
void FillMemberResults(css::uno::Sequence< css::sheet::MemberResult > *pSequences, tools::Long nStart, tools::Long nMeasure)
Test.
Definition: dptabres.cxx:3033
bool IsSortAscending() const
Definition: dptabres.hxx:587
void AddRowIndex(sal_Int32 nVisible, tools::Long nSorted)
Definition: dptabres.cxx:327
void FillVisibilityData(ScDPResultVisibilityData &rData) const
Definition: dptabres.cxx:3511
ScDPResultMember * GetColResRoot() const
Definition: dptabres.hxx:111
bool IsNamedItem(SCROW nRow) const
Definition: dptabres.cxx:1864
tools::Long nColSubTotalFunc
Definition: dptabres.hxx:84
tools::Long nAutoCount
Definition: dptabres.hxx:505
void SortMembers(ScDPResultDimension *pRefDim)
Definition: dptabres.cxx:3668
void SortMembers(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:3111
const ScDPSource & GetSource() const
Definition: dptabres.hxx:324
ScDPAggData aRowTotal
Definition: dptabres.hxx:195
void SetDataLayoutOrientation(css::sheet::DataPilotFieldOrientation nOrient)
Definition: dptabres.cxx:795
SCROW GetDataId() const
Definition: dptabres.cxx:3954
void InitWithMembers(LateInitParams &rParams, const ::std::vector< SCROW > &pItemData, size_t nPos, ScDPInitState &rInitState)
Definition: dptabres.cxx:3987
ScDPResultMember * FindMember(SCROW iData) const
Definition: dptabres.cxx:2767
const ScDPLevel * GetParentLevel() const
Ref.
Definition: dptabres.hxx:415
OUString GetName() const
Definition: dptabres.cxx:1848
void RemoveMember()
Definition: dptabres.cxx:261
void SetInColRoot(bool bSet)
Definition: dptabres.hxx:207
tools::Long GetSortedIndex(tools::Long nUnsorted) const
Definition: dptabres.cxx:3785
bool IsInColRoot() const
Definition: dptabres.hxx:206
ScDPResultMember * AddMember(const ScDPParentDimData &aData)
Definition: dptabres.cxx:3962
bool IsInGroup(SCROW nGroupDataId, tools::Long nGroupIndex, const ScDPItemData &rBaseData, tools::Long nBaseIndex) const
Definition: dptabres.cxx:900
bool HasHiddenDetails() const
Definition: dptabres.cxx:1872
ScDPResultMember * InsertMember(const ScDPParentDimData *pMemberData)
Definition: dptabres.cxx:3972
ScDPResultVisibilityData(ScDPSource *pSource)
Definition: dptabres.cxx:3879
void UpdateRunningTotals(const ScDPResultMember *pRefMember, tools::Long nMeasure, ScDPRunningTotalState &rRunning, ScDPRowTotals &rTotals) const
Definition: dptabres.cxx:1737
void FillDataResults(const ScDPResultMember *pRefMember, ScDPResultFilterContext &rFilterCxt, css::uno::Sequence< css::uno::Sequence< css::sheet::DataResult > > &rSequence, tools::Long nMeasure) const
Definition: dptabres.cxx:1537
indexes when calculating running totals
Definition: dptabres.hxx:104
const OUString & GetName() const
Definition: dptabres.hxx:584
void Dump(int nIndent) const
bool HasData() const
Definition: dptabres.cxx:614
void FillVisibilityData(ScDPResultVisibilityData &rData) const
Definition: dptabres.cxx:1831
double GetResult() const
Definition: dptabres.cxx:600
const sal_Int64 SC_DPAGG_DATA_ERROR
Definition: dptabres.hxx:148
double GetAggregate(tools::Long nMeasure, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:1990
tools::Long GetSortedIndex(tools::Long nUnsorted) const
Definition: dptabres.cxx:3211
const ScDPDataMember * GetMember(tools::Long n) const
Definition: dptabres.cxx:3869
Implements the Welford Online one-pass algorithm.
Definition: subtotal.hxx:38
void addVisibleMember(const OUString &rDimName, const ScDPItemData &rMemberItem)
Definition: dptabres.cxx:3889
ScDPResultData(ScDPSource &rSrc)
Definition: dptabres.cxx:760
sal_uInt16 char * pName
Definition: callform.cxx:57
bool IsHasHideDetailsMembers() const
Definition: dptabres.hxx:237
double fVal
Definition: dptabres.hxx:157
When assigning a string value, you can also assign an interned string whose life-cycle is managed by ...
Definition: dpitemdata.hxx:28
ScDPResultDimension(const ScDPResultData *pData)
Definition: dptabres.cxx:2749
WelfordRunner maWelford
Definition: dptabres.hxx:156
DimMemberType maDimensions
Definition: dptabres.hxx:664
void UpdateDataRow(const ScDPResultDimension *pRefDim, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:3641
ScDPDataDimension * GetChildDimension()
Definition: dptabres.hxx:481
tools::Long GetAutoCount() const
Definition: dptabres.hxx:593
void FillMemberResults(css::uno::Sequence< css::sheet::MemberResult > *pSequences, tools::Long &rPos, tools::Long nMeasure, bool bRoot, const OUString *pMemberName, const OUString *pMemberCaption)
Definition: dptabres.cxx:1323
std::vector< ScSubTotalFunc > maMeasureFuncs
keep things like measure lists here
Definition: dptabres.hxx:276
tools::Long mnSrcIndex
Definition: dptabres.hxx:60
void ProcessData(const ::std::vector< SCROW > &aChildMembers, const ::std::vector< ScDPValue > &aValues, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:1931
tools::Long GetGroupBase(tools::Long nGroupDim) const
Definition: dptabres.cxx:890
void AddMember(tools::Long nSourceIndex, SCROW nMember)
Definition: dptabres.cxx:256
std::vector< std::unique_ptr< ScDPDataMember > > maMembers
Definition: dptabres.hxx:605
void DoAutoShow(ScDPResultDimension *pRefDim)
Definition: dptabres.cxx:3704
bool bSortByData
or ptr to IntDimension?
Definition: dptabres.hxx:499
std::unordered_set< ScDPItemData, MemberHash > VisibleMemberType
Definition: dptabres.hxx:662
css::sheet::DataPilotFieldOrientation GetMeasureRefOrient(tools::Long nMeasure) const
Definition: dptabres.cxx:834
void ResetResults()
Definition: dptabres.cxx:2268
void DumpState(const ScDPResultMember *pRefMember, ScDocument *pDoc, ScAddress &rPos) const
ScDPDataMember(const ScDPResultData *pData, const ScDPResultMember *pRes)
Definition: dptabres.cxx:1837
LateInitParams(const ::std::vector< ScDPDimension * > &ppDim, const ::std::vector< ScDPLevel * > &ppLev, bool bRow)
Definition: dptabres.cxx:4057
const ScMemberSortOrder & GetMemberOrder() const
Definition: dptabres.hxx:580
tools::Long GetSize(tools::Long nMeasure) const
Definition: dptabres.cxx:1157
void DoAutoShow(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:2255
tools::Long GetMemberCount() const
Definition: dptabres.cxx:3489
std::unordered_map< OUString, VisibleMemberType > DimMemberType
Definition: dptabres.hxx:663
double GetAuxiliary() const
Definition: dptabres.cxx:645
bool HasHiddenDetails() const
Definition: dptabres.hxx:368
void FillDataRow(const ScDPResultDimension *pRefDim, ScDPResultFilterContext &rFilterCxt, css::uno::Sequence< css::sheet::DataResult > &rSequence, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:3596
const std::vector< Member > & GetMembers() const
Definition: dptabres.hxx:69
ScDPSource & mrSource
Definition: dptabres.hxx:273
tools::Long nBasePos
Definition: dptabres.hxx:136
size_t operator()(const ScDPItemData &r) const
Definition: dptabres.cxx:3947
std::vector< std::unique_ptr< ScDPResultMember > > MemberArray
Definition: dptabres.hxx:489
const ScDPDimension * GetParentDim() const
Definition: dptabres.hxx:414
bool IsEnd(size_t nPos) const
Definition: dptabres.cxx:4067
bool IsSortByData() const
Definition: dptabres.hxx:586
const ScDPResultMember * pResultMember
Definition: dptabres.hxx:429
std::unordered_map< SCROW, ScDPParentDimData > maMemberHash
Definition: dptabres.hxx:232
ScDPAggData aGrandTotal
Definition: dptabres.hxx:196
ScDPResultMember * pColResRoot
Definition: dptabres.hxx:125
void fillFieldFilters(::std::vector< ScDPFilteredCache::Criterion > &rFilters) const
Definition: dptabres.cxx:3907
bool IsRoot() const
Ref.
Definition: dptabres.hxx:418
ScDPAggData * GetAggData(tools::Long nMeasure, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:1999
const ScDPResultData * pResultData
Definition: dptabres.hxx:492
const SCROW mnOrder
Definition: dptabres.hxx:221
void UpdateRunningTotals(const ScDPResultMember *pRefMember, tools::Long nMeasure, ScDPRunningTotalState &rRunning, ScDPRowTotals &rTotals) const
Definition: dptabres.cxx:3216
std::vector< std::unique_ptr< ResultMembers > > maDimMembers
add "displayed values" settings
Definition: dptabres.hxx:286
std::vector< double > mSortedValues
Definition: dptabres.hxx:161
void Dump(int nIndent) const
const IndexArray & GetRowVisible() const
Definition: dptabres.hxx:116
const ScDPMember * mpMemberDesc
Ref.
Definition: dptabres.hxx:224
void AddColIndex(sal_Int32 nVisible, tools::Long nSorted)
Definition: dptabres.cxx:318
void SortMembers(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:2242
OUString GetMeasureDimensionName(tools::Long nMeasure) const
Definition: dptabres.cxx:874
const ScDPResultMember * GetMember(tools::Long n) const
Definition: dptabres.cxx:3494
void SetHasHideDetailsMembers(bool b)
Definition: dptabres.hxx:238
sal_Int32 SCROW
Definition: types.hxx:17
IndexArray maColVisible
Definition: dptabres.hxx:128
#define SC_DPMEASURE_ALL
Definition: dptabres.hxx:216
void FillDataRow(const ScDPResultMember *pRefMember, ScDPResultFilterContext &rFilterCxt, css::uno::Sequence< css::sheet::DataResult > &rSequence, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:2039
const IndexArray & GetColVisible() const
Definition: dptabres.hxx:114
bool HasError() const
Definition: dptabres.cxx:607
void ProcessData(const ::std::vector< SCROW > &aMembers, const ScDPResultDimension *pDataDim, const ::std::vector< SCROW > &aDataMembers, const ::std::vector< ScDPValue > &aValues) const
Definition: dptabres.cxx:3009
const IndexArray & GetRowSorted() const
Definition: dptabres.hxx:117
const ::std::vector< ScDPLevel * > & mppLev
Definition: dptabres.hxx:247
void SetResult(double fNew)
Definition: dptabres.cxx:621
bool IsValidEntry(const ::std::vector< SCROW > &aMembers) const
Definition: dptabres.cxx:1020
ScDPResultMember * pRowResRoot
Definition: dptabres.hxx:126
void DumpState(const ScDPResultMember *pRefMember, ScDocument *pDoc, ScAddress &rPos) const
SCROW GetOrder() const
Ref.
Definition: dptabres.hxx:417
void InitFrom(const ScDPResultDimension *pDim)
Definition: dptabres.cxx:3539
double fAux
Definition: dptabres.hxx:158
void InitFrom(const ::std::vector< ScDPDimension * > &ppDim, const ::std::vector< ScDPLevel * > &ppLev, size_t nPos, ScDPInitState &rInitState, bool bInitChild=true)
Definition: dptabres.cxx:2790
void SetMeasureData(std::vector< ScSubTotalFunc > &rFunctions, std::vector< css::sheet::DataPilotFieldReference > &rRefs, std::vector< css::sheet::DataPilotFieldOrientation > &rRefOrient, std::vector< OUString > &rNames)
Definition: dptabres.cxx:772
const ScDPResultDimension * GetChildDimension() const
this will be removed!
Definition: dptabres.hxx:409
ScDPResultDimension * GetFirstChildDimension() const
Definition: dptabres.cxx:3503
tools::Long GetSortMeasure() const
Definition: dptabres.hxx:588
This class collects visible members of each dimension and uses that information to create filtering c...
Definition: dptabres.hxx:648
ScSubTotalFunc eColForce
Definition: dptabres.hxx:82
IndexArray maRowVisible
Definition: dptabres.hxx:130
tools::Long nSortMeasure
or ptr to IntDimension?
Definition: dptabres.hxx:496
void ProcessData(const ::std::vector< SCROW > &aDataMembers, const ::std::vector< ScDPValue > &aValues, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:3569
sal_uInt16 nMemberStep
Definition: dptabres.hxx:341
tools::Long GetMeasureCount() const
Definition: dptabres.hxx:300
tools::Long nDirection
Definition: dptabres.hxx:137
bool IsDataLayout() const
Definition: dptabres.hxx:583
bool IsRow() const
Definition: dptabres.hxx:264
const IndexArray & GetColSorted() const
Definition: dptabres.hxx:115
void Dump(int nIndent) const
ScDPAggData * GetRowTotal(tools::Long nMeasure)
Definition: dptabres.cxx:722
ScDPRunningTotalState(ScDPResultMember *pColRoot, ScDPResultMember *pRowRoot)
array of sal_Int32 terminated by -1.
Definition: dptabres.cxx:308
bool HasData(tools::Long nMeasure, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:1966
void DumpState(const ScDPResultDimension *pRefDim, ScDocument *pDoc, ScAddress &rPos) const
bool GetInitAllChild() const
Definition: dptabres.hxx:263
bool IsValidEntry(const ::std::vector< SCROW > &aMembers) const
Definition: dptabres.cxx:2995
ScDPDataMember * GetRowReferenceMember(const ScDPRelativePos *pMemberPos, const OUString *pName, const sal_Int32 *pRowIndexes, const sal_Int32 *pColIndexes) const
Definition: dptabres.cxx:3248
bool mbAllChildren
Definition: dptabres.hxx:251
ScDPAggData * GetChild()
Definition: dptabres.cxx:661
void SetHasElements()
Definition: dptabres.hxx:376
IndexArray maColSorted
Definition: dptabres.hxx:129
const ScDPAggData * GetExistingChild() const
Definition: dptabres.hxx:183
tools::Long GetColStartMeasure() const
Definition: dptabres.cxx:806
void UpdateValues(const ::std::vector< ScDPValue > &aValues, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:1907
void Reset()
Definition: dptabres.cxx:668
void InsertMember(ScDPParentDimData const &rNew)
Definition: dptabres.cxx:4042
sal_Int64 nCount
Definition: dptabres.hxx:159
const ScDPDataDimension * GetChildDimension() const
this will be removed!
Definition: dptabres.hxx:480
ScSubTotalFunc
Definition: global.hxx:843
void Dump(int nIndent) const
void UpdateRunningTotals(const ScDPResultMember *pRefMember, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState, ScDPRunningTotalState &rRunning, ScDPRowTotals &rTotals, const ScDPResultMember &rRowParent)
Definition: dptabres.cxx:2277
std::vector< OUString > maMeasureNames
Definition: dptabres.hxx:279
OUString GetDisplayName(bool bLocaleIndependent) const
Definition: dptabres.cxx:987
bool IsAutoShow() const
Definition: dptabres.hxx:590
bool IsLateInit() const
Definition: dptabres.hxx:307
const ScDPResultData * pResultData
Definition: dptabres.hxx:428
bool IsSubTotalInTitle(tools::Long nMeasure) const
Definition: dptabres.cxx:1135
ScDPItemData FillItemData() const
Definition: dptabres.cxx:1003
void LateInitFrom(LateInitParams &rParams, const ::std::vector< SCROW > &pItemData, size_t nPos, ScDPInitState &rInitState)
Definition: dptabres.cxx:2858
bool GetInitChild() const
Definition: dptabres.hxx:262
tools::Long GetSubTotalCount(tools::Long *pUserSubStart=nullptr) const
Definition: dptabres.cxx:1227
bool IsBaseForGroup(tools::Long nDim) const
Definition: dptabres.cxx:885
ScDPAggData aColTotal
Definition: dptabres.hxx:339
Member(tools::Long nSrcIndex, SCROW nNameIndex)
Definition: dptabres.cxx:253
bool IsNumOrDateGroup(tools::Long nDim) const
Definition: dptabres.cxx:895
bool HasError(tools::Long nMeasure, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:1981
tools::Long nAutoMeasure
Definition: dptabres.hxx:504
const sal_Int64 SC_DPAGG_RESULT_VALID
Definition: dptabres.hxx:150
void LateInitFrom(LateInitParams &rParams, const ::std::vector< SCROW > &pItemData, size_t nPos, ScDPInitState &rInitState)
Definition: dptabres.cxx:1083
const sal_Int64 SC_DPAGG_EMPTY
separate header file?
Definition: dptabres.hxx:147
tools::Long GetAutoMeasure() const
Definition: dptabres.hxx:592
const ScDPAggData * GetConstAggData(tools::Long nMeasure, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:2017
const sal_Int64 SC_DPAGG_RESULT_ERROR
Definition: dptabres.hxx:151
MemberHash maMemberHash
Definition: dptabres.hxx:494
ScSubTotalFunc GetMeasureFunction(tools::Long nMeasure) const
Definition: dptabres.cxx:822
::std::vector< sal_Int32 > ScMemberSortOrder
Definition: dptabres.hxx:75
void UpdateDataResults(const ScDPResultMember *pRefMember, tools::Long nMeasure) const
Definition: dptabres.cxx:3089
ScDPDataMember * GetDataRoot() const
Definition: dptabres.hxx:412
ScDPAggData * GetGrandTotal(tools::Long nMeasure)
Definition: dptabres.cxx:727