summaryrefslogtreecommitdiff
path: root/formula
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-03-03 17:55:55 +0100
committerEike Rathke <erack@redhat.com>2015-03-05 11:44:57 +0100
commit40a3cec85f91709e302c08626b59fee0381ef261 (patch)
tree05d72a03370ee99f6cb50bb84c9fcbccb1161a5b /formula
parent8ee20e2691aa6f67c67d40c61a8cd1569458b5a8 (diff)
handle ocTableRef same as ocDBArea
Change-Id: Id64556850ef0d44db1ff4dedb41e0e1cb9735b76
Diffstat (limited to 'formula')
-rw-r--r--formula/source/core/api/FormulaCompiler.cxx9
-rw-r--r--formula/source/core/api/token.cxx3
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