[Libreoffice-commits] core.git: compilerplugins/clang include/tools solenv/clang-format svx/source tools/source vcl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Thu Jan 14 19:23:20 UTC 2021


 compilerplugins/clang/unusedvariableplus.cxx     |    3 
 compilerplugins/clang/useuniqueptr.cxx           |    4 
 include/tools/vcompat.hxx                        |   45 ++--
 solenv/clang-format/excludelist                  |    2 
 svx/source/gallery2/gallerybinaryengine.cxx      |    2 
 svx/source/gallery2/gallerybinaryengineentry.cxx |    2 
 svx/source/gallery2/galtheme.cxx                 |    4 
 tools/source/generic/poly.cxx                    |    4 
 tools/source/generic/poly2.cxx                   |    4 
 tools/source/stream/vcompat.cxx                  |   69 +++----
 vcl/source/font/font.cxx                         |    4 
 vcl/source/gdi/TypeSerializer.cxx                |   12 -
 vcl/source/gdi/gdimtf.cxx                        |    6 
 vcl/source/gdi/graphictools.cxx                  |    8 
 vcl/source/gdi/hatch.cxx                         |    4 
 vcl/source/gdi/lineinfo.cxx                      |    4 
 vcl/source/gdi/mapmod.cxx                        |    4 
 vcl/source/gdi/metaact.cxx                       |  214 +++++++++++------------
 vcl/source/gdi/region.cxx                        |    4 
 vcl/source/gdi/wall.cxx                          |    4 
 20 files changed, 207 insertions(+), 196 deletions(-)

New commits:
commit 9013666c5ad32c5733be7ae27e872ff0d1b3db7b
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jan 14 09:55:41 2021 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Jan 14 20:22:35 2021 +0100

    cid#1471346 Uncaught exception
    
    Change-Id: I535affd6597636aa32e1cf9c6005238f9503ef6b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109266
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/compilerplugins/clang/unusedvariableplus.cxx b/compilerplugins/clang/unusedvariableplus.cxx
index e3e5000d0627..596dc7978f8a 100644
--- a/compilerplugins/clang/unusedvariableplus.cxx
+++ b/compilerplugins/clang/unusedvariableplus.cxx
@@ -432,7 +432,8 @@ public:
             "vcl::ScopedAntialiasing",
             "vcl::WizardTravelSuspension",
             "VerbExecutionControllerGuard",
-            "VersionCompat",
+            "VersionCompatRead",
+            "VersionCompatWrite",
             "SlideShowImpl::WaitSymbolLock",
             "webdav_ucp::NeonHeadRequest",
             "webdav_ucp::NeonPropFindRequest",
diff --git a/compilerplugins/clang/useuniqueptr.cxx b/compilerplugins/clang/useuniqueptr.cxx
index 3445510a206d..a25b016c6799 100644
--- a/compilerplugins/clang/useuniqueptr.cxx
+++ b/compilerplugins/clang/useuniqueptr.cxx
@@ -344,7 +344,9 @@ void UseUniquePtr::CheckDeleteLocalVar(const FunctionDecl* functionDecl, const C
     if (fn == SRCDIR "/vcl/source/gdi/regband.cxx")
         return;
     // this thing relies on explicit delete
-    if (loplugin::TypeCheck(varDecl->getType()).Pointer().Class("VersionCompat").GlobalNamespace())
+    if (loplugin::TypeCheck(varDecl->getType()).Pointer().Class("VersionCompatRead").GlobalNamespace())
+        return;
+    if (loplugin::TypeCheck(varDecl->getType()).Pointer().Class("VersionCompatWrite").GlobalNamespace())
         return;
     if (loplugin::TypeCheck(varDecl->getType()).Pointer().Class("IMapCompat").GlobalNamespace())
         return;
diff --git a/include/tools/vcompat.hxx b/include/tools/vcompat.hxx
index edf61c7dd9b1..18981c659cb3 100644
--- a/include/tools/vcompat.hxx
+++ b/include/tools/vcompat.hxx
@@ -22,34 +22,43 @@
 #include <tools/toolsdllapi.h>
 #include <config_options.h>
 
-inline sal_uInt32 COMPAT_FORMAT( char char1, char char2, char char3, char char4 )
+inline sal_uInt32 COMPAT_FORMAT(char char1, char char2, char char3, char char4)
 {
-    return
-        static_cast<sal_uInt32>(char1) |
-        (static_cast<sal_uInt32>(char2) <<  8) |
-        (static_cast<sal_uInt32>(char3) << 16) |
-        (static_cast<sal_uInt32>(char4) << 24);
+    return static_cast<sal_uInt32>(char1) | (static_cast<sal_uInt32>(char2) << 8)
+           | (static_cast<sal_uInt32>(char3) << 16) | (static_cast<sal_uInt32>(char4) << 24);
 };
 
 class SvStream;
-enum class StreamMode;
 
-class UNLESS_MERGELIBS(TOOLS_DLLPUBLIC) VersionCompat
+class UNLESS_MERGELIBS(TOOLS_DLLPUBLIC) VersionCompatRead
 {
-    SvStream*       mpRWStm;
-    sal_uInt32      mnCompatPos;
-    sal_uInt32      mnTotalSize;
-    StreamMode      mnStmMode;
-    sal_uInt16      mnVersion;
+    SvStream& mrRStm;
+    sal_uInt32 mnCompatPos;
+    sal_uInt32 mnTotalSize;
+    sal_uInt16 mnVersion;
 
-                    VersionCompat( const VersionCompat& ) = delete;
-    VersionCompat&  operator=( const VersionCompat& ) { return *this; }
+    VersionCompatRead(const VersionCompatRead&) = delete;
+    VersionCompatRead& operator=(const VersionCompatRead&) = delete;
 
 public:
-                    VersionCompat( SvStream& rStm, StreamMode nStreamMode, sal_uInt16 nVersion = 1 );
-                    ~VersionCompat();
+    VersionCompatRead(SvStream& rStm);
+    ~VersionCompatRead();
 
-    sal_uInt16      GetVersion() const { return mnVersion; }
+    sal_uInt16 GetVersion() const { return mnVersion; }
+};
+
+class UNLESS_MERGELIBS(TOOLS_DLLPUBLIC) VersionCompatWrite
+{
+    SvStream& mrWStm;
+    sal_uInt32 mnCompatPos;
+    sal_uInt32 mnTotalSize;
+
+    VersionCompatWrite(const VersionCompatWrite&) = delete;
+    VersionCompatWrite& operator=(const VersionCompatWrite&) = delete;
+
+public:
+    VersionCompatWrite(SvStream& rStm, sal_uInt16 nVersion = 1);
+    ~VersionCompatWrite();
 };
 
 #endif
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index 5f2a33bf65c8..99a3d5089d75 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -6258,7 +6258,6 @@ include/tools/stream.hxx
 include/tools/svborder.hxx
 include/tools/time.hxx
 include/tools/urlobj.hxx
-include/tools/vcompat.hxx
 include/tools/weakbase.h
 include/tools/weakbase.hxx
 include/tools/wintypes.hxx
@@ -13868,7 +13867,6 @@ tools/source/reversemap/bestreversemap.cxx
 tools/source/stream/stream.cxx
 tools/source/stream/strmunx.cxx
 tools/source/stream/strmwnt.cxx
-tools/source/stream/vcompat.cxx
 tools/source/string/tenccvt.cxx
 tools/source/zcodec/zcodec.cxx
 ucb/qa/cppunit/webdav/webdav_local_neon.cxx
diff --git a/svx/source/gallery2/gallerybinaryengine.cxx b/svx/source/gallery2/gallerybinaryengine.cxx
index 8f0fa9fcb240..16334e719623 100644
--- a/svx/source/gallery2/gallerybinaryengine.cxx
+++ b/svx/source/gallery2/gallerybinaryengine.cxx
@@ -771,7 +771,7 @@ SvStream& GalleryBinaryEngine::writeGalleryTheme(SvStream& rOStm, const GalleryT
         .WriteUInt32(COMPAT_FORMAT('E', 'S', 'R', 'V'));
 
     const tools::Long nReservePos = rOStm.Tell();
-    std::unique_ptr<VersionCompat> pCompat(new VersionCompat(rOStm, StreamMode::WRITE, 2));
+    std::unique_ptr<VersionCompatWrite> pCompat(new VersionCompatWrite(rOStm, 2));
 
     rOStm.WriteUInt32(rId).WriteBool(pThm->IsNameFromResource()); // From version 2 and up
 
diff --git a/svx/source/gallery2/gallerybinaryengineentry.cxx b/svx/source/gallery2/gallerybinaryengineentry.cxx
index bb11d015dfd0..e50e8e605d08 100644
--- a/svx/source/gallery2/gallerybinaryengineentry.cxx
+++ b/svx/source/gallery2/gallerybinaryengineentry.cxx
@@ -112,7 +112,7 @@ GalleryThemeEntry* GalleryBinaryEngineEntry::CreateThemeEntry(const INetURLObjec
                         if (nId1 == COMPAT_FORMAT('G', 'A', 'L', 'R')
                             && nId2 == COMPAT_FORMAT('E', 'S', 'R', 'V'))
                         {
-                            VersionCompat aCompat(*pIStm, StreamMode::READ);
+                            VersionCompatRead aCompat(*pIStm);
 
                             pIStm->ReadUInt32(nThemeId);
 
diff --git a/svx/source/gallery2/galtheme.cxx b/svx/source/gallery2/galtheme.cxx
index e9ca797a3e8d..4ecc75567c82 100644
--- a/svx/source/gallery2/galtheme.cxx
+++ b/svx/source/gallery2/galtheme.cxx
@@ -735,12 +735,12 @@ SvStream& GalleryTheme::ReadData( SvStream& rIStm )
 
         // In newer versions a 512 byte reserve buffer is located at the end,
         // the data is located at the beginning of this buffer and are clamped
-        // by a VersionCompat.
+        // by a VersionCompatRead.
         if( !rIStm.eof() &&
             nId1 == COMPAT_FORMAT( 'G', 'A', 'L', 'R' ) &&
             nId2 == COMPAT_FORMAT( 'E', 'S', 'R', 'V' ) )
         {
-            VersionCompat   aCompat( rIStm, StreamMode::READ );
+            VersionCompatRead aCompat(rIStm);
             sal_uInt32      nTemp32;
             bool            bThemeNameFromResource = false;
 
diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx
index 7e09e2a75566..9d06055150b4 100644
--- a/tools/source/generic/poly.cxx
+++ b/tools/source/generic/poly.cxx
@@ -1667,7 +1667,7 @@ void Polygon::ImplRead( SvStream& rIStream )
 
 void Polygon::Read( SvStream& rIStream )
 {
-    VersionCompat aCompat( rIStream, StreamMode::READ );
+    VersionCompatRead aCompat(rIStream);
 
     ImplRead( rIStream );
 }
@@ -1684,7 +1684,7 @@ void Polygon::ImplWrite( SvStream& rOStream ) const
 
 void Polygon::Write( SvStream& rOStream ) const
 {
-    VersionCompat aCompat( rOStream, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat(rOStream, 1);
 
     ImplWrite( rOStream );
 }
diff --git a/tools/source/generic/poly2.cxx b/tools/source/generic/poly2.cxx
index 285044b6fcc6..631e88caf401 100644
--- a/tools/source/generic/poly2.cxx
+++ b/tools/source/generic/poly2.cxx
@@ -427,7 +427,7 @@ SvStream& WritePolyPolygon( SvStream& rOStream, const tools::PolyPolygon& rPolyP
 
 void PolyPolygon::Read( SvStream& rIStream )
 {
-    VersionCompat aCompat( rIStream, StreamMode::READ );
+    VersionCompatRead aCompat(rIStream);
 
     sal_uInt16 nPolyCount(0);
 
@@ -460,7 +460,7 @@ void PolyPolygon::Read( SvStream& rIStream )
 
 void PolyPolygon::Write( SvStream& rOStream ) const
 {
-    VersionCompat aCompat( rOStream, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat(rOStream, 1);
 
     // Write number of polygons
     sal_uInt16 nPolyCount = mpImplPolyPolygon->mvPolyAry.size();
diff --git a/tools/source/stream/vcompat.cxx b/tools/source/stream/vcompat.cxx
index a63440701360..bf85c0c9a4cf 100644
--- a/tools/source/stream/vcompat.cxx
+++ b/tools/source/stream/vcompat.cxx
@@ -20,48 +20,49 @@
 #include <tools/stream.hxx>
 #include <tools/vcompat.hxx>
 
-VersionCompat::VersionCompat( SvStream& rStm, StreamMode nStreamMode, sal_uInt16 nVersion ) :
-            mpRWStm     ( &rStm ),
-            mnCompatPos ( 0 ),
-            mnTotalSize ( 0 ),
-            mnStmMode   ( nStreamMode ),
-            mnVersion   ( nVersion )
+VersionCompatRead::VersionCompatRead(SvStream& rStm)
+    : mrRStm(rStm)
+    , mnCompatPos(0)
+    , mnTotalSize(0)
+    , mnVersion(1)
 {
-    if( mpRWStm->GetError() )
+    if (mrRStm.GetError())
         return;
 
-    if( StreamMode::WRITE == mnStmMode )
-    {
-        mpRWStm->WriteUInt16( mnVersion );
-        mnCompatPos = mpRWStm->Tell();
-        mnTotalSize = mnCompatPos + 4;
-        mpRWStm->SeekRel( 4 );
-    }
-    else
-    {
-        mpRWStm->ReadUInt16( mnVersion );
-        mpRWStm->ReadUInt32( mnTotalSize );
-        mnCompatPos = mpRWStm->Tell();
-    }
+    mrRStm.ReadUInt16(mnVersion);
+    mrRStm.ReadUInt32(mnTotalSize);
+    mnCompatPos = mrRStm.Tell();
 }
 
-VersionCompat::~VersionCompat()
+VersionCompatWrite::VersionCompatWrite(SvStream& rStm, sal_uInt16 nVersion)
+    : mrWStm(rStm)
+    , mnCompatPos(0)
+    , mnTotalSize(0)
 {
-    if( StreamMode::WRITE == mnStmMode )
-    {
-        const sal_uInt32 nEndPos = mpRWStm->Tell();
+    if (mrWStm.GetError())
+        return;
+
+    mrWStm.WriteUInt16(nVersion);
+    mnCompatPos = mrWStm.Tell();
+    mnTotalSize = mnCompatPos + 4;
+    mrWStm.SeekRel(4);
+}
+
+VersionCompatRead::~VersionCompatRead()
+{
+    const sal_uInt32 nReadSize = mrRStm.Tell() - mnCompatPos;
+
+    if (mnTotalSize > nReadSize)
+        mrRStm.SeekRel(mnTotalSize - nReadSize);
+}
 
-        mpRWStm->Seek( mnCompatPos );
-        mpRWStm->WriteUInt32(  nEndPos - mnTotalSize  );
-        mpRWStm->Seek( nEndPos );
-    }
-    else
-    {
-        const sal_uInt32 nReadSize = mpRWStm->Tell() - mnCompatPos;
+VersionCompatWrite::~VersionCompatWrite()
+{
+    const sal_uInt32 nEndPos = mrWStm.Tell();
 
-        if( mnTotalSize > nReadSize )
-            mpRWStm->SeekRel( mnTotalSize - nReadSize );
-    }
+    mrWStm.Seek(mnCompatPos);
+    mrWStm.WriteUInt32(nEndPos - mnTotalSize);
+    mrWStm.Seek(nEndPos);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx
index 21334ecba1cf..2c64a4a14d0f 100644
--- a/vcl/source/font/font.cxx
+++ b/vcl/source/font/font.cxx
@@ -360,7 +360,7 @@ void Font::GetFontAttributes( FontAttributes& rAttrs ) const
 
 SvStream& ReadImplFont( SvStream& rIStm, ImplFont& rImplFont )
 {
-    VersionCompat   aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead aCompat( rIStm );
     sal_uInt16      nTmp16(0);
     sal_Int16       nTmps16(0);
     bool            bTmp(false);
@@ -409,7 +409,7 @@ SvStream& ReadImplFont( SvStream& rIStm, ImplFont& rImplFont )
 
 SvStream& WriteImplFont( SvStream& rOStm, const ImplFont& rImplFont )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 3 );
+    VersionCompatWrite aCompat( rOStm, 3 );
     TypeSerializer aSerializer(rOStm);
     rOStm.WriteUniOrByteString( rImplFont.GetFamilyName(), rOStm.GetStreamCharSet() );
     rOStm.WriteUniOrByteString( rImplFont.GetStyleName(), rOStm.GetStreamCharSet() );
diff --git a/vcl/source/gdi/TypeSerializer.cxx b/vcl/source/gdi/TypeSerializer.cxx
index b1cdf4790c01..70bc9420153a 100644
--- a/vcl/source/gdi/TypeSerializer.cxx
+++ b/vcl/source/gdi/TypeSerializer.cxx
@@ -31,7 +31,7 @@ TypeSerializer::TypeSerializer(SvStream& rStream)
 
 void TypeSerializer::readGradient(Gradient& rGradient)
 {
-    VersionCompat aCompat(mrStream, StreamMode::READ);
+    VersionCompatRead aCompat(mrStream);
 
     sal_uInt16 nStyle = 0;
     Color aStartColor;
@@ -74,7 +74,7 @@ void TypeSerializer::readGradient(Gradient& rGradient)
 
 void TypeSerializer::writeGradient(const Gradient& rGradient)
 {
-    VersionCompat aCompat(mrStream, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(mrStream, 1);
 
     mrStream.WriteUInt16(static_cast<sal_uInt16>(rGradient.GetStyle()));
     writeColor(rGradient.GetStartColor());
@@ -99,7 +99,7 @@ void TypeSerializer::readGfxLink(GfxLink& rGfxLink)
     bool bMapAndSizeValid = false;
 
     {
-        VersionCompat aCompat(mrStream, StreamMode::READ);
+        VersionCompatRead aCompat(mrStream);
 
         // Version 1
         mrStream.ReadUInt16(nType);
@@ -137,7 +137,7 @@ void TypeSerializer::readGfxLink(GfxLink& rGfxLink)
 void TypeSerializer::writeGfxLink(const GfxLink& rGfxLink)
 {
     {
-        VersionCompat aCompat(mrStream, StreamMode::WRITE, 2);
+        VersionCompatWrite aCompat(mrStream, 2);
 
         // Version 1
         mrStream.WriteUInt16(sal_uInt16(rGfxLink.GetType()));
@@ -186,7 +186,7 @@ void TypeSerializer::readGraphic(Graphic& rGraphic)
 
         // read compat info, destructor writes stuff into the header
         {
-            VersionCompat aCompat(mrStream, StreamMode::READ);
+            VersionCompatRead aCompat(mrStream);
         }
 
         readGfxLink(aLink);
@@ -335,7 +335,7 @@ void TypeSerializer::writeGraphic(const Graphic& rGraphic)
 
         // write compat info, destructor writes stuff into the header
         {
-            VersionCompat aCompat(mrStream, StreamMode::WRITE, 1);
+            VersionCompatWrite aCompat(mrStream, 1);
         }
         pGfxLink->SetPrefMapMode(aGraphic.GetPrefMapMode());
         pGfxLink->SetPrefSize(aGraphic.GetPrefSize());
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index 26955027cd99..8d65c7b1a31f 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -2665,7 +2665,7 @@ SvStream& ReadGDIMetaFile(SvStream& rIStm, GDIMetaFile& rGDIMetaFile, ImplMetaRe
             // new format
             sal_uInt32     nStmCompressMode = 0;
             sal_uInt32     nCount = 0;
-            std::unique_ptr<VersionCompat> pCompat(new VersionCompat( rIStm, StreamMode::READ ));
+            std::unique_ptr<VersionCompatRead> pCompat(new VersionCompatRead(rIStm));
 
             rIStm.ReadUInt32( nStmCompressMode );
             ReadMapMode( rIStm, rGDIMetaFile.m_aPrefMapMode );
@@ -2750,14 +2750,14 @@ SvStream& GDIMetaFile::Write( SvStream& rOStm )
     rOStm.WriteBytes( "VCLMTF", 6 );
 
     {
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
 
         rOStm.WriteUInt32(static_cast<sal_uInt32>(nStmCompressMode));
         WriteMapMode(rOStm, m_aPrefMapMode);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writeSize(m_aPrefSize);
         rOStm.WriteUInt32(GetActionSize());
-    } // VersionCompat dtor writes stuff into the header
+    } // VersionCompatWrite dtor writes stuff into the header
 
     ImplMetaWriteData aWriteData;
 
diff --git a/vcl/source/gdi/graphictools.cxx b/vcl/source/gdi/graphictools.cxx
index 7ec3d7d36588..aaff941a3507 100644
--- a/vcl/source/gdi/graphictools.cxx
+++ b/vcl/source/gdi/graphictools.cxx
@@ -113,7 +113,7 @@ void SvtGraphicStroke::scale( double fXScale, double fYScale )
 
 SvStream& WriteSvtGraphicStroke( SvStream& rOStm, const SvtGraphicStroke& rClass )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat( rOStm, 1 );
 
     rClass.maPath.Write( rOStm );
     rClass.maStartArrow.Write( rOStm );
@@ -136,7 +136,7 @@ SvStream& WriteSvtGraphicStroke( SvStream& rOStm, const SvtGraphicStroke& rClass
 
 SvStream& ReadSvtGraphicStroke( SvStream& rIStm, SvtGraphicStroke& rClass )
 {
-    VersionCompat aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead aCompat( rIStm );
 
     rClass.maPath.Read( rIStm );
     rClass.maStartArrow.Read( rIStm );
@@ -233,7 +233,7 @@ void SvtGraphicFill::setPath( const tools::PolyPolygon& rPath )
 
 SvStream& WriteSvtGraphicFill( SvStream& rOStm, const SvtGraphicFill& rClass )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat( rOStm, 1 );
 
     rClass.maPath.Write( rOStm );
     TypeSerializer aSerializer(rOStm);
@@ -263,7 +263,7 @@ SvStream& WriteSvtGraphicFill( SvStream& rOStm, const SvtGraphicFill& rClass )
 
 SvStream& ReadSvtGraphicFill( SvStream& rIStm, SvtGraphicFill& rClass )
 {
-    VersionCompat aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead aCompat( rIStm );
 
     rClass.maPath.Read( rIStm );
 
diff --git a/vcl/source/gdi/hatch.cxx b/vcl/source/gdi/hatch.cxx
index 353b8cbd01dd..4adbd035fa52 100644
--- a/vcl/source/gdi/hatch.cxx
+++ b/vcl/source/gdi/hatch.cxx
@@ -78,7 +78,7 @@ void Hatch::SetAngle( Degree10 nAngle10 )
 
 SvStream& ReadHatch( SvStream& rIStm, Hatch& rHatch )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     sal_uInt16 nTmp16;
     sal_Int32 nTmp32(0);
 
@@ -97,7 +97,7 @@ SvStream& ReadHatch( SvStream& rIStm, Hatch& rHatch )
 
 SvStream& WriteHatch( SvStream& rOStm, const Hatch& rHatch )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat(rOStm, 1);
 
     rOStm.WriteUInt16( static_cast<sal_uInt16>(rHatch.mpImplHatch->meStyle) );
 
diff --git a/vcl/source/gdi/lineinfo.cxx b/vcl/source/gdi/lineinfo.cxx
index 9490a0383133..94c1d1b05569 100644
--- a/vcl/source/gdi/lineinfo.cxx
+++ b/vcl/source/gdi/lineinfo.cxx
@@ -135,7 +135,7 @@ bool LineInfo::IsDefault() const
 
 SvStream& ReadLineInfo( SvStream& rIStm, LineInfo& rLineInfo )
 {
-    VersionCompat   aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead aCompat( rIStm );
     sal_uInt16          nTmp16(0);
     sal_Int32       nTmp32(0);
 
@@ -171,7 +171,7 @@ SvStream& ReadLineInfo( SvStream& rIStm, LineInfo& rLineInfo )
 
 SvStream& WriteLineInfo( SvStream& rOStm, const LineInfo& rLineInfo )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 4 );
+    VersionCompatWrite aCompat( rOStm, 4 );
 
     // version 1
     rOStm.WriteUInt16( static_cast<sal_uInt16>(rLineInfo.mpImplLineInfo->meStyle) )
diff --git a/vcl/source/gdi/mapmod.cxx b/vcl/source/gdi/mapmod.cxx
index 41a3beeb0b06..2ce154ae08e3 100644
--- a/vcl/source/gdi/mapmod.cxx
+++ b/vcl/source/gdi/mapmod.cxx
@@ -135,7 +135,7 @@ bool MapMode::IsDefault() const
 
 SvStream& ReadMapMode( SvStream& rIStm, MapMode& rMapMode )
 {
-    VersionCompat aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead aCompat(rIStm);
     sal_uInt16    nTmp16;
 
     TypeSerializer aSerializer(rIStm);
@@ -151,7 +151,7 @@ SvStream& ReadMapMode( SvStream& rIStm, MapMode& rMapMode )
 
 SvStream& WriteMapMode( SvStream& rOStm, const MapMode& rMapMode )
 {
-    VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
+    VersionCompatWrite aCompat(rOStm, 1);
 
     TypeSerializer aSerializer(rOStm);
 
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index 562113c9b716..11100101f2eb 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -260,7 +260,7 @@ rtl::Reference<MetaAction> MetaAction::ReadMetaAction( SvStream& rIStm, ImplMeta
 
         default:
         {
-            VersionCompat aCompat(rIStm, StreamMode::READ);
+            VersionCompatRead aCompat(rIStm);
         }
         break;
     }
@@ -307,7 +307,7 @@ void MetaPixelAction::Scale( double fScaleX, double fScaleY )
 void MetaPixelAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maPt);
     rOStm.WriteUInt32(maColor.mValue);
@@ -315,7 +315,7 @@ void MetaPixelAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaPixelAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
     rIStm.ReadUInt32(maColor.mValue);
@@ -356,14 +356,14 @@ void MetaPointAction::Scale( double fScaleX, double fScaleY )
 void MetaPointAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maPt);
 }
 
 void MetaPointAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
 }
@@ -418,7 +418,7 @@ void MetaLineAction::Scale( double fScaleX, double fScaleY )
 void MetaLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
 
     // Version 1
     TypeSerializer aSerializer(rOStm);
@@ -430,7 +430,7 @@ void MetaLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
 
     // Version 1
     TypeSerializer aSerializer(rIStm);
@@ -479,14 +479,14 @@ void MetaRectAction::Scale( double fScaleX, double fScaleY )
 void MetaRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
 }
 
 void MetaRectAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
 }
@@ -533,7 +533,7 @@ void MetaRoundRectAction::Scale( double fScaleX, double fScaleY )
 void MetaRoundRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     rOStm.WriteUInt32( mnHorzRound ).WriteUInt32( mnVertRound );
@@ -541,7 +541,7 @@ void MetaRoundRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaRoundRectAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     rIStm.ReadUInt32( mnHorzRound ).ReadUInt32( mnVertRound );
@@ -582,14 +582,14 @@ void MetaEllipseAction::Scale( double fScaleX, double fScaleY )
 void MetaEllipseAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
 }
 
 void MetaEllipseAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
 }
@@ -636,7 +636,7 @@ void MetaArcAction::Scale( double fScaleX, double fScaleY )
 void MetaArcAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     aSerializer.writePoint(maStartPt);
@@ -645,7 +645,7 @@ void MetaArcAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaArcAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     aSerializer.readPoint(maStartPt);
@@ -694,7 +694,7 @@ void MetaPieAction::Scale( double fScaleX, double fScaleY )
 void MetaPieAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     aSerializer.writePoint(maStartPt);
@@ -703,7 +703,7 @@ void MetaPieAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaPieAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     aSerializer.readPoint(maStartPt);
@@ -752,7 +752,7 @@ void MetaChordAction::Scale( double fScaleX, double fScaleY )
 void MetaChordAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     aSerializer.writePoint(maStartPt);
@@ -761,7 +761,7 @@ void MetaChordAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaChordAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     aSerializer.readPoint(maStartPt);
@@ -813,7 +813,7 @@ void MetaPolyLineAction::Scale( double fScaleX, double fScaleY )
 void MetaPolyLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 3);
+    VersionCompatWrite aCompat(rOStm, 3);
 
     tools::Polygon aSimplePoly;
     maPoly.AdaptiveSubdivide( aSimplePoly );
@@ -829,7 +829,7 @@ void MetaPolyLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaPolyLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
 
     // Version 1
     ReadPolygon( rIStm, maPoly );
@@ -881,7 +881,7 @@ void MetaPolygonAction::Scale( double fScaleX, double fScaleY )
 void MetaPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
 
     tools::Polygon aSimplePoly;                            // Version 1
     maPoly.AdaptiveSubdivide( aSimplePoly );
@@ -895,7 +895,7 @@ void MetaPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaPolygonAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
 
     ReadPolygon( rIStm, maPoly );       // Version 1
 
@@ -944,7 +944,7 @@ void MetaPolyPolygonAction::Scale( double fScaleX, double fScaleY )
 void MetaPolyPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
 
     sal_uInt16 nNumberOfComplexPolygons = 0;
     sal_uInt16 i, nPolyCount = maPolyPoly.Count();
@@ -976,7 +976,7 @@ void MetaPolyPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaPolyPolygonAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadPolyPolygon( rIStm, maPolyPoly );                // Version 1
 
     if ( aCompat.GetVersion() < 2 )    // Version 2
@@ -1049,7 +1049,7 @@ void MetaTextAction::Scale( double fScaleX, double fScaleY )
 void MetaTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maPt);
     rOStm.WriteUniOrByteString( maStr, pData->meActualCharSet );
@@ -1061,7 +1061,7 @@ void MetaTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaTextAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
     maStr = rIStm.ReadUniOrByteString(pData->meActualCharSet);
@@ -1151,7 +1151,7 @@ void MetaTextArrayAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     const sal_Int32 nAryLen = mpDXAry ? mnLen : 0;
 
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maStartPt);
     rOStm.WriteUniOrByteString( maStr, pData->meActualCharSet );
@@ -1169,7 +1169,7 @@ void MetaTextArrayAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
 {
     mpDXAry.reset();
 
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maStartPt);
     maStr = rIStm.ReadUniOrByteString(pData->meActualCharSet);
@@ -1275,7 +1275,7 @@ void MetaStretchTextAction::Scale( double fScaleX, double fScaleY )
 void MetaStretchTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maPt);
     rOStm.WriteUniOrByteString( maStr, pData->meActualCharSet );
@@ -1288,7 +1288,7 @@ void MetaStretchTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaStretchTextAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
     maStr = rIStm.ReadUniOrByteString(pData->meActualCharSet);
@@ -1343,7 +1343,7 @@ void MetaTextRectAction::Scale( double fScaleX, double fScaleY )
 void MetaTextRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     rOStm.WriteUniOrByteString( maStr, pData->meActualCharSet );
@@ -1354,7 +1354,7 @@ void MetaTextRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaTextRectAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     maStr = rIStm.ReadUniOrByteString(pData->meActualCharSet);
@@ -1413,7 +1413,7 @@ void MetaTextLineAction::Scale( double fScaleX, double fScaleY )
 void MetaTextLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 2);
+    VersionCompatWrite aCompat(rOStm, 2);
 
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maPos);
@@ -1427,7 +1427,7 @@ void MetaTextLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaTextLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
 
     sal_Int32 nTempWidth(0);
     TypeSerializer aSerializer(rIStm);
@@ -1489,7 +1489,7 @@ void MetaBmpAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1498,7 +1498,7 @@ void MetaBmpAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaBmpAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1547,7 +1547,7 @@ void MetaBmpScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1558,7 +1558,7 @@ void MetaBmpScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaBmpScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1611,7 +1611,7 @@ void MetaBmpScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maDstPt);
@@ -1624,7 +1624,7 @@ void MetaBmpScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaBmpScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maDstPt);
@@ -1671,7 +1671,7 @@ void MetaBmpExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmpEx.GetBitmap() )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIBBitmapEx(maBmpEx, rOStm);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1680,7 +1680,7 @@ void MetaBmpExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaBmpExAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIBBitmapEx(maBmpEx, rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1729,7 +1729,7 @@ void MetaBmpExScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmpEx.GetBitmap() )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIBBitmapEx(maBmpEx, rOStm);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1739,7 +1739,7 @@ void MetaBmpExScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaBmpExScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIBBitmapEx(maBmpEx, rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1792,7 +1792,7 @@ void MetaBmpExScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData
     if( !!maBmpEx.GetBitmap() )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIBBitmapEx(maBmpEx, rOStm);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maDstPt);
@@ -1804,7 +1804,7 @@ void MetaBmpExScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData
 
 void MetaBmpExScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIBBitmapEx(maBmpEx, rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maDstPt);
@@ -1854,7 +1854,7 @@ void MetaMaskAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1863,7 +1863,7 @@ void MetaMaskAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaMaskAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1914,7 +1914,7 @@ void MetaMaskScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         TypeSerializer aSerializer(rOStm);
         aSerializer.writePoint(maPt);
@@ -1924,7 +1924,7 @@ void MetaMaskScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaMaskScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPt);
@@ -1979,7 +1979,7 @@ void MetaMaskScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
     if( !!maBmp )
     {
         MetaAction::Write(rOStm, pData);
-        VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+        VersionCompatWrite aCompat(rOStm, 1);
         WriteDIB(maBmp, rOStm, false, true);
         rOStm.WriteUInt32(maColor.mValue);
         TypeSerializer aSerializer(rOStm);
@@ -1992,7 +1992,7 @@ void MetaMaskScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaMaskScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadDIB(maBmp, rIStm, true);
     rIStm.ReadUInt32(maColor.mValue);
     TypeSerializer aSerializer(rIStm);
@@ -2038,7 +2038,7 @@ void MetaGradientAction::Scale( double fScaleX, double fScaleY )
 void MetaGradientAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
     aSerializer.writeGradient(maGradient);
@@ -2046,7 +2046,7 @@ void MetaGradientAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaGradientAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
     aSerializer.readGradient(maGradient);
@@ -2092,7 +2092,7 @@ void MetaGradientExAction::Scale( double fScaleX, double fScaleY )
 void MetaGradientExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     // #i105373# see comment at MetaTransparentAction::Write
     tools::PolyPolygon aNoCurvePolyPolygon;
@@ -2105,7 +2105,7 @@ void MetaGradientExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaGradientExAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadPolyPolygon( rIStm, maPolyPoly );
     TypeSerializer aSerializer(rIStm);
     aSerializer.readGradient(maGradient);
@@ -2148,7 +2148,7 @@ void MetaHatchAction::Scale( double fScaleX, double fScaleY )
 void MetaHatchAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     // #i105373# see comment at MetaTransparentAction::Write
     tools::PolyPolygon aNoCurvePolyPolygon;
@@ -2160,7 +2160,7 @@ void MetaHatchAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaHatchAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadPolyPolygon( rIStm, maPolyPoly );
     ReadHatch( rIStm, maHatch );
 }
@@ -2202,14 +2202,14 @@ void MetaWallpaperAction::Scale( double fScaleX, double fScaleY )
 void MetaWallpaperAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     WriteWallpaper( rOStm, maWallpaper );
 }
 
 void MetaWallpaperAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadWallpaper( rIStm, maWallpaper );
 }
 
@@ -2253,7 +2253,7 @@ void MetaClipRegionAction::Scale( double fScaleX, double fScaleY )
 void MetaClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     WriteRegion( rOStm, maRegion );
     rOStm.WriteBool( mbClip );
@@ -2261,7 +2261,7 @@ void MetaClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadRegion( rIStm, maRegion );
     rIStm.ReadCharAsBool( mbClip );
 }
@@ -2301,14 +2301,14 @@ void MetaISectRectClipRegionAction::Scale( double fScaleX, double fScaleY )
 void MetaISectRectClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeRectangle(maRect);
 }
 
 void MetaISectRectClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readRectangle(maRect);
 }
@@ -2349,13 +2349,13 @@ void MetaISectRegionClipRegionAction::Scale( double fScaleX, double fScaleY )
 void MetaISectRegionClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     WriteRegion( rOStm, maRegion );
 }
 
 void MetaISectRegionClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadRegion( rIStm, maRegion );
 }
 
@@ -2393,13 +2393,13 @@ void MetaMoveClipRegionAction::Scale( double fScaleX, double fScaleY )
 void MetaMoveClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteInt32( mnHorzMove ).WriteInt32( mnVertMove );
 }
 
 void MetaMoveClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     sal_Int32 nTmpHM(0), nTmpVM(0);
     rIStm.ReadInt32( nTmpHM ).ReadInt32( nTmpVM );
     mnHorzMove = nTmpHM;
@@ -2436,14 +2436,14 @@ rtl::Reference<MetaAction> MetaLineColorAction::Clone()
 void MetaLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
     rOStm.WriteBool( mbSet );
 }
 
 void MetaLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
     rIStm.ReadCharAsBool( mbSet );
 }
@@ -2478,14 +2478,14 @@ rtl::Reference<MetaAction> MetaFillColorAction::Clone()
 void MetaFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
     rOStm.WriteBool( mbSet );
 }
 
 void MetaFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
     rIStm.ReadCharAsBool( mbSet );
 }
@@ -2515,13 +2515,13 @@ rtl::Reference<MetaAction> MetaTextColorAction::Clone()
 void MetaTextColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
 }
 
 void MetaTextColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
 }
 
@@ -2555,14 +2555,14 @@ rtl::Reference<MetaAction> MetaTextFillColorAction::Clone()
 void MetaTextFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
     rOStm.WriteBool( mbSet );
 }
 
 void MetaTextFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
     rIStm.ReadCharAsBool( mbSet );
 }
@@ -2597,14 +2597,14 @@ rtl::Reference<MetaAction> MetaTextLineColorAction::Clone()
 void MetaTextLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
     rOStm.WriteBool( mbSet );
 }
 
 void MetaTextLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
     rIStm.ReadCharAsBool( mbSet );
 }
@@ -2639,14 +2639,14 @@ rtl::Reference<MetaAction> MetaOverlineColorAction::Clone()
 void MetaOverlineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32(maColor.mValue);
     rOStm.WriteBool( mbSet );
 }
 
 void MetaOverlineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt32(maColor.mValue);
     rIStm.ReadCharAsBool( mbSet );
 }
@@ -2677,7 +2677,7 @@ rtl::Reference<MetaAction> MetaTextAlignAction::Clone()
 void MetaTextAlignAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt16( maAlign );
 }
 
@@ -2685,7 +2685,7 @@ void MetaTextAlignAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
     sal_uInt16 nTmp16(0);
 
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt16( nTmp16 ); maAlign = static_cast<TextAlign>(nTmp16);
 }
 
@@ -2722,13 +2722,13 @@ void MetaMapModeAction::Scale( double fScaleX, double fScaleY )
 void MetaMapModeAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     WriteMapMode( rOStm, maMapMode );
 }
 
 void MetaMapModeAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadMapMode( rIStm, maMapMode );
 }
 
@@ -2775,7 +2775,7 @@ void MetaFontAction::Scale( double fScaleX, double fScaleY )
 void MetaFontAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     WriteFont( rOStm, maFont );
     pData->meActualCharSet = maFont.GetCharSet();
     if ( pData->meActualCharSet == RTL_TEXTENCODING_DONTKNOW )
@@ -2784,7 +2784,7 @@ void MetaFontAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaFontAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadFont( rIStm, maFont );
     pData->meActualCharSet = maFont.GetCharSet();
     if ( pData->meActualCharSet == RTL_TEXTENCODING_DONTKNOW )
@@ -2817,13 +2817,13 @@ rtl::Reference<MetaAction> MetaPushAction::Clone()
 void MetaPushAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt16( static_cast<sal_uInt16>(mnFlags) );
 }
 
 void MetaPushAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     sal_uInt16 tmp;
     rIStm.ReadUInt16( tmp );
     mnFlags = static_cast<PushFlags>(tmp);
@@ -2849,12 +2849,12 @@ rtl::Reference<MetaAction> MetaPopAction::Clone()
 void MetaPopAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 }
 
 void MetaPopAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
 }
 
 MetaRasterOpAction::MetaRasterOpAction() :
@@ -2884,7 +2884,7 @@ rtl::Reference<MetaAction> MetaRasterOpAction::Clone()
 void MetaRasterOpAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt16( static_cast<sal_uInt16>(meRasterOp) );
 }
 
@@ -2892,7 +2892,7 @@ void MetaRasterOpAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
     sal_uInt16 nTmp16(0);
 
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     rIStm.ReadUInt16( nTmp16 ); meRasterOp = static_cast<RasterOp>(nTmp16);
 }
 
@@ -2934,7 +2934,7 @@ void MetaTransparentAction::Scale( double fScaleX, double fScaleY )
 void MetaTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     // #i105373# The tools::PolyPolygon in this action may be a curve; this
     // was ignored until now what is an error. To make older office
@@ -2954,7 +2954,7 @@ void MetaTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaTransparentAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadPolyPolygon( rIStm, maPolyPoly );
     rIStm.ReadUInt16( mnTransPercent );
 }
@@ -3001,7 +3001,7 @@ void MetaFloatTransparentAction::Scale( double fScaleX, double fScaleY )
 void MetaFloatTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     maMtf.Write( rOStm );
     TypeSerializer aSerializer(rOStm);
@@ -3012,7 +3012,7 @@ void MetaFloatTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pDat
 
 void MetaFloatTransparentAction::Read(SvStream& rIStm, ImplMetaReadData* pData)
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     ReadGDIMetaFile(rIStm, maMtf, pData);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maPoint);
@@ -3062,7 +3062,7 @@ void MetaEPSAction::Scale( double fScaleX, double fScaleY )
 void MetaEPSAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     TypeSerializer aSerializer(rOStm);
     aSerializer.writeGfxLink(maGfxLink);
@@ -3073,7 +3073,7 @@ void MetaEPSAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaEPSAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readGfxLink(maGfxLink);
     aSerializer.readPoint(maPoint);
@@ -3111,7 +3111,7 @@ rtl::Reference<MetaAction> MetaRefPointAction::Clone()
 void MetaRefPointAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
 
     TypeSerializer aSerializer(rOStm);
     aSerializer.writePoint(maRefPoint);
@@ -3120,7 +3120,7 @@ void MetaRefPointAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaRefPointAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     TypeSerializer aSerializer(rIStm);
     aSerializer.readPoint(maRefPoint);
     rIStm.ReadCharAsBool( mbSet );
@@ -3301,7 +3301,7 @@ void MetaCommentAction::Scale( double fXScale, double fYScale )
 void MetaCommentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     write_uInt16_lenPrefixed_uInt8s_FromOString(rOStm, maComment);
     rOStm.WriteInt32( mnValue ).WriteUInt32( mnDataSize );
 
@@ -3311,7 +3311,7 @@ void MetaCommentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 
 void MetaCommentAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     maComment = read_uInt16_lenPrefixed_uInt8s_ToOString(rIStm);
     rIStm.ReadInt32( mnValue ).ReadUInt32( mnDataSize );
 
@@ -3359,13 +3359,13 @@ rtl::Reference<MetaAction> MetaLayoutModeAction::Clone()
 void MetaLayoutModeAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt32( static_cast<sal_uInt32>(mnLayoutMode) );
 }
 
 void MetaLayoutModeAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     sal_uInt32 tmp;
     rIStm.ReadUInt32( tmp );
     mnLayoutMode = static_cast<ComplexTextLayoutFlags>(tmp);
@@ -3397,13 +3397,13 @@ rtl::Reference<MetaAction> MetaTextLanguageAction::Clone()
 void MetaTextLanguageAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
 {
     MetaAction::Write(rOStm, pData);
-    VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
+    VersionCompatWrite aCompat(rOStm, 1);
     rOStm.WriteUInt16( static_cast<sal_uInt16>(meTextLanguage) );
 }
 
 void MetaTextLanguageAction::Read( SvStream& rIStm, ImplMetaReadData* )
 {
-    VersionCompat aCompat(rIStm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStm);
     sal_uInt16 nTmp = 0;
     rIStm.ReadUInt16( nTmp );
     meTextLanguage = static_cast<LanguageType>(nTmp);
diff --git a/vcl/source/gdi/region.cxx b/vcl/source/gdi/region.cxx
index 2a03a3d3beb4..0f80a717c5f6 100644
--- a/vcl/source/gdi/region.cxx
+++ b/vcl/source/gdi/region.cxx
@@ -1522,7 +1522,7 @@ bool vcl::Region::operator==( const vcl::Region& rRegion ) const
 
 SvStream& ReadRegion(SvStream& rIStrm, vcl::Region& rRegion)
 {
-    VersionCompat aCompat(rIStrm, StreamMode::READ);
+    VersionCompatRead aCompat(rIStrm);
     sal_uInt16 nVersion(0);
     sal_uInt16 nTmp16(0);
 
@@ -1587,7 +1587,7 @@ SvStream& ReadRegion(SvStream& rIStrm, vcl::Region& rRegion)
 SvStream& WriteRegion( SvStream& rOStrm, const vcl::Region& rRegion )
 {
     const sal_uInt16 nVersion(2);
-    VersionCompat aCompat(rOStrm, StreamMode::WRITE, nVersion);
+    VersionCompatWrite aCompat(rOStrm, nVersion);
 
     // put version
     rOStrm.WriteUInt16( nVersion );
diff --git a/vcl/source/gdi/wall.cxx b/vcl/source/gdi/wall.cxx
index 7b1a5bb0c417..c6e07afa37ca 100644
--- a/vcl/source/gdi/wall.cxx
+++ b/vcl/source/gdi/wall.cxx
@@ -55,7 +55,7 @@ ImplWallpaper::~ImplWallpaper()
 
 SvStream& ReadImplWallpaper( SvStream& rIStm, ImplWallpaper& rImplWallpaper )
 {
-    VersionCompat   aCompat( rIStm, StreamMode::READ );
+    VersionCompatRead  aCompat(rIStm);
 
     rImplWallpaper.mpRect.reset();
     rImplWallpaper.mpGradient.reset();
@@ -105,7 +105,7 @@ SvStream& ReadImplWallpaper( SvStream& rIStm, ImplWallpaper& rImplWallpaper )
 
 SvStream& WriteImplWallpaper( SvStream& rOStm, const ImplWallpaper& rImplWallpaper )
 {
-    VersionCompat   aCompat( rOStm, StreamMode::WRITE, 3 );
+    VersionCompatWrite aCompat(rOStm, 3);
     bool            bRect = bool(rImplWallpaper.mpRect);
     bool            bGrad = bool(rImplWallpaper.mpGradient);
     bool            bBmp = bool(rImplWallpaper.mpBitmap);


More information about the Libreoffice-commits mailing list