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

Eike Rathke erack at redhat.com
Tue May 9 22:40:56 UTC 2017


 formula/source/core/api/FormulaCompiler.cxx |   18 +++++++----
 formula/source/core/api/token.cxx           |   30 +++++++++++--------
 include/formula/FormulaCompiler.hxx         |    8 +++--
 include/formula/token.hxx                   |   43 ++++++++++++++--------------
 sc/inc/compiler.hxx                         |    6 +--
 sc/source/core/tool/compiler.cxx            |    7 +---
 sc/source/core/tool/token.cxx               |    4 +-
 sc/source/ui/unoobj/linkuno.cxx             |   25 +++++++---------
 8 files changed, 76 insertions(+), 65 deletions(-)

New commits:
commit 1cf44947161d8fff6e3edb3f7a1dd01c81963b42
Author: Eike Rathke <erack at redhat.com>
Date:   Tue May 9 23:30:39 2017 +0200

    Hold ParamClass at FormulaByteToken instead of bool, tdf#107724 prep
    
    * change IsInForceArray() to GetInForceArray()
    * add IsInForceArray() to keep previous functionality
    
    Change-Id: I64c891486e548a66539646846a4691a213c783ac

diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index 039b41a0d3ea..60ad7927c327 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -2552,18 +2552,18 @@ void FormulaCompiler::ForceArrayOperator( FormulaTokenRef& rCurr )
     if (!(rCurr->GetOpCode() != ocPush && (rCurr->GetType() == svByte || rCurr->GetType() == svJump)))
         return;
 
-    if (pCurrentFactorToken->IsInForceArray())
+    formula::ParamClass eType = pCurrentFactorToken->GetInForceArray();
+    if (eType == formula::ParamClass::ForceArray || eType == formula::ParamClass::ReferenceOrForceArray)
     {
-        rCurr->SetInForceArray( true);
+        rCurr->SetInForceArray( eType);
         return;
     }
 
     if (nCurrentFactorParam > 0)
     {
-        formula::ParamClass eType = GetForceArrayParameter( pCurrentFactorToken.get(),
-                static_cast<sal_uInt8>(nCurrentFactorParam - 1));
+        eType = GetForceArrayParameter( pCurrentFactorToken.get(), static_cast<sal_uInt8>(nCurrentFactorParam - 1));
         if (eType == ParamClass::ForceArray || eType == ParamClass::ReferenceOrForceArray)
-            rCurr->SetInForceArray( true);
+            rCurr->SetInForceArray( eType);
     }
 }
 
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 2ecec86c1b2e..cc5a93573fe5 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -158,6 +158,12 @@ bool FormulaToken::IsRef() const
     return false;
 }
 
+bool FormulaToken::IsInForceArray() const
+{
+    ParamClass eParam = GetInForceArray();
+    return eParam == ParamClass::ForceArray || eParam == ParamClass::ReferenceOrForceArray;
+}
+
 bool FormulaToken::operator==( const FormulaToken& rToken ) const
 {
     // don't compare reference count!
@@ -178,13 +184,13 @@ void FormulaToken::SetByte( sal_uInt8 )
     SAL_WARN( "formula.core", "FormulaToken::SetByte: virtual dummy called" );
 }
 
-bool FormulaToken::IsInForceArray() const
+ParamClass FormulaToken::GetInForceArray() const
 {
     // ok to be called for any derived class
-    return false;
+    return ParamClass::Unknown;
 }
 
-void FormulaToken::SetInForceArray( bool )
+void FormulaToken::SetInForceArray( ParamClass )
 {
     SAL_WARN( "formula.core", "FormulaToken::SetInForceArray: virtual dummy called" );
 }
@@ -348,12 +354,12 @@ bool FormulaToken::TextEqual( const FormulaToken& rToken ) const
 
 sal_uInt8   FormulaByteToken::GetByte() const           { return nByte; }
 void        FormulaByteToken::SetByte( sal_uInt8 n )    { nByte = n; }
-bool        FormulaByteToken::IsInForceArray() const    { return bIsInForceArray; }
-void        FormulaByteToken::SetInForceArray( bool b ) { bIsInForceArray = b; }
+ParamClass  FormulaByteToken::GetInForceArray() const    { return eInForceArray; }
+void        FormulaByteToken::SetInForceArray( ParamClass c ) { eInForceArray = c; }
 bool FormulaByteToken::operator==( const FormulaToken& r ) const
 {
     return FormulaToken::operator==( r ) && nByte == r.GetByte() &&
-        bIsInForceArray == r.IsInForceArray();
+        eInForceArray == r.GetInForceArray();
 }
 
 
@@ -364,14 +370,14 @@ bool FormulaFAPToken::operator==( const FormulaToken& r ) const
 }
 
 
-short*  FormulaJumpToken::GetJump() const               { return pJump.get(); }
-bool    FormulaJumpToken::IsInForceArray() const        { return bIsInForceArray; }
-void    FormulaJumpToken::SetInForceArray( bool b )     { bIsInForceArray = b; }
+short*      FormulaJumpToken::GetJump() const                   { return pJump.get(); }
+ParamClass  FormulaJumpToken::GetInForceArray() const           { return eInForceArray; }
+void        FormulaJumpToken::SetInForceArray( ParamClass c )   { eInForceArray = c; }
 bool FormulaJumpToken::operator==( const FormulaToken& r ) const
 {
     return FormulaToken::operator==( r ) && pJump[0] == r.GetJump()[0] &&
         memcmp( pJump.get()+1, r.GetJump()+1, pJump[0] * sizeof(short) ) == 0 &&
-        bIsInForceArray == r.IsInForceArray();
+        eInForceArray == r.GetInForceArray();
 }
 FormulaJumpToken::~FormulaJumpToken()
 {
@@ -1620,7 +1626,7 @@ FormulaToken* FormulaTokenArray::AddOpCode( OpCode eOp )
             }
             break;
         default:
-            pRet = new FormulaByteToken( eOp, 0, false );
+            pRet = new FormulaByteToken( eOp, 0, ParamClass::Unknown );
             break;
     }
     return Add( pRet );
@@ -1797,7 +1803,7 @@ bool FormulaStringToken::operator==( const FormulaToken& r ) const
 }
 
 FormulaStringOpToken::FormulaStringOpToken( OpCode e, const svl::SharedString& r ) :
-    FormulaByteToken( e, 0, svString, false ), maString( r ) {}
+    FormulaByteToken( e, 0, svString, ParamClass::Unknown ), maString( r ) {}
 
 FormulaStringOpToken::FormulaStringOpToken( const FormulaStringOpToken& r ) :
     FormulaByteToken( r ), maString( r.maString ) {}
diff --git a/include/formula/token.hxx b/include/formula/token.hxx
index 7c0b062abe6f..99e99bf374ca 100644
--- a/include/formula/token.hxx
+++ b/include/formula/token.hxx
@@ -30,6 +30,7 @@
 #include <formula/IFunctionDescription.hxx>
 #include <formula/opcode.hxx>
 #include <formula/types.hxx>
+#include <formula/paramclass.hxx>
 #include <osl/interlck.h>
 #include <rtl/ustring.hxx>
 #include <sal/types.h>
@@ -156,6 +157,8 @@ public:
     oslInterlockedCount GetRef() const       { return mnRefCnt; }
     OpCode              GetOpCode() const    { return eOp; }
 
+    bool                IsInForceArray() const;
+
     /**
         Dummy methods to avoid switches and casts where possible,
         the real token classes have to override the appropriate method[s].
@@ -165,16 +168,16 @@ public:
           which of course is 0 on non-functions. FormulaByteToken and ScExternal do
           override it.
 
-        - IsInForceArray() since also this is only used for operators and
-          functions and is false for other tokens.
+        - GetInForceArray() since also this is only used for operators and
+          functions and is ParamClass::Unknown for other tokens.
 
         Any other non-overridden method pops up an assertion.
      */
 
     virtual sal_uInt8           GetByte() const;
     virtual void                SetByte( sal_uInt8 n );
-    virtual bool                IsInForceArray() const;
-    virtual void                SetInForceArray( bool b );
+    virtual ParamClass          GetInForceArray() const;
+    virtual void                SetInForceArray( ParamClass c );
     virtual double              GetDouble() const;
     virtual double&             GetDoubleAsReference();
     virtual short               GetDoubleType() const;
@@ -236,30 +239,30 @@ class FORMULA_DLLPUBLIC FormulaByteToken : public FormulaToken
 {
 private:
             sal_uInt8           nByte;
-            bool                bIsInForceArray;
+            ParamClass          eInForceArray;
 protected:
-                                FormulaByteToken( OpCode e, sal_uInt8 n, StackVar v, bool b ) :
+                                FormulaByteToken( OpCode e, sal_uInt8 n, StackVar v, ParamClass c ) :
                                     FormulaToken( v,e ), nByte( n ),
-                                    bIsInForceArray( b ) {}
+                                    eInForceArray( c ) {}
 public:
-                                FormulaByteToken( OpCode e, sal_uInt8 n, bool b ) :
+                                FormulaByteToken( OpCode e, sal_uInt8 n, ParamClass c ) :
                                     FormulaToken( svByte,e ), nByte( n ),
-                                    bIsInForceArray( b ) {}
+                                    eInForceArray( c ) {}
                                 FormulaByteToken( OpCode e, sal_uInt8 n ) :
                                     FormulaToken( svByte,e ), nByte( n ),
-                                    bIsInForceArray( false ) {}
+                                    eInForceArray( ParamClass::Unknown ) {}
                                 FormulaByteToken( OpCode e ) :
                                     FormulaToken( svByte,e ), nByte( 0 ),
-                                    bIsInForceArray( false ) {}
+                                    eInForceArray( ParamClass::Unknown ) {}
                                 FormulaByteToken( const FormulaByteToken& r ) :
                                     FormulaToken( r ), nByte( r.nByte ),
-                                    bIsInForceArray( r.bIsInForceArray ) {}
+                                    eInForceArray( r.eInForceArray ) {}
 
     virtual FormulaToken*       Clone() const override { return new FormulaByteToken(*this); }
     virtual sal_uInt8           GetByte() const override;
     virtual void                SetByte( sal_uInt8 n ) override;
-    virtual bool                IsInForceArray() const override;
-    virtual void                SetInForceArray( bool b ) override;
+    virtual ParamClass          GetInForceArray() const override;
+    virtual void                SetInForceArray( ParamClass c ) override;
     virtual bool                operator==( const FormulaToken& rToken ) const override;
 
     DECL_FIXEDMEMPOOL_NEWDEL_DLL( FormulaByteToken )
@@ -274,7 +277,7 @@ private:
             FormulaTokenRef     pOrigToken;
 public:
                                 FormulaFAPToken( OpCode e, sal_uInt8 n, FormulaToken* p ) :
-                                    FormulaByteToken( e, n, svFAP, false ),
+                                    FormulaByteToken( e, n, svFAP, ParamClass::Unknown ),
                                     pOrigToken( p ) {}
                                 FormulaFAPToken( const FormulaFAPToken& r ) :
                                     FormulaByteToken( r ), pOrigToken( r.pOrigToken ) {}
@@ -418,18 +421,18 @@ class FORMULA_DLLPUBLIC FormulaJumpToken : public FormulaToken
 private:
             std::unique_ptr<short[]>
                                 pJump;
-            bool                bIsInForceArray;
+            ParamClass          eInForceArray;
 public:
                                 FormulaJumpToken( OpCode e, short* p ) :
                                     FormulaToken( formula::svJump , e),
-                                    bIsInForceArray( false)
+                                    eInForceArray( ParamClass::Unknown)
                                 {
                                     pJump.reset( new short[ p[0] + 1 ] );
                                     memcpy( pJump.get(), p, (p[0] + 1) * sizeof(short) );
                                 }
                                 FormulaJumpToken( const FormulaJumpToken& r ) :
                                     FormulaToken( r ),
-                                    bIsInForceArray( r.bIsInForceArray)
+                                    eInForceArray( r.eInForceArray)
                                 {
                                     pJump.reset( new short[ r.pJump[0] + 1 ] );
                                     memcpy( pJump.get(), r.pJump.get(), (r.pJump[0] + 1) * sizeof(short) );
@@ -438,8 +441,8 @@ public:
     virtual short*              GetJump() const override;
     virtual bool                operator==( const formula::FormulaToken& rToken ) const override;
     virtual FormulaToken*       Clone() const override { return new FormulaJumpToken(*this); }
-    virtual bool                IsInForceArray() const override;
-    virtual void                SetInForceArray( bool b ) override;
+    virtual ParamClass          GetInForceArray() const override;
+    virtual void                SetInForceArray( ParamClass c ) override;
 };
 
 
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index 30a064da457a..7f3f30e798aa 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -104,8 +104,8 @@ public:
     union {
         double       nValue;
         struct {
-            sal_uInt8   cByte;
-            bool        bIsInForceArray;
+            sal_uInt8           cByte;
+            formula::ParamClass eInForceArray;
         } sbyte;
         ScComplexRefData aRef;
         struct {
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index e511d98de1aa..99cf86f266ba 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -259,7 +259,7 @@ void ScRawToken::SetOpCode( OpCode e )
         default:
             eType = svByte;
             sbyte.cByte = 0;
-            sbyte.bIsInForceArray = false;
+            sbyte.eInForceArray = ParamClass::Unknown;
     }
 }
 
@@ -388,7 +388,7 @@ FormulaToken* ScRawToken::CreateToken() const
     switch ( GetType() )
     {
         case svByte :
-            return new FormulaByteToken( eOp, sbyte.cByte, sbyte.bIsInForceArray );
+            return new FormulaByteToken( eOp, sbyte.cByte, sbyte.eInForceArray );
         case svDouble :
             IF_NOT_OPCODE_ERROR( ocPush, FormulaDoubleToken);
             return new FormulaDoubleToken( nValue );
commit 47023116d6bf89bb2e0b8b5293272f63db32fbc2
Author: Eike Rathke <erack at redhat.com>
Date:   Tue May 9 23:19:37 2017 +0200

    Disambiguate Reference -> uno::Reference (tdf#107724 prep rel)
    
    Change-Id: Ie2858e2e3c81da2041b53389bd06c87211fa8833

diff --git a/sc/source/ui/unoobj/linkuno.cxx b/sc/source/ui/unoobj/linkuno.cxx
index 90b8ed94582b..77be3e2b5d04 100644
--- a/sc/source/ui/unoobj/linkuno.cxx
+++ b/sc/source/ui/unoobj/linkuno.cxx
@@ -45,7 +45,6 @@
 using namespace com::sun::star;
 using namespace formula;
 using ::com::sun::star::uno::Any;
-using ::com::sun::star::uno::Reference;
 using ::com::sun::star::uno::Sequence;
 using ::com::sun::star::lang::IllegalArgumentException;
 using ::com::sun::star::uno::RuntimeException;
@@ -1495,7 +1494,7 @@ ScExternalDocLinkObj::~ScExternalDocLinkObj()
 {
 }
 
-Reference< sheet::XExternalSheetCache > SAL_CALL ScExternalDocLinkObj::addSheetCache(
+uno::Reference< sheet::XExternalSheetCache > SAL_CALL ScExternalDocLinkObj::addSheetCache(
     const OUString& aSheetName, sal_Bool bDynamicCache )
 {
     SolarMutexGuard aGuard;
@@ -1505,7 +1504,7 @@ Reference< sheet::XExternalSheetCache > SAL_CALL ScExternalDocLinkObj::addSheetC
         // Set the whole table cached to prevent access to the source document.
         pTable->setWholeTableCached();
 
-    Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
+    uno::Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
     return aSheetCache;
 }
 
@@ -1517,7 +1516,7 @@ Any SAL_CALL ScExternalDocLinkObj::getByName(const OUString &aName)
     if (!pTable)
         throw container::NoSuchElementException();
 
-    Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
+    uno::Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
 
     return Any(aSheetCache);
 }
@@ -1573,15 +1572,15 @@ Any SAL_CALL ScExternalDocLinkObj::getByIndex(sal_Int32 nApiIndex)
     if (!pTable)
         throw lang::IndexOutOfBoundsException();
 
-    Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
+    uno::Reference< sheet::XExternalSheetCache > aSheetCache(new ScExternalSheetCacheObj(mpDocShell, pTable, nIndex));
 
     return Any(aSheetCache);
 }
 
-Reference< container::XEnumeration > SAL_CALL ScExternalDocLinkObj::createEnumeration()
+uno::Reference< container::XEnumeration > SAL_CALL ScExternalDocLinkObj::createEnumeration()
 {
     SolarMutexGuard aGuard;
-    Reference< container::XEnumeration > aRef(
+    uno::Reference< container::XEnumeration > aRef(
         new ScIndexEnumeration(this, "com.sun.star.sheet.ExternalDocLink"));
     return aRef;
 }
@@ -1615,13 +1614,13 @@ ScExternalDocLinksObj::~ScExternalDocLinksObj()
 {
 }
 
-Reference< sheet::XExternalDocLink > SAL_CALL ScExternalDocLinksObj::addDocLink(
+uno::Reference< sheet::XExternalDocLink > SAL_CALL ScExternalDocLinksObj::addDocLink(
     const OUString& aDocName )
 {
     SolarMutexGuard aGuard;
     OUString aDocUrl( ScGlobal::GetAbsDocName( aDocName, mpDocShell));
     sal_uInt16 nFileId = mpRefMgr->getExternalFileId(aDocUrl);
-    Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
+    uno::Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
     return aDocLink;
 }
 
@@ -1633,7 +1632,7 @@ Any SAL_CALL ScExternalDocLinksObj::getByName(const OUString &aName)
         throw container::NoSuchElementException();
 
     sal_uInt16 nFileId = mpRefMgr->getExternalFileId(aDocUrl);
-    Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
+    uno::Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
 
     return Any(aDocLink);
 }
@@ -1675,14 +1674,14 @@ Any SAL_CALL ScExternalDocLinksObj::getByIndex(sal_Int32 nIndex)
     if (!mpRefMgr->hasExternalFile(nFileId))
         throw lang::IndexOutOfBoundsException();
 
-    Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
+    uno::Reference< sheet::XExternalDocLink > aDocLink(new ScExternalDocLinkObj(mpDocShell, mpRefMgr, nFileId));
     return Any(aDocLink);
 }
 
-Reference< container::XEnumeration > SAL_CALL ScExternalDocLinksObj::createEnumeration()
+uno::Reference< container::XEnumeration > SAL_CALL ScExternalDocLinksObj::createEnumeration()
 {
     SolarMutexGuard aGuard;
-    Reference< container::XEnumeration > aRef(
+    uno::Reference< container::XEnumeration > aRef(
         new ScIndexEnumeration(this, "com.sun.star.sheet.ExternalDocLinks"));
     return aRef;
 }
commit f39e1b1079b04c8d14d3fa4a00d2cf519dba05a5
Author: Eike Rathke <erack at redhat.com>
Date:   Tue May 9 22:13:35 2017 +0200

    Change IsForceArrayParameter() to GetForceArrayParameter(), tdf#107724 prep
    
    Change-Id: Icd3400e4ee1c69860908a2ad0ca6e52879f2f725

diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index 767f4da86a7a..039b41a0d3ea 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -2539,9 +2539,9 @@ void FormulaCompiler::LocalizeString( OUString& /*rName*/ ) const
 {
 }
 
-bool FormulaCompiler::IsForceArrayParameter( const FormulaToken* /*pToken*/, sal_uInt16 /*nParam*/ ) const
+formula::ParamClass FormulaCompiler::GetForceArrayParameter( const FormulaToken* /*pToken*/, sal_uInt16 /*nParam*/ ) const
 {
-    return false;
+    return ParamClass::Unknown;
 }
 
 void FormulaCompiler::ForceArrayOperator( FormulaTokenRef& rCurr )
@@ -2558,9 +2558,13 @@ void FormulaCompiler::ForceArrayOperator( FormulaTokenRef& rCurr )
         return;
     }
 
-    if (nCurrentFactorParam && IsForceArrayParameter( pCurrentFactorToken.get(),
-                static_cast<sal_uInt8>(nCurrentFactorParam - 1)))
-        rCurr->SetInForceArray( true);
+    if (nCurrentFactorParam > 0)
+    {
+        formula::ParamClass eType = GetForceArrayParameter( pCurrentFactorToken.get(),
+                static_cast<sal_uInt8>(nCurrentFactorParam - 1));
+        if (eType == ParamClass::ForceArray || eType == ParamClass::ReferenceOrForceArray)
+            rCurr->SetInForceArray( true);
+    }
 }
 
 void FormulaCompiler::CheckSetForceArrayParameter( FormulaTokenRef& rCurr, sal_uInt8 nParam )
diff --git a/include/formula/FormulaCompiler.hxx b/include/formula/FormulaCompiler.hxx
index 22bd699e7811..8e4999ffc999 100644
--- a/include/formula/FormulaCompiler.hxx
+++ b/include/formula/FormulaCompiler.hxx
@@ -30,6 +30,7 @@
 #include <formula/opcode.hxx>
 #include <formula/token.hxx>
 #include <formula/types.hxx>
+#include <formula/paramclass.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <rtl/ustring.hxx>
 #include <sal/log.hxx>
@@ -292,9 +293,10 @@ protected:
     virtual void CreateStringFromIndex( OUStringBuffer& rBuffer, const FormulaToken* pToken ) const;
     virtual void LocalizeString( OUString& rName ) const;   // modify rName - input: exact name
 
-    /** Whether parameter nParam (0-based) is forced to array for OpCode eOp.
-        Calc: ForceArray or ReferenceOrForceArray type. */
-    virtual bool IsForceArrayParameter( const FormulaToken* pToken, sal_uInt16 nParam ) const;
+    /** If a parameter nParam (0-based) is to be forced to array for OpCode
+        eOp, i.e. classified as ParamClass::ForceArray or
+        ParamClass::ReferenceOrForceArray type. */
+    virtual formula::ParamClass GetForceArrayParameter( const FormulaToken* pToken, sal_uInt16 nParam ) const;
 
     void AppendErrorConstant( OUStringBuffer& rBuffer, FormulaError nError ) const;
 
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index 0aa34f5b8dd8..30a064da457a 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -460,7 +460,7 @@ private:
     virtual void CreateStringFromIndex( OUStringBuffer& rBuffer, const formula::FormulaToken* pToken ) const override;
     virtual void LocalizeString( OUString& rName ) const override;   // modify rName - input: exact name
 
-    virtual bool IsForceArrayParameter( const formula::FormulaToken* pToken, sal_uInt16 nParam ) const override;
+    virtual formula::ParamClass GetForceArrayParameter( const formula::FormulaToken* pToken, sal_uInt16 nParam ) const override;
 
     /// Access the CharTable flags
     ScCharFlags GetCharTableFlags( sal_Unicode c, sal_Unicode cLast )
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index af159268ae49..a95f2da5698c 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -5763,12 +5763,9 @@ bool ScCompiler::HandleTableRef()
     return true;
 }
 
-bool ScCompiler::IsForceArrayParameter( const formula::FormulaToken* pToken, sal_uInt16 nParam ) const
+formula::ParamClass ScCompiler::GetForceArrayParameter( const formula::FormulaToken* pToken, sal_uInt16 nParam ) const
 {
-    formula::ParamClass eType = ScParameterClassification::GetParameterType( pToken, nParam);
-    return
-        eType == formula::ParamClass::ForceArray ||
-        eType == formula::ParamClass::ReferenceOrForceArray;
+    return ScParameterClassification::GetParameterType( pToken, nParam);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list