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