From 593f6ac1064184f1faee60155c412b964f6f86a1 Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Thu, 8 Mar 2012 15:49:31 -0500 Subject: Added hook to create group field data at cache creation time. This is to avoid group data to be added multiple times in case of multiple pivot tables referencing the same pivot cache. --- sc/inc/dpobject.hxx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'sc/inc/dpobject.hxx') diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx index d77fbc13caa0..5f3963d95bd6 100644 --- a/sc/inc/dpobject.hxx +++ b/sc/inc/dpobject.hxx @@ -70,6 +70,7 @@ class ScSheetSourceDesc; struct PivotField; class ScDPCacheTable; class ScDPTableData; +class ScDPDimensionSaveData; struct ScDPServiceDesc { @@ -276,14 +277,14 @@ public: public: SheetCaches(ScDocument* pDoc); bool hasCache(const ScRange& rRange) const; - const ScDPCache* getCache(const ScRange& rRange); + const ScDPCache* getCache(const ScRange& rRange, const ScDPDimensionSaveData* pDimData); size_t size() const; void updateReference( UpdateRefMode eMode, const ScRange& r, SCsCOL nDx, SCsROW nDy, SCsTAB nDz); private: - void updateCache(const ScRange& rRange, std::set& rRefs); + void updateCache(const ScRange& rRange, const ScDPDimensionSaveData* pDimData, std::set& rRefs); bool remove(const ScDPCache* p); }; @@ -299,10 +300,13 @@ public: public: NameCaches(ScDocument* pDoc); bool hasCache(const rtl::OUString& rName) const; - const ScDPCache* getCache(const ::rtl::OUString& rName, const ScRange& rRange); + const ScDPCache* getCache( + const ::rtl::OUString& rName, const ScRange& rRange, const ScDPDimensionSaveData* pDimData); size_t size() const; private: - void updateCache(const rtl::OUString& rName, const ScRange& rRange, std::set& rRefs); + void updateCache( + const rtl::OUString& rName, const ScRange& rRange, + const ScDPDimensionSaveData* pDimData, std::set& rRefs); bool remove(const ScDPCache* p); }; @@ -335,14 +339,16 @@ public: public: DBCaches(ScDocument* pDoc); bool hasCache(sal_Int32 nSdbType, const rtl::OUString& rDBName, const rtl::OUString& rCommand) const; - const ScDPCache* getCache(sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand); + const ScDPCache* getCache( + sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand, + const ScDPDimensionSaveData* pDimData); private: com::sun::star::uno::Reference createRowSet( sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand); void updateCache(sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand, - std::set& rRefs); + const ScDPDimensionSaveData* pDimData, std::set& rRefs); bool remove(const ScDPCache* p); }; -- cgit