summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-12 02:27:09 +0100
committerJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-12 17:09:35 +0000
commit58c5a9de2a0b985ef81557271db39c56ceb624f9 (patch)
treee585636496eb801ad8329ce564feeb5d0d09ab5d
parent2fd88ab1cbb4690a770ca2ca5d66157ec4906a2e (diff)
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@ok.de> Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
-rw-r--r--sc/source/filter/inc/formulabase.hxx2
-rw-r--r--sc/source/filter/oox/formulabase.cxx5
-rw-r--r--sc/source/filter/oox/formulaparser.cxx63
-rw-r--r--sc/source/filter/oox/ooxformulaparser.cxx7
4 files changed, 18 insertions, 59 deletions
diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx
index 91c67c820d1b..46ddbfbb562f 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 5966c083c776..b2f0ace68aef 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 759c1c7c1553..ff0ce24e7c80 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 fc65fdeb92a2..720c27707bc2 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(