diff options
author | Eike Rathke <erack@redhat.com> | 2015-04-16 22:56:47 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-04-17 01:11:37 +0200 |
commit | ccecacf002eb367bbe72eee73fb1d0f89aa2653f (patch) | |
tree | 9072c48923451715df5e2703eb1417bb6179ea3c /sc | |
parent | 95f62a57efec6bc38d8c59d95e5df1e9dc228038 (diff) |
TableRef: prepare ScTableRefToken to hold the resulting area in RPN
Change-Id: Iaf76cf298dd2f9f9b8d9fb56ecb9e7b29fdc6ca1
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/token.hxx | 3 | ||||
-rw-r--r-- | sc/source/core/tool/token.cxx | 17 |
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; } |