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

Jochen Nitschke j.nitschke+logerrit at ok.de
Thu Jan 12 17:09:55 UTC 2017


 sc/source/filter/inc/formulabase.hxx      |    2 
 sc/source/filter/oox/formulabase.cxx      |    5 +-
 sc/source/filter/oox/formulaparser.cxx    |   63 ++++--------------------------
 sc/source/filter/oox/ooxformulaparser.cxx |    7 +--
 4 files changed, 18 insertions(+), 59 deletions(-)

New commits:
commit 58c5a9de2a0b985ef81557271db39c56ceb624f9
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date:   Thu Jan 12 02:27:09 2017 +0100

    tdf#48140 replace CellAddress in xlsx import (4)
    
    Change-Id: I52d7a37dd106744052d714e66fd84895aeb0a9b8
    Reviewed-on: https://gerrit.libreoffice.org/33001
    Reviewed-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>
    Tested-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>

diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx
index 91c67c8..46ddbfb 100644
--- a/sc/source/filter/inc/formulabase.hxx
+++ b/sc/source/filter/inc/formulabase.hxx
@@ -609,7 +609,7 @@ public:
     /** Calls the XFormulaParser::parseFormula() function of the API parser. */
     ApiTokenSequence    parseFormula(
                             const OUString& rFormula,
-                            const css::table::CellAddress& rRefPos );
+                            const ScAddress& rRefPos );
 
 private:
     css::uno::Reference< css::sheet::XFormulaParser >
diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx
index 5966c08..b2f0ace 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -1441,12 +1441,13 @@ ApiParserWrapper::ApiParserWrapper(
     maParserProps.setProperty( PROP_OpCodeMap, getOoxParserMap() );
 }
 
-ApiTokenSequence ApiParserWrapper::parseFormula( const OUString& rFormula, const CellAddress& rRefPos )
+ApiTokenSequence ApiParserWrapper::parseFormula( const OUString& rFormula, const ScAddress& rRefPos )
 {
     ApiTokenSequence aTokenSeq;
     if( mxParser.is() ) try
     {
-        aTokenSeq = mxParser->parseFormula( rFormula, rRefPos );
+        aTokenSeq = mxParser->parseFormula( rFormula,
+                                            CellAddress(rRefPos.Tab(), rRefPos.Col(), rRefPos.Row()) );
     }
     catch( Exception& )
     {
diff --git a/sc/source/filter/oox/formulaparser.cxx b/sc/source/filter/oox/formulaparser.cxx
index 759c1c7..ff0ce24 100644
--- a/sc/source/filter/oox/formulaparser.cxx
+++ b/sc/source/filter/oox/formulaparser.cxx
@@ -423,20 +423,11 @@ public:
 
     /** Converts an OOXML formula string. */
     virtual ApiTokenSequence importOoxFormula(
-                            const CellAddress& rBaseAddress,
-                            const OUString& rFormulaString );
-
-    virtual ApiTokenSequence importOoxFormulaSc(
                             const ScAddress& rBaseAddress,
                             const OUString& rFormulaString );
 
     /** Imports and converts a BIFF12 token array from the passed stream. */
     virtual ApiTokenSequence importBiff12Formula(
-                            const CellAddress& rBaseAddress,
-                            FormulaType eType,
-                            SequenceInputStream& rStrm );
-
-    virtual ApiTokenSequence importBiff12FormulaSc(
                             const ScAddress& rBaseAddress,
                             FormulaType eType,
                             SequenceInputStream& rStrm );
@@ -449,7 +440,7 @@ protected:
     typedef ::std::vector< WhiteSpace >     WhiteSpaceVec;
 
     /** Initializes the formula parser before importing a formula. */
-    void                initializeImport( const CellAddress& rBaseAddress, FormulaType eType );
+    void                initializeImport( const ScAddress& rBaseAddress, FormulaType eType );
     /** Finalizes the internal token storage after import. */
     ApiTokenSequence    finalizeImport();
 
@@ -579,31 +570,18 @@ FormulaParserImpl::FormulaParserImpl( const FormulaParser& rParent ) :
     maClosingSpaces.reserve( 256 );
 }
 
-ApiTokenSequence FormulaParserImpl::importOoxFormula( const CellAddress&, const OUString& )
+ApiTokenSequence FormulaParserImpl::importOoxFormula( const ScAddress&, const OUString& )
 {
     OSL_FAIL( "FormulaParserImpl::importOoxFormula - not implemented" );
     return ApiTokenSequence();
 }
 
-ApiTokenSequence FormulaParserImpl::importOoxFormulaSc( const ScAddress&, const OUString& )
-{
-    OSL_FAIL( "FormulaParserImpl::importOoxFormula - not implemented" );
-    return ApiTokenSequence();
-}
-
-ApiTokenSequence FormulaParserImpl::importBiff12Formula( const CellAddress&, FormulaType, SequenceInputStream& )
-{
-    SAL_WARN("sc.filter", "FormulaParserImpl::importBiff12Formula - not implemented" );
-    return ApiTokenSequence();
-}
-
-ApiTokenSequence FormulaParserImpl::importBiff12FormulaSc( const ScAddress&, FormulaType, SequenceInputStream& )
+ApiTokenSequence FormulaParserImpl::importBiff12Formula( const ScAddress&, FormulaType, SequenceInputStream& )
 {
     SAL_WARN("sc.filter", "FormulaParserImpl::importBiff12Formula - not implemented" );
     return ApiTokenSequence();
 }
 
-
 OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefSheets ) const
 {
     const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, bUseRefSheets ).get();
@@ -613,9 +591,9 @@ OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefShee
     return OUString();
 }
 
-void FormulaParserImpl::initializeImport( const CellAddress& rBaseAddr, FormulaType eType )
+void FormulaParserImpl::initializeImport( const ScAddress& rBaseAddr, FormulaType eType )
 {
-    maBaseAddr = ScAddress( rBaseAddr.Column, rBaseAddr.Row, rBaseAddr.Sheet );
+    maBaseAddr = rBaseAddr;
     mbRelativeAsOffset = mb2dRefsAs3dRefs = mbSpecialTokens = false;
     switch( eType )
     {
@@ -1226,19 +1204,10 @@ public:
     explicit            OoxFormulaParserImpl( const FormulaParser& rParent );
 
     virtual ApiTokenSequence importOoxFormula(
-                            const CellAddress& rBaseAddr,
-                            const OUString& rFormulaString ) override;
-
-    virtual ApiTokenSequence importBiff12Formula(
-                            const CellAddress& rBaseAddr,
-                            FormulaType eType,
-                            SequenceInputStream& rStrm ) override;
-
-    virtual ApiTokenSequence importOoxFormulaSc(
                             const ScAddress& rBaseAddr,
                             const OUString& rFormulaString ) override;
 
-    virtual ApiTokenSequence importBiff12FormulaSc(
+    virtual ApiTokenSequence importBiff12Formula(
                             const ScAddress& rBaseAddr,
                             FormulaType eType,
                             SequenceInputStream& rStrm ) override;
@@ -1288,7 +1257,7 @@ OoxFormulaParserImpl::OoxFormulaParserImpl( const FormulaParser& rParent ) :
 {
 }
 
-ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const CellAddress& rBaseAddr, const OUString& rFormulaString )
+ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const ScAddress& rBaseAddr, const OUString& rFormulaString )
 {
     if( mbNeedExtRefs )
     {
@@ -1298,20 +1267,8 @@ ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const CellAddress& rBas
     return finalizeTokenArray( maApiParser.parseFormula( rFormulaString, rBaseAddr ) );
 }
 
-ApiTokenSequence OoxFormulaParserImpl::importOoxFormulaSc( const ScAddress& rBaseAddr, const OUString& rFormulaString )
-{
-    CellAddress aTempAddress( rBaseAddr.Tab(), rBaseAddr.Col(), rBaseAddr.Row() );
-    return importOoxFormula(aTempAddress, rFormulaString);
-}
-
 // TODO: remove the importBiff12Formula function
-ApiTokenSequence OoxFormulaParserImpl::importBiff12FormulaSc( const ScAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm )
-{
-    CellAddress aTempAddress( rBaseAddr.Tab(), rBaseAddr.Col(), rBaseAddr.Row() );
-    return importBiff12Formula(aTempAddress, eType, rStrm);
-}
-
-ApiTokenSequence OoxFormulaParserImpl::importBiff12Formula( const CellAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm )
+ApiTokenSequence OoxFormulaParserImpl::importBiff12Formula( const ScAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm )
 {
     initializeImport( rBaseAddr, eType );
 
@@ -1832,12 +1789,12 @@ FormulaParser::~FormulaParser()
 
 ApiTokenSequence FormulaParser::importFormula( const ScAddress& rBaseAddress, const OUString& rFormulaString ) const
 {
-    return mxImpl->importOoxFormulaSc( rBaseAddress, rFormulaString );
+    return mxImpl->importOoxFormula( rBaseAddress, rFormulaString );
 }
 
 ApiTokenSequence FormulaParser::importFormula( const ScAddress& rBaseAddress, FormulaType eType, SequenceInputStream& rStrm ) const
 {
-    return mxImpl->importBiff12FormulaSc( rBaseAddress, eType, rStrm );
+    return mxImpl->importBiff12Formula( rBaseAddress, eType, rStrm );
 }
 
 OUString FormulaParser::importOleTargetLink( const OUString& rFormulaString )
diff --git a/sc/source/filter/oox/ooxformulaparser.cxx b/sc/source/filter/oox/ooxformulaparser.cxx
index fc65fde..720c277 100644
--- a/sc/source/filter/oox/ooxformulaparser.cxx
+++ b/sc/source/filter/oox/ooxformulaparser.cxx
@@ -40,7 +40,7 @@ class OOXMLFormulaParserImpl : private FormulaFinalizer
 public:
     explicit            OOXMLFormulaParserImpl( const Reference< XMultiServiceFactory >& rxModelFactory );
 
-    Sequence< FormulaToken > parseFormula( const OUString& rFormula, const CellAddress& rReferencePos );
+    Sequence< FormulaToken > parseFormula( const OUString& rFormula, const ScAddress& rReferencePos );
 
 protected:
     virtual const FunctionInfo* resolveBadFuncName( const OUString& rTokenData ) const override;
@@ -55,7 +55,7 @@ OOXMLFormulaParserImpl::OOXMLFormulaParserImpl( const Reference< XMultiServiceFa
 {
 }
 
-Sequence< FormulaToken > OOXMLFormulaParserImpl::parseFormula( const OUString& rFormula, const CellAddress& rReferencePos )
+Sequence< FormulaToken > OOXMLFormulaParserImpl::parseFormula( const OUString& rFormula, const ScAddress& rReferencePos )
 {
     return finalizeTokenArray( maApiParser.parseFormula( rFormula, rReferencePos ) );
 }
@@ -151,7 +151,8 @@ Sequence< FormulaToken > SAL_CALL OOXMLFormulaParser::parseFormula(
         Reference< XMultiServiceFactory > xModelFactory( mxComponent, UNO_QUERY_THROW );
         mxParserImpl.reset( new OOXMLFormulaParserImpl( xModelFactory ) );
     }
-    return mxParserImpl->parseFormula( rFormula, rReferencePos );
+    return mxParserImpl->parseFormula( rFormula,
+                                       ScAddress(rReferencePos.Column, rReferencePos.Row, rReferencePos.Sheet) );
 }
 
 OUString SAL_CALL OOXMLFormulaParser::printFormula(


More information about the Libreoffice-commits mailing list