diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2011-03-28 15:56:18 +0200 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2011-03-28 15:56:18 +0200 |
commit | d541956811a06ecbd8157f8aefce91b89a55b2aa (patch) | |
tree | 89e3cf3c19dcc72fe509b943183c170435b9cf9e /formula/inc | |
parent | 5908124b1e7a4b11926db0c83e06020e916d72e8 (diff) | |
parent | c9882eed8da6b7e9592cf261f6d4eb0500c39db2 (diff) |
CWS-TOOLING: integrate CWS calc66
Diffstat (limited to 'formula/inc')
-rw-r--r-- | formula/inc/formula/token.hxx | 19 | ||||
-rw-r--r-- | formula/inc/formula/tokenarray.hxx | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/formula/inc/formula/token.hxx b/formula/inc/formula/token.hxx index 30618c67381a..8a94b1005bc8 100644 --- a/formula/inc/formula/token.hxx +++ b/formula/inc/formula/token.hxx @@ -70,6 +70,7 @@ enum StackVarEnum svExternalSingleRef, svExternalDoubleRef, svExternalName, + svSubroutine, // A token with a subroutine token array. svError, // error token svMissing = 0x70, // 0 or "" svSep, // separator, ocSep, ocOpen, ocClose @@ -89,6 +90,7 @@ class FormulaToken; typedef SimpleIntrusiveReference< class FormulaToken > FormulaTokenRef; typedef SimpleIntrusiveReference< const class FormulaToken > FormulaConstTokenRef; +class FormulaTokenArray; class FORMULA_DLLPUBLIC FormulaToken : public IFormulaToken { @@ -364,6 +366,23 @@ public: }; +class FORMULA_DLLPUBLIC FormulaSubroutineToken : public FormulaToken +{ +public: + /** Takes ownership of pArray and deletes it upon destruction! */ + FormulaSubroutineToken( const FormulaTokenArray* pArray ) : + FormulaToken( svSubroutine, ocCall ), mpArray( pArray) {} + FormulaSubroutineToken( const FormulaSubroutineToken& r ); + virtual ~FormulaSubroutineToken(); + virtual FormulaToken* Clone() const { return new FormulaSubroutineToken(*this); } + virtual sal_Bool operator==( const FormulaToken& rToken ) const; + const FormulaTokenArray* GetTokenArray() const; + +private: + const FormulaTokenArray* mpArray; +}; + + class FORMULA_DLLPUBLIC FormulaUnknownToken : public FormulaToken { public: diff --git a/formula/inc/formula/tokenarray.hxx b/formula/inc/formula/tokenarray.hxx index 31d780c81a79..bcd4061f5ac6 100644 --- a/formula/inc/formula/tokenarray.hxx +++ b/formula/inc/formula/tokenarray.hxx @@ -256,6 +256,7 @@ public: void Reset(); const FormulaToken* First(); const FormulaToken* Next(); + const FormulaToken* PeekNextOperator(); bool IsEndOfPath() const; /// if a jump or subroutine path is done bool HasStacked() const { return pCur->pNext != 0; } short GetPC() const { return pCur->nPC; } @@ -276,6 +277,9 @@ public: void Jump( short nStart, short nNext, short nStop = SHRT_MAX ); void Push( const FormulaTokenArray* ); void Pop(); + +private: + const FormulaToken* GetNonEndOfPathToken( short nIdx ) const; }; // ============================================================================= } // formula |