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  ~LateInitParams();
256 
257  void SetInitChild( bool b ) { mbInitChild = b; }
258  void SetInitAllChildren( bool b ) { mbAllChildren = b; }
259 
260  ScDPDimension* GetDim( size_t nPos ) const { return mppDim[nPos];}
261  ScDPLevel* GetLevel( size_t nPos ) const { return mppLev[nPos];}
262 
263  bool GetInitChild() const {return mbInitChild; }
264  bool GetInitAllChild() const { return mbAllChildren; }
265  bool IsRow() const { return mbRow; }
266  bool IsEnd( size_t nPos ) const ;
267 };
268 
273 {
276 
277  std::vector<ScSubTotalFunc> maMeasureFuncs;
278  std::vector<css::sheet::DataPilotFieldReference> maMeasureRefs;
279  std::vector<css::sheet::DataPilotFieldOrientation> maMeasureRefOrients;
280  std::vector<OUString> maMeasureNames;
281 
282  bool bLateInit:1;
283  bool bDataAtCol:1;
284  bool bDataAtRow:1;
285 
287  mutable std::vector<std::unique_ptr<ResultMembers>> maDimMembers;
288 public:
289  ScDPResultData( ScDPSource& rSrc );
290  ~ScDPResultData();
291 
292  void SetMeasureData(
293  std::vector<ScSubTotalFunc>& rFunctions,
294  std::vector<css::sheet::DataPilotFieldReference>& rRefs,
295  std::vector<css::sheet::DataPilotFieldOrientation>& rRefOrient,
296  std::vector<OUString>& rNames );
297 
298  void SetDataLayoutOrientation( css::sheet::DataPilotFieldOrientation nOrient );
299  void SetLateInit( bool bSet );
300 
301  tools::Long GetMeasureCount() const { return maMeasureFuncs.size(); }
303  OUString GetMeasureString(tools::Long nMeasure, bool bForce, ScSubTotalFunc eForceFunc, bool& rbTotalResult) const;
304  OUString GetMeasureDimensionName(tools::Long nMeasure) const;
305  const css::sheet::DataPilotFieldReference& GetMeasureRefVal(tools::Long nMeasure) const;
306  css::sheet::DataPilotFieldOrientation GetMeasureRefOrient(tools::Long nMeasure) const;
307 
308  bool IsLateInit() const { return bLateInit; }
309 
312 
313  tools::Long GetCountForMeasure( tools::Long nMeas ) const { return (nMeas == SC_DPMEASURE_ALL) ? maMeasureFuncs.size() : 1; }
314 
315  bool IsBaseForGroup( tools::Long nDim ) const; // any group
316  tools::Long GetGroupBase( tools::Long nGroupDim ) const;
317  bool IsNumOrDateGroup( tools::Long nDim ) const;
318  bool IsInGroup( SCROW nGroupDataId, tools::Long nGroupIndex,
319  const ScDPItemData& rBaseData, tools::Long nBaseIndex ) const;
320  bool HasCommonElement( SCROW nFirstDataId, tools::Long nFirstIndex,
321  const ScDPItemData& rSecondData, tools::Long nSecondIndex ) const;
322 
323  ResultMembers& GetDimResultMembers(tools::Long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const;
324 
325  const ScDPSource& GetSource() const { return mrSource;}
326 };
327 
329 {
330 private:
333  std::unique_ptr<ScDPResultDimension> pChildDimension;
334  std::unique_ptr<ScDPDataMember> pDataRoot;
335  bool bHasElements:1;
338  bool bInitialized:1;
339  bool bAutoHidden:1;
340  ScDPAggData aColTotal; // to store column totals
341 
342  sal_uInt16 nMemberStep; // step to show details
343 public:
345  const ScDPResultData* pData, const ScDPParentDimData& rParentDimData );
346  ScDPResultMember( const ScDPResultData* pData, bool bForceSub );
348 
349  void InitFrom( const ::std::vector<ScDPDimension*>& ppDim,
350  const ::std::vector<ScDPLevel*>& ppLev,
351  size_t nPos,
352  ScDPInitState& rInitState,
353  bool bInitChild = true );
354  void LateInitFrom(
355  LateInitParams& rParams,
356  const ::std::vector< SCROW >& pItemData,
357  size_t nPos,
358  ScDPInitState& rInitState);
359  void CheckShowEmpty( bool bShow = false );
360  OUString GetName() const;
361  OUString GetDisplayName( bool bLocaleIndependent ) const;
362 
363  ScDPItemData FillItemData() const;
364  bool IsValid() const;
365  bool IsVisible() const;
366  tools::Long GetSize(tools::Long nMeasure) const;
367  // bHasHiddenDetails is set only if the "show details" flag is off,
368  // and there was a child dimension to skip
369  bool HasHiddenDetails() const { return bHasHiddenDetails; }
370  bool IsSubTotalInTitle(tools::Long nMeasure) const;
371 
372  tools::Long GetSubTotalCount( tools::Long* pUserSubStart = nullptr ) const;
373 
374  bool IsNamedItem( SCROW nIndex ) const;
375  bool IsValidEntry( const ::std::vector< SCROW >& aMembers ) const;
376 
377  void SetHasElements() { bHasElements = true; }
378  void SetAutoHidden() { bAutoHidden = true; }
379 
380  void ProcessData( const ::std::vector<SCROW>& aChildMembers,
381  const ScDPResultDimension* pDataDim,
382  const ::std::vector<SCROW>& aDataMembers,
383  const ::std::vector<ScDPValue>& aValues );
384  void FillMemberResults(
385  css::uno::Sequence< css::sheet::MemberResult>* pSequences,
386  tools::Long& rPos, tools::Long nMeasure, bool bRoot, const OUString* pMemberName, const OUString* pMemberCaption );
387 
388  void FillDataResults(
389  const ScDPResultMember* pRefMember,
390  ScDPResultFilterContext& rFilterCxt,
391  css::uno::Sequence< css::uno::Sequence< css::sheet::DataResult> >& rSequence,
392  tools::Long nMeasure) const;
393 
394  void UpdateDataResults( const ScDPResultMember* pRefMember, tools::Long nMeasure ) const;
395  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure,
396  ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const;
397 
398  void SortMembers( ScDPResultMember* pRefMember );
399  void DoAutoShow( ScDPResultMember* pRefMember );
400 
401  void ResetResults();
402 
403 #if DUMP_PIVOT_TABLE
404  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
405 
406  void Dump(int nIndent) const;
407 #endif
408 
410  const ScDPResultDimension* GetChildDimension() const { return pChildDimension.get(); }
411  ScDPResultDimension* GetChildDimension() { return pChildDimension.get(); }
412 
413  ScDPDataMember* GetDataRoot() const { return pDataRoot.get(); }
414 
415  const ScDPDimension* GetParentDim() const { return aParentDimData.mpParentDim; }
416  const ScDPLevel* GetParentLevel() const { return aParentDimData.mpParentLevel; }
417  const ScDPMember* GetDPMember()const { return aParentDimData.mpMemberDesc; }
418  SCROW GetOrder() const { return aParentDimData.mnOrder; }
419  bool IsRoot() const { return GetParentLevel() == nullptr; }
420  SCROW GetDataId( ) const ;
421  ScDPAggData* GetColTotal( tools::Long nMeasure ) const;
422 
423  void FillVisibilityData(ScDPResultVisibilityData& rData) const;
424 };
425 
427 {
428 private:
431  std::unique_ptr<ScDPDataDimension>
434 
435  void UpdateValues( const ::std::vector<ScDPValue>& aValues, const ScDPSubTotalState& rSubState );
436 
437 public:
438  ScDPDataMember( const ScDPResultData* pData, const ScDPResultMember* pRes );
439  ~ScDPDataMember();
440 
441  void InitFrom( const ScDPResultDimension* pDim );
442 
443  OUString GetName() const;
444  bool IsVisible() const;
445  bool HasData( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
446 
447  bool IsNamedItem( SCROW nRow ) const;
448  bool HasHiddenDetails() const;
449 
450  void ProcessData( const ::std::vector< SCROW >& aChildMembers, const ::std::vector<ScDPValue>& aValues,
451  const ScDPSubTotalState& rSubState );
452  bool HasError( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
453  double GetAggregate( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
454  const ScDPAggData* GetConstAggData( tools::Long nMeasure, const ScDPSubTotalState& rSubState ) const;
455  ScDPAggData* GetAggData( tools::Long nMeasure, const ScDPSubTotalState& rSubState );
456 
457  void FillDataRow(
458  const ScDPResultMember* pRefMember,
459  ScDPResultFilterContext& rFilterCxt,
460  css::uno::Sequence<css::sheet::DataResult>& rSequence,
461  tools::Long nMeasure, bool bIsSubTotalRow,
462  const ScDPSubTotalState& rSubState) const;
463 
464  void UpdateDataRow( const ScDPResultMember* pRefMember, tools::Long nMeasure, bool bIsSubTotalRow,
465  const ScDPSubTotalState& rSubState );
466  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure, bool bIsSubTotalRow,
467  const ScDPSubTotalState& rSubState, ScDPRunningTotalState& rRunning,
468  ScDPRowTotals& rTotals, const ScDPResultMember& rRowParent );
469 
470  void SortMembers( ScDPResultMember* pRefMember );
471  void DoAutoShow( ScDPResultMember* pRefMember );
472 
473  void ResetResults();
474 
475 #if DUMP_PIVOT_TABLE
476  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
477  void Dump(int nIndent) const;
478 #endif
479 
481  const ScDPDataDimension* GetChildDimension() const { return pChildDimension.get(); }
483 };
484 
485 // result dimension contains only members
486 
488 {
489 public:
490  typedef std::vector<std::unique_ptr<ScDPResultMember>> MemberArray;
491  typedef std::map<SCROW, ScDPResultMember*> MemberHash;
492 private:
494  MemberArray maMemberArray;
495  MemberHash maMemberHash;
496  OUString aDimensionName;
498  ScMemberSortOrder aMemberOrder; // used when sorted by measure
499  bool bIsDataLayout:1;
500  bool bSortByData:1;
502  bool bAutoShow:1;
504  bool bInitialized:1;
507 
508  ScDPResultMember* FindMember( SCROW iData ) const;
510  ScDPResultMember* InsertMember( const ScDPParentDimData* pMemberData );
511  void InitWithMembers( LateInitParams& rParams,
512  const ::std::vector< SCROW >& pItemData,
513  size_t nPos,
514  ScDPInitState& rInitState );
515 public:
516  ScDPResultDimension( const ScDPResultData* pData );
518 
519  // allocates new members
520  void InitFrom(
521  const ::std::vector<ScDPDimension*>& ppDim, const ::std::vector<ScDPLevel*>& ppLev,
522  size_t nPos, ScDPInitState& rInitState, bool bInitChild = true );
523  void LateInitFrom( LateInitParams& rParams,
524  const ::std::vector< SCROW >& pItemData,
525  size_t nPos,
526  ScDPInitState& rInitState );
527  void CheckShowEmpty( bool bShow = false );
528 
529  tools::Long GetSize(tools::Long nMeasure) const;
530 
531  bool IsValidEntry( const ::std::vector<SCROW>& aMembers ) const;
532 
533  // modifies existing members, allocates data dimensions
534  void ProcessData( const ::std::vector<SCROW>& aMembers,
535  const ScDPResultDimension* pDataDim,
536  const ::std::vector<SCROW>& aDataMembers,
537  const ::std::vector<ScDPValue>& aValues ) const;
538  void FillMemberResults( css::uno::Sequence<
539  css::sheet::MemberResult>* pSequences,
540  tools::Long nStart, tools::Long nMeasure );
541 
542  void FillDataResults(
543  const ScDPResultMember* pRefMember,
544  ScDPResultFilterContext& rFilterCxt,
545  css::uno::Sequence<
546  css::uno::Sequence<
547  css::sheet::DataResult> >& rSequence,
548  tools::Long nMeasure) const;
549 
550  void UpdateDataResults( const ScDPResultMember* pRefMember, tools::Long nMeasure ) const;
551  void UpdateRunningTotals( const ScDPResultMember* pRefMember, tools::Long nMeasure,
552  ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const;
553 
554  void SortMembers( ScDPResultMember* pRefMember );
555  tools::Long GetSortedIndex( tools::Long nUnsorted ) const;
556 
557  void DoAutoShow( ScDPResultMember* pRefMember );
558 
559  void ResetResults();
560 
561  // called for the reference dimension
563  const ScDPRelativePos* pMemberPos, const OUString* pName,
564  const sal_Int32* pRowIndexes, const sal_Int32* pColIndexes ) const;
565 
566  // uses row root member from ScDPRunningTotalState
568  const ScDPRelativePos* pMemberPos, const OUString* pName,
569  sal_Int32 nRefDimPos, const ScDPRunningTotalState& rRunning );
570 
571 #if DUMP_PIVOT_TABLE
572  void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
573  void Dump(int nIndent) const;
574 #endif
575 
576  // for ScDPDataDimension::InitFrom
577  tools::Long GetMemberCount() const;
578  const ScDPResultMember* GetMember(tools::Long n) const;
580 
581  const ScMemberSortOrder& GetMemberOrder() const { return aMemberOrder; }
583 
584  bool IsDataLayout() const { return bIsDataLayout; }
585  const OUString& GetName() const { return aDimensionName; }
586 
587  bool IsSortByData() const { return bSortByData; }
588  bool IsSortAscending() const { return bSortAscending; }
590 
591  bool IsAutoShow() const { return bAutoShow; }
592  bool IsAutoTopItems() const { return bAutoTopItems; }
594  tools::Long GetAutoCount() const { return nAutoCount; }
595 
597 
598  void FillVisibilityData(ScDPResultVisibilityData& rData) const;
599 };
600 
602 {
603 private:
606  std::vector<std::unique_ptr<ScDPDataMember>> maMembers;
608 
609 public:
610  ScDPDataDimension( const ScDPResultData* pData );
612 
613  void InitFrom( const ScDPResultDimension* pDim ); // recursive
614  void ProcessData( const ::std::vector< SCROW >& aDataMembers, const ::std::vector<ScDPValue>& aValues,
615  const ScDPSubTotalState& rSubState );
616  void FillDataRow(
617  const ScDPResultDimension* pRefDim,
618  ScDPResultFilterContext& rFilterCxt,
619  css::uno::Sequence<css::sheet::DataResult>& rSequence,
620  tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState& rSubState) const;
621 
622  void UpdateDataRow( const ScDPResultDimension* pRefDim, tools::Long nMeasure, bool bIsSubTotalRow,
623  const ScDPSubTotalState& rSubState ) const;
624  void UpdateRunningTotals( const ScDPResultDimension* pRefDim, tools::Long nMeasure, bool bIsSubTotalRow,
625  const ScDPSubTotalState& rSubState, ScDPRunningTotalState& rRunning,
626  ScDPRowTotals& rTotals, const ScDPResultMember& rRowParent ) const;
627 
628  void SortMembers( ScDPResultDimension* pRefDim );
629  tools::Long GetSortedIndex( tools::Long nUnsorted ) const;
630 
631  void DoAutoShow( ScDPResultDimension* pRefDim );
632 
633  void ResetResults();
634 
635 #if DUMP_PIVOT_TABLE
636  void DumpState( const ScDPResultDimension* pRefDim, ScDocument* pDoc, ScAddress& rPos ) const;
637  void Dump(int nIndent) const;
638 #endif
639 
640  tools::Long GetMemberCount() const;
641  const ScDPDataMember* GetMember(tools::Long n) const;
643 };
644 
650 {
651 public:
654 
655  void addVisibleMember(const OUString& rDimName, const ScDPItemData& rMemberItem);
656  void fillFieldFilters(::std::vector<ScDPFilteredCache::Criterion>& rFilters) const;
657 
658 private:
659  struct MemberHash
660  {
661  size_t operator()(const ScDPItemData& r) const;
662  };
663  typedef std::unordered_set<ScDPItemData, MemberHash> VisibleMemberType;
664  typedef std::unordered_map<OUString, VisibleMemberType> DimMemberType;
665  DimMemberType maDimensions;
666 
668 };
669 
670 /* 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:334
MemberArray maMemberArray
Definition: dptabres.hxx:494
void SetInitAllChildren(bool b)
Definition: dptabres.hxx:258
const sal_Int64 SC_DPAGG_RESULT_EMPTY
Definition: dptabres.hxx:149
bool bHasHiddenDetails
Definition: dptabres.hxx:337
std::unique_ptr< ScDPAggData > pChild
Definition: dptabres.hxx:160
bool IsCalculated() const
Definition: dptabres.cxx:595
bool IsAutoTopItems() const
Definition: dptabres.hxx:592
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:333
ScDPDimension * GetDim(size_t nPos) const
Definition: dptabres.hxx:260
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:279
void SetInitChild(bool b)
Definition: dptabres.hxx:257
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:4076
The term 'measure' here roughly equals "data dimension" ?
Definition: dptabres.hxx:272
void SortMembers(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:1698
ScDPAggData aAggregate
Definition: dptabres.hxx:433
void CheckShowEmpty(bool bShow=false)
Definition: dptabres.cxx:4088
ScDPParentDimData aParentDimData
Definition: dptabres.hxx:332
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:411
std::vector< css::sheet::DataPilotFieldReference > maMeasureRefs
Definition: dptabres.hxx:278
tools::Long nRowSubTotalFunc
Definition: dptabres.hxx:85
void SetLateInit(bool bSet)
Definition: dptabres.cxx:801
const ScDPResultData * pResultData
Definition: dptabres.hxx:331
OUString aDimensionName
Definition: dptabres.hxx:496
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:605
ScDPLevel * GetLevel(size_t nPos) const
Definition: dptabres.hxx:261
ResultMembers & GetDimResultMembers(tools::Long nDim, const ScDPDimension *pDim, ScDPLevel *pLevel) const
Definition: dptabres.cxx:920
const ScDPMember * GetDPMember() const
Ref.
Definition: dptabres.hxx:417
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:582
void SetAutoHidden()
Definition: dptabres.hxx:378
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:498
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:313
std::unique_ptr< ScDPDataDimension > pChildDimension
Ref?
Definition: dptabres.hxx:432
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:491
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:604
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:588
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:506
void SortMembers(ScDPResultDimension *pRefDim)
Definition: dptabres.cxx:3668
void SortMembers(ScDPResultMember *pRefMember)
Definition: dptabres.cxx:3111
const ScDPSource & GetSource() const
Definition: dptabres.hxx:325
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:416
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:585
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:665
void UpdateDataRow(const ScDPResultDimension *pRefDim, tools::Long nMeasure, bool bIsSubTotalRow, const ScDPSubTotalState &rSubState) const
Definition: dptabres.cxx:3641
ScDPDataDimension * GetChildDimension()
Definition: dptabres.hxx:482
tools::Long GetAutoCount() const
Definition: dptabres.hxx:594
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:277
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:606
void DoAutoShow(ScDPResultDimension *pRefDim)
Definition: dptabres.cxx:3704
bool bSortByData
or ptr to IntDimension?
Definition: dptabres.hxx:500
std::unordered_set< ScDPItemData, MemberHash > VisibleMemberType
Definition: dptabres.hxx:663
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:581
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:664
double GetAuxiliary() const
Definition: dptabres.cxx:645
bool HasHiddenDetails() const
Definition: dptabres.hxx:369
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:274
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:490
const ScDPDimension * GetParentDim() const
Definition: dptabres.hxx:415
bool IsEnd(size_t nPos) const
Definition: dptabres.cxx:4071
bool IsSortByData() const
Definition: dptabres.hxx:587
const ScDPResultMember * pResultMember
Definition: dptabres.hxx:430
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:419
ScDPAggData * GetAggData(tools::Long nMeasure, const ScDPSubTotalState &rSubState)
Definition: dptabres.cxx:1999
const ScDPResultData * pResultData
Definition: dptabres.hxx:493
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:287
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:418
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:410
ScDPResultDimension * GetFirstChildDimension() const
Definition: dptabres.cxx:3503
tools::Long GetSortMeasure() const
Definition: dptabres.hxx:589
This class collects visible members of each dimension and uses that information to create filtering c...
Definition: dptabres.hxx:649
ScSubTotalFunc eColForce
Definition: dptabres.hxx:82
IndexArray maRowVisible
Definition: dptabres.hxx:130
tools::Long nSortMeasure
or ptr to IntDimension?
Definition: dptabres.hxx:497
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:342
tools::Long GetMeasureCount() const
Definition: dptabres.hxx:301
tools::Long nDirection
Definition: dptabres.hxx:137
bool IsDataLayout() const
Definition: dptabres.hxx:584
bool IsRow() const
Definition: dptabres.hxx:265
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:264
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:377
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:481
ScSubTotalFunc
Definition: global.hxx:834
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:280
OUString GetDisplayName(bool bLocaleIndependent) const
Definition: dptabres.cxx:987
bool IsAutoShow() const
Definition: dptabres.hxx:591
bool IsLateInit() const
Definition: dptabres.hxx:308
const ScDPResultData * pResultData
Definition: dptabres.hxx:429
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:263
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:340
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:505
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:593
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:495
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:413
ScDPAggData * GetGrandTotal(tools::Long nMeasure)
Definition: dptabres.cxx:727