summaryrefslogtreecommitdiffstats
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-02-15 22:11:04 -0500
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-02-15 22:12:24 -0500
commit7c936145f75812cf651ae57c7f364b0103d5f4db (patch)
tree28a76785644c05bdf40ef4e9d65f4072f2497c27 /sc
parentcoverity: finally fix the memory leak correctly (diff)
downloadcore-7c936145f75812cf651ae57c7f364b0103d5f4db.tar.gz
core-7c936145f75812cf651ae57c7f364b0103d5f4db.zip
Add a quick way to dump the content of pivot table result tree.
This is to be used for debugging. Change-Id: Ie5a5ebd66a701937ab806e2370ded85ba557de5b
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/dpmacros.hxx6
-rw-r--r--sc/inc/dptabres.hxx9
-rw-r--r--sc/inc/dptabsrc.hxx4
-rw-r--r--sc/source/core/data/dpfilteredcache.cxx1
-rw-r--r--sc/source/core/data/dpgroup.cxx1
-rw-r--r--sc/source/core/data/dpitemdata.cxx1
-rw-r--r--sc/source/core/data/dpnumgroupinfo.cxx1
-rw-r--r--sc/source/core/data/dptabres.cxx67
-rw-r--r--sc/source/core/data/dptabsrc.cxx10
-rw-r--r--sc/source/core/data/pivot2.cxx1
-rw-r--r--sc/source/ui/dbgui/fieldwnd.cxx1
11 files changed, 96 insertions, 6 deletions
diff --git a/sc/inc/dpmacros.hxx b/sc/inc/dpmacros.hxx
index 906a0da2d415..79aafafe0f6d 100644
--- a/sc/inc/dpmacros.hxx
+++ b/sc/inc/dpmacros.hxx
@@ -31,6 +31,12 @@
#define DEBUG_PIVOT_TABLE 0
+#if DEBUG_PIVOT_TABLE
+#include <iostream>
+#include <string>
+#include <cstdio>
+#endif
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/dptabres.hxx b/sc/inc/dptabres.hxx
index 70c2b1460eb7..90a7f3690acf 100644
--- a/sc/inc/dptabres.hxx
+++ b/sc/inc/dptabres.hxx
@@ -188,6 +188,10 @@ public:
const ScDPAggData* GetExistingChild() const { return pChild; }
ScDPAggData* GetChild();
+
+#if DEBUG_PIVOT_TABLE
+ void Dump(int nIndent) const;
+#endif
};
//
@@ -416,6 +420,8 @@ public:
#if DEBUG_PIVOT_TABLE
void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
+
+ void Dump(int nIndent) const;
#endif
//! this will be removed!
@@ -483,6 +489,7 @@ public:
#if DEBUG_PIVOT_TABLE
void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
+ void Dump(int nIndent) const;
#endif
//! this will be removed!
@@ -579,6 +586,7 @@ public:
#if DEBUG_PIVOT_TABLE
void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
+ void Dump(int nIndent) const;
#endif
// for ScDPDataDimension::InitFrom
@@ -641,6 +649,7 @@ public:
#if DEBUG_PIVOT_TABLE
void DumpState( const ScDPResultDimension* pRefDim, ScDocument* pDoc, ScAddress& rPos ) const;
+ void Dump(int nIndent) const;
#endif
long GetMemberCount() const;
diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
index 1aefebc69523..06ed2f0fc3b5 100644
--- a/sc/inc/dptabsrc.hxx
+++ b/sc/inc/dptabsrc.hxx
@@ -262,6 +262,10 @@ public:
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
+
+#if DEBUG_PIVOT_TABLE
+ void DumpResults() const;
+#endif
};
class ScDPDimensions : public cppu::WeakImplHelper2<
diff --git a/sc/source/core/data/dpfilteredcache.cxx b/sc/source/core/data/dpfilteredcache.cxx
index e361753f1b60..0df77891f40e 100644
--- a/sc/source/core/data/dpfilteredcache.cxx
+++ b/sc/source/core/data/dpfilteredcache.cxx
@@ -417,7 +417,6 @@ const ScDPCache* ScDPFilteredCache::getCache() const
}
#if DEBUG_PIVOT_TABLE
-#include <iostream>
using std::cout;
using std::endl;
diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx
index 614b5b5bd11f..483677b71b1e 100644
--- a/sc/source/core/data/dpgroup.cxx
+++ b/sc/source/core/data/dpgroup.cxx
@@ -1004,7 +1004,6 @@ long ScDPGroupTableData::Compare(long nDim, long nDataId1, long nDataId2)
}
#if DEBUG_PIVOT_TABLE
-#include <iostream>
using std::cout;
using std::endl;
diff --git a/sc/source/core/data/dpitemdata.cxx b/sc/source/core/data/dpitemdata.cxx
index 1e0bb3cb2485..4c04106f20eb 100644
--- a/sc/source/core/data/dpitemdata.cxx
+++ b/sc/source/core/data/dpitemdata.cxx
@@ -285,7 +285,6 @@ ScDPValue::Type ScDPItemData::GetCellType() const
}
#if DEBUG_PIVOT_TABLE
-#include <cstdio>
void ScDPItemData::Dump(const char* msg) const
{
diff --git a/sc/source/core/data/dpnumgroupinfo.cxx b/sc/source/core/data/dpnumgroupinfo.cxx
index 26349333a549..114bbd9252fa 100644
--- a/sc/source/core/data/dpnumgroupinfo.cxx
+++ b/sc/source/core/data/dpnumgroupinfo.cxx
@@ -46,7 +46,6 @@ ScDPNumGroupInfo::ScDPNumGroupInfo(const ScDPNumGroupInfo& r) :
mfEnd(r.mfEnd), mfStep(r.mfStep) {}
#if DEBUG_PIVOT_TABLE
-#include <iostream>
using std::cout;
using std::endl;
diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx
index c21c5c1cb2be..1aa542c34f84 100644
--- a/sc/source/core/data/dptabres.cxx
+++ b/sc/source/core/data/dptabres.cxx
@@ -640,6 +640,20 @@ void ScDPAggData::Reset()
pChild = NULL;
}
+#if DEBUG_PIVOT_TABLE
+void ScDPAggData::Dump(int nIndent) const
+{
+ std::string aIndent(nIndent*2, ' ');
+ std::cout << aIndent << "* ";
+ if (IsCalculated())
+ std::cout << GetResult();
+ else
+ std::cout << "not calculated";
+
+ std::cout << " [val=" << fVal << "; aux=" << fAux << "; count=" << nCount << "]" << std::endl;
+}
+#endif
+
// -----------------------------------------------------------------------
ScDPRowTotals::ScDPRowTotals() :
@@ -1738,6 +1752,25 @@ void ScDPResultMember::DumpState( const ScDPResultMember* pRefMember, ScDocument
lcl_Indent( pDoc, nStartRow, rPos );
}
+
+void ScDPResultMember::Dump(int nIndent) const
+{
+ std::string aIndent(nIndent*2, ' ');
+ std::cout << aIndent << "-- result member '" << GetName() << "'" << std::endl;
+
+ std::cout << aIndent << " column totals" << std::endl;
+ for (const ScDPAggData* p = &aColTotal; p; p = p->GetExistingChild())
+ p->Dump(nIndent+1);
+
+ if (pChildDimension)
+ pChildDimension->Dump(nIndent+1);
+
+ if (pDataRoot)
+ {
+ std::cout << aIndent << " data root" << std::endl;
+ pDataRoot->Dump(nIndent+1);
+ }
+}
#endif
ScDPAggData* ScDPResultMember::GetColTotal( long nMeasure ) const
@@ -2578,6 +2611,18 @@ void ScDPDataMember::DumpState( const ScDPResultMember* pRefMember, ScDocument*
lcl_Indent( pDoc, nStartRow, rPos );
}
+
+void ScDPDataMember::Dump(int nIndent) const
+{
+ std::string aIndent(nIndent*2, ' ');
+ std::cout << aIndent << "-- data member '"
+ << (pResultMember ? pResultMember->GetName() : OUString()) << "'" << std::endl;
+ for (const ScDPAggData* pAgg = &aAggregate; pAgg; pAgg = pAgg->GetExistingChild())
+ pAgg->Dump(nIndent+1);
+
+ if (pChildDimension)
+ pChildDimension->Dump(nIndent+1);
+}
#endif
// -----------------------------------------------------------------------
@@ -3395,6 +3440,18 @@ void ScDPResultDimension::DumpState( const ScDPResultMember* pRefMember, ScDocum
lcl_Indent( pDoc, nStartRow, rPos );
}
+
+void ScDPResultDimension::Dump(int nIndent) const
+{
+ std::string aIndent(nIndent*2, ' ');
+ std::cout << aIndent << "-- dimension '" << GetName() << "'" << std::endl;
+ MemberArray::const_iterator it = maMemberArray.begin(), itEnd = maMemberArray.end();
+ for (; it != itEnd; ++it)
+ {
+ const ScDPResultMember* p = *it;
+ p->Dump(nIndent+1);
+ }
+}
#endif
long ScDPResultDimension::GetMemberCount() const
@@ -3758,6 +3815,16 @@ void ScDPDataDimension::DumpState( const ScDPResultDimension* pRefDim, ScDocumen
lcl_Indent( pDoc, nStartRow, rPos );
}
+
+void ScDPDataDimension::Dump(int nIndent) const
+{
+ std::string aIndent(nIndent*2, ' ');
+ std::cout << aIndent << "-- data dimension '"
+ << (pResultDimension ? pResultDimension->GetName() : OUString()) << "'" << std::endl;
+ ScDPDataMembers::const_iterator it = maMembers.begin(), itEnd = maMembers.end();
+ for (; it != itEnd; ++it)
+ (*it)->Dump(nIndent+1);
+}
#endif
long ScDPDataDimension::GetMemberCount() const
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index 7fdf75cf5550..db21a6be4f0e 100644
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -1171,6 +1171,16 @@ uno::Any SAL_CALL ScDPSource::getPropertyValue( const rtl::OUString& aPropertyNa
return aRet;
}
+#if DEBUG_PIVOT_TABLE
+void ScDPSource::DumpResults() const
+{
+ std::cout << "+++++ column root" << std::endl;
+ pColResRoot->Dump(1);
+ std::cout << "+++++ row root" << std::endl;
+ pRowResRoot->Dump(1);
+}
+#endif
+
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDPSource )
// -----------------------------------------------------------------------
diff --git a/sc/source/core/data/pivot2.cxx b/sc/source/core/data/pivot2.cxx
index eedf727065d1..d4156bb8a054 100644
--- a/sc/source/core/data/pivot2.cxx
+++ b/sc/source/core/data/pivot2.cxx
@@ -39,7 +39,6 @@
#include "stlsheet.hxx"
#if DEBUG_PIVOT_TABLE
-#include <iostream>
using std::cout;
using std::endl;
#endif
diff --git a/sc/source/ui/dbgui/fieldwnd.cxx b/sc/source/ui/dbgui/fieldwnd.cxx
index dce0015bfda7..46579d2c54b6 100644
--- a/sc/source/ui/dbgui/fieldwnd.cxx
+++ b/sc/source/ui/dbgui/fieldwnd.cxx
@@ -62,7 +62,6 @@ const size_t PIVOTFIELD_INVALID = static_cast< size_t >(-1);
const size_t INVALID_INDEX = static_cast<size_t>(-1);
#if DEBUG_PIVOT_TABLE
-#include <iostream>
using std::cout;
using std::endl;
#endif