[Libreoffice-commits] core.git: sc/inc sc/source

Noel Grandin noel.grandin at collabora.co.uk
Wed Oct 12 11:38:32 UTC 2016


 sc/inc/formularesult.hxx              |    8 +++++---
 sc/source/core/tool/formularesult.cxx |   24 ++++++++++++------------
 2 files changed, 17 insertions(+), 15 deletions(-)

New commits:
commit 0780e58e57557d83362ec3a431415f1a4c90b729
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Oct 12 13:32:23 2016 +0200

    Revert "convert MULTILINE constants to scoped enum"
    
    This reverts commit b5e352e5117fffaca8cfddde426079708a208258.
    
    GCC4.8 doesn't like the combination of a scoped enum and
    storing such a type in a bitfield. And it has a bug
    (still present in its current master) which prevents us from
    suppressing the warning nicely.
    
    Change-Id: I8c73e4c5175cfc43a1b8251ad85d262ad89c4f4d

diff --git a/sc/inc/formularesult.hxx b/sc/inc/formularesult.hxx
index 9150ab9..b19b001 100644
--- a/sc/inc/formularesult.hxx
+++ b/sc/inc/formularesult.hxx
@@ -47,9 +47,11 @@ struct FormulaResultValue
     and memory consumption. */
 class ScFormulaResult
 {
-    enum class Multiline {
-        Unknown, False, True
-    };
+    typedef unsigned char Multiline;
+    static const Multiline MULTILINE_UNKNOWN = 0;
+    static const Multiline MULTILINE_FALSE   = 1;
+    static const Multiline MULTILINE_TRUE    = 2;
+
     // Clone token if the 16-bit only reference counter is nearing it's
     // capacity during fill or copy&paste, leaving 4k for temporary passing
     // around. (That should be enough for all times (TM) ;-)
diff --git a/sc/source/core/tool/formularesult.cxx b/sc/source/core/tool/formularesult.cxx
index 417777b..2c1b646 100644
--- a/sc/source/core/tool/formularesult.cxx
+++ b/sc/source/core/tool/formularesult.cxx
@@ -22,7 +22,7 @@ FormulaResultValue::FormulaResultValue( FormulaError nErr ) : meType(Error), mfV
 ScFormulaResult::ScFormulaResult() :
     mpToken(nullptr), mnError(FormulaError::NONE), mbToken(true),
     mbEmpty(false), mbEmptyDisplayedAsString(false),
-    meMultiline(Multiline::Unknown) {}
+    meMultiline(MULTILINE_UNKNOWN) {}
 
 ScFormulaResult::ScFormulaResult( const ScFormulaResult & r ) :
     mnError( r.mnError), mbToken( r.mbToken),
@@ -56,7 +56,7 @@ ScFormulaResult::ScFormulaResult( const ScFormulaResult & r ) :
 
 ScFormulaResult::ScFormulaResult( const formula::FormulaToken* p ) :
     mnError(FormulaError::NONE), mbToken(false), mbEmpty(false), mbEmptyDisplayedAsString(false),
-    meMultiline(Multiline::Unknown)
+    meMultiline(MULTILINE_UNKNOWN)
 {
     SetToken( p);
 }
@@ -72,7 +72,7 @@ void ScFormulaResult::ResetToDefaults()
     mnError = FormulaError::NONE;
     mbEmpty = false;
     mbEmptyDisplayedAsString = false;
-    meMultiline = Multiline::Unknown;
+    meMultiline = MULTILINE_UNKNOWN;
 }
 
 void ScFormulaResult::ResolveToken( const formula::FormulaToken * p )
@@ -93,20 +93,20 @@ void ScFormulaResult::ResolveToken( const formula::FormulaToken * p )
                 mbToken = false;
                 // set in case mnError is 0 now, which shouldn't happen but ...
                 mfValue = 0.0;
-                meMultiline = Multiline::False;
+                meMultiline = MULTILINE_FALSE;
                 break;
             case formula::svEmptyCell:
                 mbEmpty = true;
                 mbEmptyDisplayedAsString = static_cast<const ScEmptyCellToken*>(p)->IsDisplayedAsString();
                 p->DecRef();
                 mbToken = false;
-                meMultiline = Multiline::False;
+                meMultiline = MULTILINE_FALSE;
                 break;
             case formula::svDouble:
                 mfValue = p->GetDouble();
                 p->DecRef();
                 mbToken = false;
-                meMultiline = Multiline::False;
+                meMultiline = MULTILINE_FALSE;
                 break;
             default:
                 mpToken = p;
@@ -212,7 +212,7 @@ void ScFormulaResult::SetDouble( double f )
             mpToken->DecRef();
         mfValue = f;
         mbToken = false;
-        meMultiline = Multiline::False;
+        meMultiline = MULTILINE_FALSE;
     }
 }
 
@@ -300,15 +300,15 @@ bool ScFormulaResult::IsValueNoError() const
 
 bool ScFormulaResult::IsMultiline() const
 {
-    if (meMultiline == Multiline::Unknown)
+    if (meMultiline == MULTILINE_UNKNOWN)
     {
         svl::SharedString aStr = GetString();
         if (!aStr.isEmpty() && aStr.getString().indexOf('\n') != -1)
-            const_cast<ScFormulaResult*>(this)->meMultiline = Multiline::True;
+            const_cast<ScFormulaResult*>(this)->meMultiline = MULTILINE_TRUE;
         else
-            const_cast<ScFormulaResult*>(this)->meMultiline = Multiline::False;
+            const_cast<ScFormulaResult*>(this)->meMultiline = MULTILINE_FALSE;
     }
-    return meMultiline == Multiline::True;
+    return meMultiline == MULTILINE_TRUE;
 }
 
 bool ScFormulaResult::GetErrorOrDouble( FormulaError& rErr, double& rVal ) const
@@ -513,7 +513,7 @@ void ScFormulaResult::SetHybridDouble( double f )
     {
         mfValue = f;
         mbToken = false;
-        meMultiline = Multiline::False;
+        meMultiline = MULTILINE_FALSE;
     }
 }
 


More information about the Libreoffice-commits mailing list