diff options
author | Eike Rathke <erack@redhat.com> | 2015-03-03 17:55:55 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-03-05 11:44:57 +0100 |
commit | 40a3cec85f91709e302c08626b59fee0381ef261 (patch) | |
tree | 05d72a03370ee99f6cb50bb84c9fcbccb1161a5b /formula | |
parent | rename ScInterpreter::ScTable/s() to ScSheet/s() to follow ocSheet/s (diff) | |
download | core-40a3cec85f91709e302c08626b59fee0381ef261.tar.gz core-40a3cec85f91709e302c08626b59fee0381ef261.zip |
handle ocTableRef same as ocDBArea
Change-Id: Id64556850ef0d44db1ff4dedb41e0e1cb9735b76
Diffstat (limited to 'formula')
-rw-r--r-- | formula/source/core/api/FormulaCompiler.cxx | 9 | ||||
-rw-r--r-- | formula/source/core/api/token.cxx | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index 37231a82686d..e0bed7fa03f9 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -359,6 +359,7 @@ uno::Sequence< sheet::FormulaOpCodeMapEntry > FormulaCompiler::OpCodeMap::create { FormulaMapGroupSpecialOffset::SPACES , ocSpaces } , { FormulaMapGroupSpecialOffset::MAT_REF , ocMatRef } , { FormulaMapGroupSpecialOffset::DB_AREA , ocDBArea } , + /* TODO: { FormulaMapGroupSpecialOffset::TABLE_REF , ocTableRef } , */ { FormulaMapGroupSpecialOffset::MACRO , ocMacro } , { FormulaMapGroupSpecialOffset::COL_ROW_NAME , ocColRowName } }; @@ -1109,6 +1110,10 @@ bool FormulaCompiler::GetToken() { return HandleDbData(); } + else if( mpToken->GetOpCode() == ocTableRef ) + { + /* TODO: return HandleTableRef() */ ; + } return true; } @@ -1123,9 +1128,9 @@ void FormulaCompiler::Factor() OpCode eOp = mpToken->GetOpCode(); if( eOp == ocPush || eOp == ocColRowNameAuto || eOp == ocMatRef || - eOp == ocDBArea + eOp == ocDBArea || eOp == ocTableRef || (!mbJumpCommandReorder && ((eOp == ocName) || (eOp == ocDBArea) - || (eOp == ocColRowName) || (eOp == ocBad))) + || (eOp == ocTableRef) || (eOp == ocColRowName) || (eOp == ocBad))) ) { PutCode( mpToken ); diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index f81b9e7f54b5..180ba0f1af86 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -79,6 +79,7 @@ bool FormulaToken::IsFunction() const { return (eOp != ocPush && eOp != ocBad && eOp != ocColRowName && eOp != ocColRowNameAuto && eOp != ocName && eOp != ocDBArea && + eOp != ocTableRef && (GetByte() != 0 // x parameters || (SC_OPCODE_START_NO_PAR <= eOp && eOp < SC_OPCODE_STOP_NO_PAR) // no parameter || (ocIf == eOp || ocIfError == eOp || ocIfNA == eOp || ocChoose == eOp ) // @ jump commands @@ -388,6 +389,8 @@ bool FormulaTokenArray::AddFormulaToken( sal_Int32 nValue = rToken.Data.get<sal_Int32>(); if ( eOpCode == ocDBArea ) AddToken( formula::FormulaIndexToken( eOpCode, static_cast<sal_uInt16>(nValue) ) ); + else if ( eOpCode == ocTableRef ) + /* TODO: implementation */ ; else if ( eOpCode == ocSpaces ) AddToken( formula::FormulaByteToken( ocSpaces, static_cast<sal_uInt8>(nValue) ) ); else |