[Libreoffice-commits] core.git: sc/inc sc/source
Stephan Bergmann
sbergman at redhat.com
Wed Jul 5 07:26:25 UTC 2017
sc/inc/filter.hxx | 39 ++++++++++++++++--------------------
sc/source/filter/dif/difexp.cxx | 4 +--
sc/source/filter/dif/difimp.cxx | 2 -
sc/source/filter/excel/excel.cxx | 4 +--
sc/source/filter/ftools/ftools.cxx | 7 ++++--
sc/source/filter/html/htmlexp.cxx | 2 -
sc/source/filter/html/htmlimp.cxx | 6 ++---
sc/source/filter/inc/ftools.hxx | 36 +++++++++++++++++++++++++++++++++
sc/source/filter/lotus/lotus.cxx | 2 -
sc/source/filter/qpro/qpro.cxx | 2 -
sc/source/filter/rtf/rtfexp.cxx | 2 -
sc/source/filter/rtf/rtfimp.cxx | 4 +--
sc/source/filter/starcalc/scflt.cxx | 2 -
13 files changed, 74 insertions(+), 38 deletions(-)
New commits:
commit 0153c51bb8530a34d665932e52ffd47064376c83
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed Jul 5 07:54:21 2017 +0200
Revert "With ScFormatFilterMissing gone we don't need ScFormatFilterPluginImpl"
This reverts commit cc0524a724d0a9b9516ce9eaf499d845165863f8, which broke
UBSan's -fsanitize=vptr, where Library_sc needs the RTTI typeinfo symbol for
ScFormatFilterPlugin, but that would now only be emitted in Library_scfilt,
together with the first non-pure, non-inline virtual function, and Library_sc
cannot link against Library_scfilt (which already links against Library_sc).
diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx
index efb83c2dcb7d..04a0f4206985 100644
--- a/sc/inc/filter.hxx
+++ b/sc/inc/filter.hxx
@@ -56,42 +56,39 @@ class ScEEAbsImport {
};
class SAL_DLLPUBLIC_RTTI ScFormatFilterPlugin {
- // The member functions must be virtual for now even though this class has no derived classes,
- // because of how this thing works.
public:
- ScFormatFilterPlugin() {};
-
// various import filters
- virtual ErrCode ScImportLotus123( SfxMedium&, ScDocument*, rtl_TextEncoding eSrc );
- virtual ErrCode ScImportQuattroPro(SvStream* pStream, ScDocument *pDoc);
- virtual ErrCode ScImportExcel( SfxMedium&, ScDocument*, const EXCIMPFORMAT );
+ virtual ErrCode ScImportLotus123( SfxMedium&, ScDocument*, rtl_TextEncoding eSrc ) = 0;
+ virtual ErrCode ScImportQuattroPro(SvStream* pStream, ScDocument *pDoc) = 0;
+ virtual ErrCode ScImportExcel( SfxMedium&, ScDocument*, const EXCIMPFORMAT ) = 0;
// eFormat == EIF_AUTO -> matching filter is used automatically
// eFormat == EIF_BIFF5 -> only Biff5 stream is read successfully (in an Excel97 doc, too)
// eFormat == EIF_BIFF8 -> only Biff8 stream is read successfully (only in Excel97 docs)
// eFormat == EIF_BIFF_LE4 -> only non storage files _might_ be read successfully
- virtual ErrCode ScImportStarCalc10( SvStream&, ScDocument* );
+ virtual ErrCode ScImportStarCalc10( SvStream&, ScDocument* ) = 0;
virtual ErrCode ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos,
- const rtl_TextEncoding eSrc );
- virtual ErrCode ScImportRTF( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange );
+ const rtl_TextEncoding eSrc ) = 0;
+ virtual ErrCode ScImportRTF( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange ) = 0;
virtual ErrCode ScImportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor,
- bool bCalcWidthHeight, SvNumberFormatter* pFormatter = nullptr, bool bConvertDate = true );
+ bool bCalcWidthHeight, SvNumberFormatter* pFormatter = nullptr, bool bConvertDate = true ) = 0;
// various import helpers
- virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange );
- virtual ScEEAbsImport *CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange );
- virtual OUString GetHTMLRangeNameList( ScDocument* pDoc, const OUString& rOrigName );
+ virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange ) = 0;
+ virtual ScEEAbsImport *CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange ) = 0;
+ virtual OUString GetHTMLRangeNameList( ScDocument* pDoc, const OUString& rOrigName ) = 0;
// various export filters
- virtual ErrCode ScExportExcel5( SfxMedium&, ScDocument*, ExportFormatExcel eFormat, rtl_TextEncoding eDest );
- virtual void ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const rtl_TextEncoding eDest );
- virtual void ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest );
+ virtual ErrCode ScExportExcel5( SfxMedium&, ScDocument*, ExportFormatExcel eFormat, rtl_TextEncoding eDest ) = 0;
+ virtual void ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const rtl_TextEncoding eDest ) = 0;
+ virtual void ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) = 0;
virtual void ScExportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest, bool bAll,
- const OUString& rStreamPath, OUString& rNonConvertibleChars, const OUString& rFilterOptions );
- virtual void ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest );
+ const OUString& rStreamPath, OUString& rNonConvertibleChars, const OUString& rFilterOptions ) = 0;
+ virtual void ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) = 0;
- virtual ScOrcusFilters* GetOrcusFilters();
+ virtual ScOrcusFilters* GetOrcusFilters() = 0;
- virtual ~ScFormatFilterPlugin() {}
+protected:
+ ~ScFormatFilterPlugin() {}
};
// scfilt plugin symbol
diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx
index cb46e7342daa..4d0371285f0e 100644
--- a/sc/source/filter/dif/difexp.cxx
+++ b/sc/source/filter/dif/difexp.cxx
@@ -33,7 +33,7 @@
#include <osl/diagnose.h>
#include <formula/errorcodes.hxx>
-void ScFormatFilterPlugin::ScExportDif( SvStream& rStream, ScDocument* pDoc,
+void ScFormatFilterPluginImpl::ScExportDif( SvStream& rStream, ScDocument* pDoc,
const ScAddress& rOutPos, const rtl_TextEncoding eNach )
{
SCCOL nEndCol;
@@ -47,7 +47,7 @@ void ScFormatFilterPlugin::ScExportDif( SvStream& rStream, ScDocument* pDoc,
ScExportDif( rStream, pDoc, ScRange( aStart, aEnd ), eNach );
}
-void ScFormatFilterPlugin::ScExportDif( SvStream& rOut, ScDocument* pDoc,
+void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc,
const ScRange&rRange, const rtl_TextEncoding eCharSet )
{
OSL_ENSURE( rRange.aStart <= rRange.aEnd, "*ScExportDif(): Range not sorted!" );
diff --git a/sc/source/filter/dif/difimp.cxx b/sc/source/filter/dif/difimp.cxx
index a46bbd821380..5df754cc6f94 100644
--- a/sc/source/filter/dif/difimp.cxx
+++ b/sc/source/filter/dif/difimp.cxx
@@ -47,7 +47,7 @@ const sal_Unicode pKeyNA[] = { 'N', 'A', 0 };
const sal_Unicode pKeyV[] = { 'V', 0 };
const sal_Unicode pKey1_0[] = { '1', ',', '0', 0 };
-ErrCode ScFormatFilterPlugin::ScImportDif(SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos,
+ErrCode ScFormatFilterPluginImpl::ScImportDif(SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos,
const rtl_TextEncoding eVon )
{
DifParser aDifParser( rIn, *pDoc, eVon );
diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx
index 9451fd915fc0..b6087bf30715 100644
--- a/sc/source/filter/excel/excel.cxx
+++ b/sc/source/filter/excel/excel.cxx
@@ -45,7 +45,7 @@
#include <memory>
-ErrCode ScFormatFilterPlugin::ScImportExcel( SfxMedium& rMedium, ScDocument* pDocument, const EXCIMPFORMAT eFormat )
+ErrCode ScFormatFilterPluginImpl::ScImportExcel( SfxMedium& rMedium, ScDocument* pDocument, const EXCIMPFORMAT eFormat )
{
// check the passed Calc document
OSL_ENSURE( pDocument, "::ScImportExcel - no document" );
@@ -197,7 +197,7 @@ static ErrCode lcl_ExportExcelBiff( SfxMedium& rMedium, ScDocument *pDocument,
return eRet;
}
-ErrCode ScFormatFilterPlugin::ScExportExcel5( SfxMedium& rMedium, ScDocument *pDocument,
+ErrCode ScFormatFilterPluginImpl::ScExportExcel5( SfxMedium& rMedium, ScDocument *pDocument,
ExportFormatExcel eFormat, rtl_TextEncoding eNach )
{
if( eFormat != ExpBiff5 && eFormat != ExpBiff8 )
diff --git a/sc/source/filter/ftools/ftools.cxx b/sc/source/filter/ftools/ftools.cxx
index 691e0571d9cd..e3ebc5597730 100644
--- a/sc/source/filter/ftools/ftools.cxx
+++ b/sc/source/filter/ftools/ftools.cxx
@@ -349,7 +349,10 @@ bool ScfTools::GetHTMLNameFromName( const OUString& rSource, OUString& rName )
return !rName.isEmpty();
}
-ScOrcusFilters* ScFormatFilterPlugin::GetOrcusFilters()
+ScFormatFilterPluginImpl::ScFormatFilterPluginImpl() {}
+ScFormatFilterPluginImpl::~ScFormatFilterPluginImpl() {}
+
+ScOrcusFilters* ScFormatFilterPluginImpl::GetOrcusFilters()
{
static ScOrcusFiltersImpl aImpl;
return &aImpl;
@@ -357,7 +360,7 @@ ScOrcusFilters* ScFormatFilterPlugin::GetOrcusFilters()
ScFormatFilterPlugin * SAL_CALL ScFilterCreate()
{
- return new ScFormatFilterPlugin();
+ return new ScFormatFilterPluginImpl();
}
// implementation class inside the filters
diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx
index ce68397aad54..676048806452 100644
--- a/sc/source/filter/html/htmlexp.cxx
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -125,7 +125,7 @@ const sal_Char ScHTMLExport::sIndentSource[nIndentMax+1] =
#define GLOBSTR(id) ScGlobal::GetRscString( id )
-void ScFormatFilterPlugin::ScExportHTML( SvStream& rStrm, const OUString& rBaseURL, ScDocument* pDoc,
+void ScFormatFilterPluginImpl::ScExportHTML( SvStream& rStrm, const OUString& rBaseURL, ScDocument* pDoc,
const ScRange& rRange, const rtl_TextEncoding /*eNach*/, bool bAll,
const OUString& rStreamPath, OUString& rNonConvertibleChars, const OUString& rFilterOptions )
{
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
index ff0b69c6f95c..5dc06c5a8054 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -42,7 +42,7 @@
#include "ftools.hxx"
#include "tokenarray.hxx"
-ErrCode ScFormatFilterPlugin::ScImportHTML( SvStream &rStream, const OUString& rBaseURL, ScDocument *pDoc,
+ErrCode ScFormatFilterPluginImpl::ScImportHTML( SvStream &rStream, const OUString& rBaseURL, ScDocument *pDoc,
ScRange& rRange, double nOutputFactor, bool bCalcWidthHeight, SvNumberFormatter* pFormatter,
bool bConvertDate )
{
@@ -54,7 +54,7 @@ ErrCode ScFormatFilterPlugin::ScImportHTML( SvStream &rStream, const OUString& r
return nErr;
}
-ScEEAbsImport *ScFormatFilterPlugin::CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange )
+ScEEAbsImport *ScFormatFilterPluginImpl::CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange )
{
return new ScHTMLImport( pDocP, rBaseURL, rRange, true/*bCalcWidthHeight*/ );
}
@@ -191,7 +191,7 @@ void ScHTMLImport::WriteToDocument(
}
}
-OUString ScFormatFilterPlugin::GetHTMLRangeNameList( ScDocument* pDoc, const OUString& rOrigName )
+OUString ScFormatFilterPluginImpl::GetHTMLRangeNameList( ScDocument* pDoc, const OUString& rOrigName )
{
return ScHTMLImport::GetHTMLRangeNameList( pDoc, rOrigName );
}
diff --git a/sc/source/filter/inc/ftools.hxx b/sc/source/filter/inc/ftools.hxx
index c8b88271fe12..faf22680d450 100644
--- a/sc/source/filter/inc/ftools.hxx
+++ b/sc/source/filter/inc/ftools.hxx
@@ -257,6 +257,42 @@ typedef ::std::vector< sal_Int32 > ScfInt32Vec;
typedef ::std::vector< sal_uInt32 > ScfUInt32Vec;
typedef ::std::vector< OUString > ScfStringVec;
+class ScFormatFilterPluginImpl : public ScFormatFilterPlugin
+{
+public:
+ ScFormatFilterPluginImpl();
+ virtual ~ScFormatFilterPluginImpl();
+ // various import filters
+ virtual ErrCode ScImportLotus123( SfxMedium&, ScDocument*, rtl_TextEncoding eSrc ) override;
+ virtual ErrCode ScImportQuattroPro(SvStream* pStream, ScDocument *pDoc) override;
+ virtual ErrCode ScImportExcel( SfxMedium&, ScDocument*, const EXCIMPFORMAT ) override;
+ // eFormat == EIF_AUTO -> matching filter is used automatically
+ // eFormat == EIF_BIFF5 -> only Biff5 stream leads to success (even in an Excel97 doc)
+ // eFormat == EIF_BIFF8 -> only Biff8 stream leads to success (only in Excel97 docs)
+ // eFormat == EIF_BIFF_LE4 -> only non-storage files _could_ lead to success
+ virtual ErrCode ScImportStarCalc10( SvStream&, ScDocument* ) override;
+ virtual ErrCode ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos,
+ const rtl_TextEncoding eSrc ) override;
+ virtual ErrCode ScImportRTF( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange ) override;
+ virtual ErrCode ScImportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange,
+ double nOutputFactor, bool bCalcWidthHeight,
+ SvNumberFormatter* pFormatter = nullptr, bool bConvertDate = true ) override;
+
+ virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange ) override;
+ virtual ScEEAbsImport *CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange ) override;
+ virtual OUString GetHTMLRangeNameList( ScDocument* pDoc, const OUString& rOrigName ) override;
+
+ // various export filters
+ virtual ErrCode ScExportExcel5( SfxMedium&, ScDocument*, ExportFormatExcel eFormat, rtl_TextEncoding eDest ) override;
+ virtual void ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const rtl_TextEncoding eDest ) override;
+ virtual void ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) override;
+ virtual void ScExportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest, bool bAll,
+ const OUString& rStreamPath, OUString& rNonConvertibleChars, const OUString& rFilterOptions ) override;
+ virtual void ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) override;
+
+ virtual ScOrcusFilters* GetOrcusFilters() override;
+};
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx
index 574eb9d8c86d..8a7c8493225b 100644
--- a/sc/source/filter/lotus/lotus.cxx
+++ b/sc/source/filter/lotus/lotus.cxx
@@ -28,7 +28,7 @@
#include "filtopt.hxx"
#include "ftools.hxx"
-ErrCode ScFormatFilterPlugin::ScImportLotus123( SfxMedium& rMedium, ScDocument* pDocument, rtl_TextEncoding eSrc )
+ErrCode ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocument* pDocument, rtl_TextEncoding eSrc )
{
ScFilterOptions aFilterOpt;
bool bWithWK3 = aFilterOpt.GetWK3Flag();
diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx
index c2c119ce05f7..80107e1f6f32 100644
--- a/sc/source/filter/qpro/qpro.cxx
+++ b/sc/source/filter/qpro/qpro.cxx
@@ -123,7 +123,7 @@ ErrCode ScQProReader::readSheet( SCTAB nTab, ScDocument* pDoc, ScQProStyle *pSty
return eRet;
}
-ErrCode ScFormatFilterPlugin::ScImportQuattroPro(SvStream *pStream, ScDocument *pDoc)
+ErrCode ScFormatFilterPluginImpl::ScImportQuattroPro(SvStream *pStream, ScDocument *pDoc)
{
ScQProReader aReader(pStream);
ErrCode eRet = aReader.import( pDoc );
diff --git a/sc/source/filter/rtf/rtfexp.cxx b/sc/source/filter/rtf/rtfexp.cxx
index 055e577f18e9..44e8629f9110 100644
--- a/sc/source/filter/rtf/rtfexp.cxx
+++ b/sc/source/filter/rtf/rtfexp.cxx
@@ -42,7 +42,7 @@
#include "stlpool.hxx"
#include "ftools.hxx"
-void ScFormatFilterPlugin::ScExportRTF( SvStream& rStrm, ScDocument* pDoc,
+void ScFormatFilterPluginImpl::ScExportRTF( SvStream& rStrm, ScDocument* pDoc,
const ScRange& rRange, const rtl_TextEncoding /*eNach*/ )
{
ScRTFExport aEx( rStrm, pDoc, rRange );
diff --git a/sc/source/filter/rtf/rtfimp.cxx b/sc/source/filter/rtf/rtfimp.cxx
index ddadd1c12627..ecd86a537846 100644
--- a/sc/source/filter/rtf/rtfimp.cxx
+++ b/sc/source/filter/rtf/rtfimp.cxx
@@ -25,7 +25,7 @@
#include "rtfparse.hxx"
#include "ftools.hxx"
-ErrCode ScFormatFilterPlugin::ScImportRTF( SvStream &rStream, const OUString& rBaseURL, ScDocument *pDoc, ScRange& rRange )
+ErrCode ScFormatFilterPluginImpl::ScImportRTF( SvStream &rStream, const OUString& rBaseURL, ScDocument *pDoc, ScRange& rRange )
{
ScRTFImport aImp( pDoc, rRange );
ErrCode nErr = aImp.Read( rStream, rBaseURL );
@@ -35,7 +35,7 @@ ErrCode ScFormatFilterPlugin::ScImportRTF( SvStream &rStream, const OUString& rB
return nErr;
}
-ScEEAbsImport *ScFormatFilterPlugin::CreateRTFImport( ScDocument* pDoc, const ScRange& rRange )
+ScEEAbsImport *ScFormatFilterPluginImpl::CreateRTFImport( ScDocument* pDoc, const ScRange& rRange )
{
return new ScRTFImport( pDoc, rRange );
}
diff --git a/sc/source/filter/starcalc/scflt.cxx b/sc/source/filter/starcalc/scflt.cxx
index fe2f22365371..5a190339f550 100644
--- a/sc/source/filter/starcalc/scflt.cxx
+++ b/sc/source/filter/starcalc/scflt.cxx
@@ -2400,7 +2400,7 @@ void Sc10Import::LoadObjects()
}
}
-ErrCode ScFormatFilterPlugin::ScImportStarCalc10( SvStream& rStream, ScDocument* pDocument )
+ErrCode ScFormatFilterPluginImpl::ScImportStarCalc10( SvStream& rStream, ScDocument* pDocument )
{
rStream.Seek( 0UL );
Sc10Import aImport( rStream, pDocument );
More information about the Libreoffice-commits
mailing list