[Libreoffice-commits] .: sc/inc sc/source

Kohei Yoshida kohei at kemper.freedesktop.org
Sat May 28 17:44:22 PDT 2011


 sc/inc/chartarr.hxx                  |   36 ++++++++-------
 sc/source/core/data/documen5.cxx     |    9 +--
 sc/source/core/tool/chartarr.cxx     |   79 +++++++++++++++++++----------------
 sc/source/filter/starcalc/scfobj.cxx |    2 
 4 files changed, 69 insertions(+), 57 deletions(-)

New commits:
commit 3c471f8d816e173a322b114aea1d52d32b4c5959
Author: Kohei Yoshida <kyoshida at novell.com>
Date:   Sat May 28 20:43:16 2011 -0400

    Removed dependency on ScCollection from ScChartCollection.

diff --git a/sc/inc/chartarr.hxx b/sc/inc/chartarr.hxx
index 8fe2480..d288d88 100644
--- a/sc/inc/chartarr.hxx
+++ b/sc/inc/chartarr.hxx
@@ -35,6 +35,8 @@
 #include "rangelst.hxx"
 #include "chartpos.hxx"
 
+#include <boost/ptr_container/ptr_vector.hpp>
+
 class ScAddress;
 class Table;
 class ScDocument;
@@ -69,7 +71,7 @@ public:
 };
 
 
-class SC_DLLPUBLIC ScChartArray : public ScDataObject				// only parameter-struct
+class SC_DLLPUBLIC ScChartArray				// only parameter-struct
 {
     ::rtl::OUString aName;
     ScDocument*	pDocument;
@@ -81,15 +83,13 @@ private:
     ScMemChart* CreateMemChartMulti();
 public:
     ScChartArray( ScDocument* pDoc, SCTAB nTab,
-                    SCCOL nStartColP, SCROW nStartRowP,
-                    SCCOL nEndColP, SCROW nEndRowP,
-                    const ::rtl::OUString& rChartName );
+                  SCCOL nStartColP, SCROW nStartRowP,
+                  SCCOL nEndColP, SCROW nEndRowP,
+                  const ::rtl::OUString& rChartName );
     ScChartArray( ScDocument* pDoc, const ScRangeListRef& rRangeList,
-                    const ::rtl::OUString& rChartName );
+                  const ::rtl::OUString& rChartName );
     ScChartArray( const ScChartArray& rArr );
-
-    virtual	~ScChartArray();
-    virtual	ScDataObject* Clone() const;
+    ~ScChartArray();
 
     const ScRangeListRef&	GetRangeList() const { return aPositioner.GetRangeList(); }
     void	SetRangeList( const ScRangeListRef& rNew ) { aPositioner.SetRangeList(rNew); }
@@ -108,16 +108,20 @@ public:
     ScMemChart* CreateMemChart();
 };
 
-class ScChartCollection : public ScCollection
+class ScChartCollection
 {
+    typedef ::boost::ptr_vector<ScChartArray> DataType;
+    DataType maData;
 public:
-    ScChartCollection() : ScCollection( 4,4 ) {}
-    ScChartCollection( const ScChartCollection& rColl ):
-            ScCollection( rColl ) {}
-
-    virtual	ScDataObject*	Clone() const;
-    ScChartArray*		operator[](sal_uInt16 nIndex) const
-                        { return (ScChartArray*)At(nIndex); }
+    ScChartCollection();
+    ScChartCollection(const ScChartCollection& rColl);
+
+    SC_DLLPUBLIC void push_back(ScChartArray* p);
+    void clear();
+    size_t size() const;
+    bool empty() const;
+    ScChartArray* operator[](size_t nIndex);
+    const ScChartArray* operator[](size_t nIndex) const;
 
     bool operator==(const ScChartCollection& rCmp) const;
 };
diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx
index fad0033..a983a24 100644
--- a/sc/source/core/data/documen5.cxx
+++ b/sc/source/core/data/documen5.cxx
@@ -130,11 +130,10 @@ void ScDocument::UpdateAllCharts()
     if ( !pDrawLayer || !pShell )
         return;
 
-    sal_uInt16 nDataCount = pChartCollection->GetCount();
-    if ( !nDataCount )
+    if (pChartCollection->empty())
         return ;		// nothing to do
 
-    sal_uInt16 nPos;
+    size_t nDataCount = pChartCollection->size();
 
     for (SCTAB nTab=0; nTab<=MAXTAB; nTab++)
     {
@@ -155,7 +154,7 @@ void ScDocument::UpdateAllCharts()
                     {
                         ::rtl::OUString aIPName = ((SdrOle2Obj*)pObject)->GetPersistName();
 
-                        for (nPos=0; nPos<nDataCount; nPos++)
+                        for (size_t nPos = 0; nPos < nDataCount; ++nPos)
                         {
                             ScChartArray* pChartObj = (*pChartCollection)[nPos];
                             if (pChartObj->GetName() == aIPName)
@@ -201,7 +200,7 @@ void ScDocument::UpdateAllCharts()
         }
     }
 
-    pChartCollection->FreeAll();
+    pChartCollection->clear();
 }
 
 sal_Bool ScDocument::HasChartAtPoint( SCTAB nTab, const Point& rPos, String* pName )
diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx
index 8cb2175..51524bf 100644
--- a/sc/source/core/tool/chartarr.cxx
+++ b/sc/source/core/tool/chartarr.cxx
@@ -91,32 +91,20 @@ ScChartArray::ScChartArray( ScDocument* pDoc, SCTAB nTab,
 {
 }
 
-ScChartArray::ScChartArray( ScDocument* pDoc, const ScRangeListRef& rRangeList,
-                    const OUString& rChartName ) :
-        aName( rChartName ),
-        pDocument( pDoc ),
-        aPositioner(pDoc, rRangeList),
-        bValid( true )
-{
-}
+ScChartArray::ScChartArray(
+    ScDocument* pDoc, const ScRangeListRef& rRangeList, const OUString& rChartName ) :
+    aName( rChartName ),
+    pDocument( pDoc ),
+    aPositioner(pDoc, rRangeList),
+    bValid( true ) {}
 
 ScChartArray::ScChartArray( const ScChartArray& rArr ) :
-        ScDataObject(),
-        aName(rArr.aName),
-        pDocument(rArr.pDocument),
-        aPositioner(rArr.aPositioner),
-        bValid(rArr.bValid)
-{
-}
+    aName(rArr.aName),
+    pDocument(rArr.pDocument),
+    aPositioner(rArr.aPositioner),
+    bValid(rArr.bValid) {}
 
-ScChartArray::~ScChartArray()
-{
-}
-
-ScDataObject* ScChartArray::Clone() const
-{
-    return new ScChartArray(*this);
-}
+ScChartArray::~ScChartArray() {}
 
 bool ScChartArray::operator==(const ScChartArray& rCmp) const
 {
@@ -517,26 +505,47 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
 #pragma optimize("",on)
 #endif
 
+ScChartCollection::ScChartCollection() {}
+ScChartCollection::ScChartCollection(const ScChartCollection& r) :
+    maData(r.maData) {}
 
-//
-//				Collection
-//
+void ScChartCollection::push_back(ScChartArray* p)
+{
+    maData.push_back(p);
+}
 
-ScDataObject*	ScChartCollection::Clone() const
+void ScChartCollection::clear()
 {
-    return new ScChartCollection(*this);
+    maData.clear();
 }
 
-bool ScChartCollection::operator==(const ScChartCollection& rCmp) const
+size_t ScChartCollection::size() const
 {
-    if (nCount != rCmp.nCount)
-        return false;
+    return maData.size();
+}
 
-    for (sal_uInt16 i=0; i<nCount; i++)
-        if (!((*(const ScChartArray*)pItems[i]) == (*(const ScChartArray*)rCmp.pItems[i])))
-            return false;
+bool ScChartCollection::empty() const
+{
+    return maData.empty();
+}
 
-    return true;
+ScChartArray* ScChartCollection::operator[](size_t nIndex)
+{
+    if (maData.size() <= nIndex)
+        return NULL;
+    return &maData[nIndex];
+}
+
+const ScChartArray* ScChartCollection::operator[](size_t nIndex) const
+{
+    if (maData.size() <= nIndex)
+        return NULL;
+    return &maData[nIndex];
+}
+
+bool ScChartCollection::operator==(const ScChartCollection& rCmp) const
+{
+    return maData == rCmp.maData;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/starcalc/scfobj.cxx b/sc/source/filter/starcalc/scfobj.cxx
index 1b9c947..956feec 100644
--- a/sc/source/filter/starcalc/scfobj.cxx
+++ b/sc/source/filter/starcalc/scfobj.cxx
@@ -97,7 +97,7 @@ void Sc10InsertObject::InsertChart( ScDocument* pDoc, SCTAB nDestTab, const Rect
             // Sc10Import dtor geholt.
 
         ScChartCollection* pColl = pDoc->GetChartCollection();
-        pColl->Insert( new ScChartArray( pDoc, nSrcTab, static_cast<SCCOL>(nX1), static_cast<SCROW>(nY1), static_cast<SCCOL>(nX2), static_cast<SCROW>(nY2), aName ) );
+        pColl->push_back( new ScChartArray( pDoc, nSrcTab, static_cast<SCCOL>(nX1), static_cast<SCROW>(nY1), static_cast<SCCOL>(nX2), static_cast<SCROW>(nY2), aName ) );
     }
 }
 


More information about the Libreoffice-commits mailing list