[Libreoffice-commits] core.git: sw/inc sw/source
Noel Grandin
noel.grandin at collabora.co.uk
Fri Sep 16 13:26:42 UTC 2016
sw/inc/iodetect.hxx | 26 +++++++++++++-------------
sw/source/filter/basflt/fltini.cxx | 32 +++++++++++++++-----------------
sw/source/filter/basflt/iodetect.cxx | 8 +++++++-
3 files changed, 35 insertions(+), 31 deletions(-)
New commits:
commit 6da5ed6d7cea0917047dca92a9e32a7eb5e85ad6
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Fri Sep 16 14:52:29 2016 +0200
convert ReaderWriterEnum to scoped enum
Change-Id: I6af2784857c835a823218ba88f4bf65a19a0d253
Reviewed-on: https://gerrit.libreoffice.org/28959
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sw/inc/iodetect.hxx b/sw/inc/iodetect.hxx
index 91ee8ae..33673cc 100644
--- a/sw/inc/iodetect.hxx
+++ b/sw/inc/iodetect.hxx
@@ -58,21 +58,21 @@ struct SwIoDetect
}
};
-enum ReaderWriterEnum {
- READER_WRITER_RTF,
- READER_WRITER_BAS,
- READER_WRITER_WW6,
- READER_WRITER_WW8,
- READER_WRITER_RTF_WH,
- READER_WRITER_HTML,
- READER_WRITER_WW5,
- READER_WRITER_XML,
- READER_WRITER_TEXT_DLG,
- READER_WRITER_TEXT,
- MAXFILTER
+enum class ReaderWriterType {
+ Rtf,
+ Bas,
+ Ww6,
+ Ww8,
+ RtfWh,
+ Html,
+ Ww5,
+ Xml,
+ TextDlg,
+ Text,
+ LAST = Text
};
-extern SwIoDetect aFilterDetect[];
+SwIoDetect& GetSwIoDetect(ReaderWriterType);
/** The following class is a wrapper for basic i/o functions of Writer 3.0.
Everything is static. All filter names mentioned are Writer-internal
diff --git a/sw/source/filter/basflt/fltini.cxx b/sw/source/filter/basflt/fltini.cxx
index 071751b..8534eac 100644
--- a/sw/source/filter/basflt/fltini.cxx
+++ b/sw/source/filter/basflt/fltini.cxx
@@ -57,6 +57,8 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/util/XMacroExpander.hpp>
#include <rtl/bootstrap.hxx>
+#include <o3tl/enumarray.hxx>
+#include <o3tl/enumrange.hxx>
using namespace utl;
using namespace com::sun::star::uno;
@@ -68,8 +70,8 @@ Reader* GetRTFReader();
Reader* GetWW8Reader();
// Note: if editing, please don't forget to modify also the enum
-// ReaderWriterEnum and aFilterDetect in shellio.hxx
-SwReaderWriterEntry aReaderWriter[] =
+// ReaderWriterType and aFilterDetect in iodetect.cxx
+o3tl::enumarray<ReaderWriterType, SwReaderWriterEntry> aReaderWriter =
{
SwReaderWriterEntry( &::GetRTFReader, &::GetRTFWriter, true ),
SwReaderWriterEntry( nullptr, &::GetASCWriter, false ),
@@ -108,20 +110,16 @@ SwRead SwGetReaderXML() // SW_DLLPUBLIC
return ReadXML;
}
-inline void SetFltPtr( sal_uInt16 rPos, SwRead pReader )
-{
- aReaderWriter[ rPos ].pReader = pReader;
-}
namespace sw {
Filters::Filters()
{
- SetFltPtr( READER_WRITER_BAS, (ReadAscii = new AsciiReader) );
- SetFltPtr( READER_WRITER_HTML, (ReadHTML = new HTMLReader) );
- SetFltPtr( READER_WRITER_XML, (ReadXML = new XMLReader) );
- SetFltPtr( READER_WRITER_TEXT_DLG, ReadAscii );
- SetFltPtr( READER_WRITER_TEXT, ReadAscii );
+ aReaderWriter[ ReaderWriterType::Bas ].pReader = ReadAscii = new AsciiReader;
+ aReaderWriter[ ReaderWriterType::Html ].pReader = ReadHTML = new HTMLReader;
+ aReaderWriter[ ReaderWriterType::Xml ].pReader = ReadXML = new XMLReader;
+ aReaderWriter[ ReaderWriterType::TextDlg ].pReader = ReadAscii;
+ aReaderWriter[ ReaderWriterType::Text ].pReader = ReadAscii;
}
Filters::~Filters()
@@ -161,15 +159,15 @@ namespace SwReaderWriter {
Reader* GetRtfReader()
{
- return aReaderWriter[READER_WRITER_RTF].GetReader();
+ return aReaderWriter[ReaderWriterType::Rtf].GetReader();
}
void GetWriter( const OUString& rFltName, const OUString& rBaseURL, WriterRef& xRet )
{
- for( int n = 0; n < MAXFILTER; ++n )
- if ( aFilterDetect[n].IsFilter( rFltName ) )
+ for( ReaderWriterType aType : o3tl::enumrange<ReaderWriterType>() )
+ if ( GetSwIoDetect(aType).IsFilter( rFltName ) )
{
- aReaderWriter[n].GetWriter( rFltName, rBaseURL, xRet );
+ aReaderWriter[aType].GetWriter( rFltName, rBaseURL, xRet );
break;
}
}
@@ -177,9 +175,9 @@ void GetWriter( const OUString& rFltName, const OUString& rBaseURL, WriterRef& x
SwRead GetReader( const OUString& rFltName )
{
SwRead pRead = nullptr;
- for( int n = 0; n < MAXFILTER; ++n )
+ for( ReaderWriterType n : o3tl::enumrange<ReaderWriterType>() )
{
- if ( aFilterDetect[n].IsFilter( rFltName ) )
+ if ( GetSwIoDetect(n).IsFilter( rFltName ) )
{
pRead = aReaderWriter[n].GetReader();
// add special treatment for some readers
diff --git a/sw/source/filter/basflt/iodetect.cxx b/sw/source/filter/basflt/iodetect.cxx
index 5b6e92f..2fc3c09 100644
--- a/sw/source/filter/basflt/iodetect.cxx
+++ b/sw/source/filter/basflt/iodetect.cxx
@@ -24,6 +24,7 @@
#include <svtools/parhtml.hxx>
#include <tools/urlobj.hxx>
#include <unotools/moduleoptions.hxx>
+#include <o3tl/enumarray.hxx>
using namespace ::com::sun::star;
@@ -33,7 +34,7 @@ static bool IsDocShellRegistered()
return SvtModuleOptions().IsWriter();
}
-SwIoDetect aFilterDetect[] =
+o3tl::enumarray<ReaderWriterType, SwIoDetect> aFilterDetect =
{
SwIoDetect( FILTER_RTF ),
SwIoDetect( FILTER_BAS ),
@@ -47,6 +48,11 @@ SwIoDetect aFilterDetect[] =
SwIoDetect( FILTER_TEXT )
};
+SwIoDetect& GetSwIoDetect(ReaderWriterType eType)
+{
+ return aFilterDetect[eType];
+}
+
const OUString SwIoSystem::GetSubStorageName( const SfxFilter& rFltr )
{
// for StorageFilters also set the SubStorageName
More information about the Libreoffice-commits
mailing list