summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-04-16 22:56:47 +0200
committerEike Rathke <erack@redhat.com>2015-04-17 01:11:37 +0200
commitccecacf002eb367bbe72eee73fb1d0f89aa2653f (patch)
tree9072c48923451715df5e2703eb1417bb6179ea3c /sc
parent95f62a57efec6bc38d8c59d95e5df1e9dc228038 (diff)
TableRef: prepare ScTableRefToken to hold the resulting area in RPN
Change-Id: Iaf76cf298dd2f9f9b8d9fb56ecb9e7b29fdc6ca1
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/token.hxx3
-rw-r--r--sc/source/core/tool/token.cxx17
2 files changed, 20 insertions, 0 deletions
diff --git a/sc/inc/token.hxx b/sc/inc/token.hxx
index 6dfb23622160..4662074ce089 100644
--- a/sc/inc/token.hxx
+++ b/sc/inc/token.hxx
@@ -236,9 +236,12 @@ public:
Item GetItem() const;
void AddItem( Item );
+ void SetAreaRefRPN( formula::FormulaToken* pToken );
+ const formula::FormulaToken* GetAreaRefRPN() const;
private:
+ formula::FormulaTokenRef mxAreaRefRPN; ///< resulting RPN area
sal_uInt16 mnIndex; ///< index into table / database range collection
Item meItem;
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 7eeb037d30f5..6612b643e12a 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -866,6 +866,16 @@ void ScTableRefToken::AddItem( ScTableRefToken::Item eItem )
meItem = static_cast<ScTableRefToken::Item>(meItem | eItem);
}
+void ScTableRefToken::SetAreaRefRPN( formula::FormulaToken* pToken )
+{
+ mxAreaRefRPN = pToken;
+}
+
+const formula::FormulaToken* ScTableRefToken::GetAreaRefRPN() const
+{
+ return mxAreaRefRPN.get();
+}
+
bool ScTableRefToken::operator==( const FormulaToken& r ) const
{
if ( !FormulaToken::operator==(r) )
@@ -881,6 +891,13 @@ bool ScTableRefToken::operator==( const FormulaToken& r ) const
if (meItem != p->GetItem())
return false;
+ if (!mxAreaRefRPN && !p->mxAreaRefRPN)
+ ; // nothing
+ else if (!mxAreaRefRPN || !p->mxAreaRefRPN)
+ return false;
+ else if (!(*mxAreaRefRPN == *(p->mxAreaRefRPN)))
+ return false;
+
return true;
}