formula/source/core/api/FormulaCompiler.cxx | 21 +++++++++++++++++---- include/formula/FormulaCompiler.hxx | 1 + 2 files changed, 18 insertions(+), 4 deletions(-)
New commits: commit 50d100f4acb2e62bac8b01c8071d089c6171843f Author: Kohei Yoshida <[email protected]> Date: Thu May 1 15:16:27 2014 -0400 Make a separate method to detemine if an opcode is a jump command. Jump to make it a bit more pleasant to follow the code... Change-Id: Ie9bef122e8bb63a2d8cc54acc9c8ddc9ac9a2e8a diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index ce36065..58a8961 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -805,6 +805,21 @@ bool FormulaCompiler::IsOpCodeVolatile( OpCode eOp ) return bRet; } +bool FormulaCompiler::IsOpCodeJumpCommand( OpCode eOp ) +{ + switch (eOp) + { + case ocIf: + case ocIfError: + case ocIfNA: + case ocChose: + return true; + default: + ; + } + return false; +} + // Remove quotes, escaped quotes are unescaped. bool FormulaCompiler::DeQuote( OUString& rStr ) { @@ -1241,9 +1256,7 @@ void FormulaCompiler::Factor() || eOp == ocOr || eOp == ocBad || ( eOp >= ocInternalBegin && eOp <= ocInternalEnd ) - || ( bCompileForFAP - && ( eOp == ocIf || eOp == ocIfError || eOp == ocIfNA || eOp == ocChose ) ) - ) + || (bCompileForFAP && IsOpCodeJumpCommand(eOp))) { pFacToken = mpToken; OpCode eMyLastOp = eOp; @@ -1291,7 +1304,7 @@ void FormulaCompiler::Factor() pFacToken->SetByte( nSepCount ); PutCode( pFacToken ); } - else if (eOp == ocIf || eOp == ocIfError || eOp == ocIfNA || eOp == ocChose) + else if (IsOpCodeJumpCommand(eOp)) { // the PC counters are -1 pFacToken = mpToken; diff --git a/include/formula/FormulaCompiler.hxx b/include/formula/FormulaCompiler.hxx index a38798a..9df22ec 100644 --- a/include/formula/FormulaCompiler.hxx +++ b/include/formula/FormulaCompiler.hxx @@ -231,6 +231,7 @@ public: { bCompileForFAP = bVal; bIgnoreErrors = bVal; } static bool IsOpCodeVolatile( OpCode eOp ); + static bool IsOpCodeJumpCommand( OpCode eOp ); static bool DeQuote( OUString& rStr ); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
