[Libreoffice-commits] core.git: formula/source include/formula

Kohei Yoshida kohei.yoshida at collabora.com
Thu May 1 12:29:06 PDT 2014


 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 <kohei.yoshida at collabora.com>
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 );
 


More information about the Libreoffice-commits mailing list