summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-05-23 21:55:30 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-05-23 22:17:24 -0400
commitf2873593d7aff304dfc6ed68f517a5b8f3fe3332 (patch)
tree34a63abcfa863e25c75031d64a1b0cd5d8528c28
parentUse scoped_ptr for this. (diff)
downloadcore-private/kohei/find-replace-all-perf.tar.gz
core-private/kohei/find-replace-all-perf.zip
Simple context that only contains column block position set. private/kohei/find-replace-all-perf
And use it as the base class for various context classes containing column block position set. Change-Id: I4e9fec9d9db51fc06b2ede807100a82dc4a73dd3
-rw-r--r--sc/Library_sc.mk1
-rw-r--r--sc/inc/clipcontext.hxx25
-rw-r--r--sc/inc/columnblockcontext.hxx46
-rw-r--r--sc/inc/listenercontext.hxx15
-rw-r--r--sc/source/core/data/clipcontext.cxx18
-rw-r--r--sc/source/core/data/columnblockcontext.cxx36
-rw-r--r--sc/source/core/data/listenercontext.cxx34
7 files changed, 102 insertions, 73 deletions
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 9b55aa4380b3..4129e478df7d 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -107,6 +107,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/core/data/column2 \
sc/source/core/data/column3 \
sc/source/core/data/column4 \
+ sc/source/core/data/columnblockcontext \
sc/source/core/data/columniterator \
sc/source/core/data/columnset \
sc/source/core/data/columnspanset \
diff --git a/sc/inc/clipcontext.hxx b/sc/inc/clipcontext.hxx
index 7791a938fddc..7b82f13b5d58 100644
--- a/sc/inc/clipcontext.hxx
+++ b/sc/inc/clipcontext.hxx
@@ -12,6 +12,7 @@
#include "address.hxx"
#include "cellvalue.hxx"
+#include <columnblockcontext.hxx>
#include <vector>
#include <boost/unordered_map.hpp>
@@ -26,23 +27,7 @@ class ScConditionalFormatList;
namespace sc {
-struct ColumnBlockPosition;
-class ColumnBlockPositionSet;
-
-class ClipContextBase : boost::noncopyable
-{
- boost::scoped_ptr<ColumnBlockPositionSet> mpSet;
-
- ClipContextBase(); // disabled
-
-public:
- ClipContextBase(ScDocument& rDoc);
- virtual ~ClipContextBase();
-
- ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
-};
-
-class CopyFromClipContext : public ClipContextBase
+class CopyFromClipContext : public ColumnBlockContext
{
SCCOL mnDestCol1;
SCCOL mnDestCol2;
@@ -116,7 +101,7 @@ public:
bool isDateCell( const ScColumn& rCol, SCROW nRow ) const;
};
-class CopyToClipContext : public ClipContextBase
+class CopyToClipContext : public ColumnBlockContext
{
bool mbKeepScenarioFlags:1;
bool mbCloneNotes:1;
@@ -131,14 +116,14 @@ public:
bool isCloneNotes() const;
};
-class CopyToDocContext : public ClipContextBase
+class CopyToDocContext : public ColumnBlockContext
{
public:
CopyToDocContext(ScDocument& rDoc);
virtual ~CopyToDocContext();
};
-class MixDocContext : public ClipContextBase
+class MixDocContext : public ColumnBlockContext
{
public:
MixDocContext(ScDocument& rDoc);
diff --git a/sc/inc/columnblockcontext.hxx b/sc/inc/columnblockcontext.hxx
new file mode 100644
index 000000000000..1a188b600e80
--- /dev/null
+++ b/sc/inc/columnblockcontext.hxx
@@ -0,0 +1,46 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef SC_COLUMNBLOCKCONTEXT_HXX
+#define SC_COLUMNBLOCKCONTEXT_HXX
+
+#include <types.hxx>
+
+#include <boost/shared_ptr.hpp>
+#include <boost/noncopyable.hpp>
+
+class ScDocument;
+
+namespace sc {
+
+struct ColumnBlockPosition;
+class ColumnBlockPositionSet;
+
+class ColumnBlockContext : boost::noncopyable
+{
+ ScDocument& mrDoc;
+ boost::shared_ptr<ColumnBlockPositionSet> mpSet;
+
+ ColumnBlockContext(); // disabled
+
+public:
+ ColumnBlockContext(ScDocument& rDoc);
+ ColumnBlockContext(ScDocument& rDoc, const boost::shared_ptr<ColumnBlockPositionSet>& pSet);
+
+ virtual ~ColumnBlockContext();
+
+ ScDocument& getDoc();
+ ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/listenercontext.hxx b/sc/inc/listenercontext.hxx
index 7d66f9248ad6..b55346577a1f 100644
--- a/sc/inc/listenercontext.hxx
+++ b/sc/inc/listenercontext.hxx
@@ -12,6 +12,7 @@
#include "address.hxx"
#include "columnspanset.hxx"
+#include <columnblockcontext.hxx>
#include <boost/noncopyable.hpp>
#include <boost/scoped_ptr.hpp>
@@ -25,23 +26,16 @@ namespace sc {
struct ColumnBlockPosition;
class ColumnBlockPositionSet;
-class StartListeningContext : boost::noncopyable
+class StartListeningContext : public ColumnBlockContext
{
- ScDocument& mrDoc;
- boost::shared_ptr<ColumnBlockPositionSet> mpSet;
public:
StartListeningContext(ScDocument& rDoc);
StartListeningContext(ScDocument& rDoc, const boost::shared_ptr<ColumnBlockPositionSet>& pSet);
- ScDocument& getDoc();
-
- ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
};
-class EndListeningContext : boost::noncopyable
+class EndListeningContext : public ColumnBlockContext
{
- ScDocument& mrDoc;
ColumnSpanSet maSet;
- boost::shared_ptr<ColumnBlockPositionSet> mpPosSet;
ScTokenArray* mpOldCode;
ScAddress maPosDelta; // Add this to get the old position prior to the move.
@@ -51,12 +45,9 @@ public:
void setPositionDelta( const ScAddress& rDelta );
- ScDocument& getDoc();
ScTokenArray* getOldCode();
ScAddress getOldPosition( const ScAddress& rPos ) const;
- ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
-
void addEmptyBroadcasterPosition(SCTAB nTab, SCCOL nCol, SCROW nRow);
void purgeEmptyBroadcasters();
};
diff --git a/sc/source/core/data/clipcontext.cxx b/sc/source/core/data/clipcontext.cxx
index c70d9d48de2b..5168458decc3 100644
--- a/sc/source/core/data/clipcontext.cxx
+++ b/sc/source/core/data/clipcontext.cxx
@@ -17,20 +17,10 @@
namespace sc {
-ClipContextBase::ClipContextBase(ScDocument& rDoc) :
- mpSet(new ColumnBlockPositionSet(rDoc)) {}
-
-ClipContextBase::~ClipContextBase() {}
-
-ColumnBlockPosition* ClipContextBase::getBlockPosition(SCTAB nTab, SCCOL nCol)
-{
- return mpSet->getBlockPosition(nTab, nCol);
-}
-
CopyFromClipContext::CopyFromClipContext(ScDocument& rDoc,
ScDocument* pRefUndoDoc, ScDocument* pClipDoc, sal_uInt16 nInsertFlag,
bool bAsLink, bool bSkipAttrForEmptyCells) :
- ClipContextBase(rDoc),
+ ColumnBlockContext(rDoc),
mnDestCol1(-1), mnDestCol2(-1),
mnDestRow1(-1), mnDestRow2(-1),
mnTabStart(-1), mnTabEnd(-1),
@@ -175,7 +165,7 @@ bool CopyFromClipContext::isDateCell( const ScColumn& rCol, SCROW nRow ) const
CopyToClipContext::CopyToClipContext(
ScDocument& rDoc, bool bKeepScenarioFlags, bool bCloneNotes) :
- ClipContextBase(rDoc), mbKeepScenarioFlags(bKeepScenarioFlags), mbCloneNotes(bCloneNotes) {}
+ ColumnBlockContext(rDoc), mbKeepScenarioFlags(bKeepScenarioFlags), mbCloneNotes(bCloneNotes) {}
CopyToClipContext::~CopyToClipContext() {}
@@ -189,10 +179,10 @@ bool CopyToClipContext::isCloneNotes() const
return mbCloneNotes;
}
-CopyToDocContext::CopyToDocContext(ScDocument& rDoc) : ClipContextBase(rDoc) {}
+CopyToDocContext::CopyToDocContext(ScDocument& rDoc) : ColumnBlockContext(rDoc) {}
CopyToDocContext::~CopyToDocContext() {}
-MixDocContext::MixDocContext(ScDocument& rDoc) : ClipContextBase(rDoc) {}
+MixDocContext::MixDocContext(ScDocument& rDoc) : ColumnBlockContext(rDoc) {}
MixDocContext::~MixDocContext() {}
}
diff --git a/sc/source/core/data/columnblockcontext.cxx b/sc/source/core/data/columnblockcontext.cxx
new file mode 100644
index 000000000000..8ae8f1df8dba
--- /dev/null
+++ b/sc/source/core/data/columnblockcontext.cxx
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <columnblockcontext.hxx>
+#include <mtvelements.hxx>
+
+namespace sc {
+
+ColumnBlockContext::ColumnBlockContext(ScDocument& rDoc) :
+ mrDoc(rDoc), mpSet(new ColumnBlockPositionSet(rDoc)) {}
+
+ColumnBlockContext::ColumnBlockContext(
+ ScDocument& rDoc, const boost::shared_ptr<ColumnBlockPositionSet>& pSet) :
+ mrDoc(rDoc), mpSet(pSet) {}
+
+ColumnBlockContext::~ColumnBlockContext() {}
+
+ScDocument& ColumnBlockContext::getDoc()
+{
+ return mrDoc;
+}
+
+ColumnBlockPosition* ColumnBlockContext::getBlockPosition(SCTAB nTab, SCCOL nCol)
+{
+ return mpSet->getBlockPosition(nTab, nCol);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/listenercontext.cxx b/sc/source/core/data/listenercontext.cxx
index dcdffac65710..940787027048 100644
--- a/sc/source/core/data/listenercontext.cxx
+++ b/sc/source/core/data/listenercontext.cxx
@@ -14,41 +14,26 @@
namespace sc {
StartListeningContext::StartListeningContext(ScDocument& rDoc) :
- mrDoc(rDoc), mpSet(new ColumnBlockPositionSet(rDoc)) {}
+ ColumnBlockContext(rDoc) {}
StartListeningContext::StartListeningContext(
ScDocument& rDoc, const boost::shared_ptr<ColumnBlockPositionSet>& pSet) :
- mrDoc(rDoc), mpSet(pSet) {}
-
-ScDocument& StartListeningContext::getDoc()
-{
- return mrDoc;
-}
-
-ColumnBlockPosition* StartListeningContext::getBlockPosition(SCTAB nTab, SCCOL nCol)
-{
- return mpSet->getBlockPosition(nTab, nCol);
-}
+ ColumnBlockContext(rDoc, pSet) {}
EndListeningContext::EndListeningContext(ScDocument& rDoc, ScTokenArray* pOldCode) :
- mrDoc(rDoc), maSet(false), mpPosSet(new ColumnBlockPositionSet(rDoc)),
- mpOldCode(pOldCode), maPosDelta(0,0,0) {}
+ ColumnBlockContext(rDoc),
+ maSet(false), mpOldCode(pOldCode), maPosDelta(0,0,0) {}
EndListeningContext::EndListeningContext(
ScDocument& rDoc, const boost::shared_ptr<ColumnBlockPositionSet>& pSet, ScTokenArray* pOldCode) :
- mrDoc(rDoc), maSet(false), mpPosSet(pSet),
- mpOldCode(pOldCode), maPosDelta(0,0,0) {}
+ ColumnBlockContext(rDoc, pSet),
+ maSet(false), mpOldCode(pOldCode), maPosDelta(0,0,0) {}
void EndListeningContext::setPositionDelta( const ScAddress& rDelta )
{
maPosDelta = rDelta;
}
-ScDocument& EndListeningContext::getDoc()
-{
- return mrDoc;
-}
-
ScTokenArray* EndListeningContext::getOldCode()
{
return mpOldCode;
@@ -63,11 +48,6 @@ ScAddress EndListeningContext::getOldPosition( const ScAddress& rPos ) const
return aOldPos;
}
-ColumnBlockPosition* EndListeningContext::getBlockPosition(SCTAB nTab, SCCOL nCol)
-{
- return mpPosSet->getBlockPosition(nTab, nCol);
-}
-
void EndListeningContext::addEmptyBroadcasterPosition(SCTAB nTab, SCCOL nCol, SCROW nRow)
{
maSet.set(nTab, nCol, nRow, true);
@@ -75,7 +55,7 @@ void EndListeningContext::addEmptyBroadcasterPosition(SCTAB nTab, SCCOL nCol, SC
void EndListeningContext::purgeEmptyBroadcasters()
{
- PurgeListenerAction aAction(mrDoc);
+ PurgeListenerAction aAction(getDoc());
maSet.executeAction(aAction);
}