Kaydet (Commit) cd5e167b authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Turn StorageMode into a scoped enum

Change-Id: I481c153815fff793e9334153d863f26982b879cb
üst edaa4785
......@@ -25,6 +25,7 @@
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/embed/XStorage.hpp>
#include <o3tl/typed_flags_set.hxx>
#include <sot/object.hxx>
#include <sot/factory.hxx>
#include <tools/stream.hxx>
......@@ -32,10 +33,19 @@
#include <sot/storinfo.hxx>
#include <sot/sotdllapi.h>
#define STORAGE_TRANSACTED 0x04
#define STORAGE_DISKSPANNED_MODE 0x80
#define STORAGE_CREATE_UNPACKED 0x44
typedef short StorageMode;
enum class StorageMode {
Default = 0,
Transacted = 0x04,
DiskspannedMode = 0x80,
CreateUnpacked = 0x44
};
namespace o3tl {
template<> struct typed_flags<StorageMode>: is_typed_flags<StorageMode, 0xC4>
{};
}
class SvStorage;
......@@ -58,7 +68,7 @@ protected:
public:
SotStorageStream( const OUString &,
StreamMode = STREAM_STD_READWRITE,
StorageMode = 0 );
StorageMode = StorageMode::Default );
SotStorageStream( BaseStorageStream *pStm );
SotStorageStream();
......@@ -113,10 +123,10 @@ protected:
public:
SotStorage( const OUString &,
StreamMode = STREAM_STD_READWRITE,
StorageMode = 0 );
StorageMode = StorageMode::Default );
SotStorage( bool bUCBStorage, const OUString &,
StreamMode = STREAM_STD_READWRITE,
StorageMode = 0 );
StorageMode = StorageMode::Default );
SotStorage( BaseStorage * );
SotStorage( SvStream & rStm );
SotStorage( bool bUCBStorage, SvStream & rStm );
......@@ -181,7 +191,7 @@ public:
// more or less a Parent-Child relationship
SotStorageStream * OpenSotStream( const OUString & rEleName,
StreamMode = STREAM_STD_READWRITE,
StorageMode = 0 );
StorageMode = StorageMode::Default );
SotStorage * OpenSotStorage( const OUString & rEleName,
StreamMode = STREAM_STD_READWRITE,
bool transacted = true );
......
......@@ -89,7 +89,7 @@ SotStorageStream::SotStorageStream( const OUString & rName, StreamMode nMode,
else
bIsWritable = false;
DBG_ASSERT( !nStorageMode,"StorageModes ignored" );
DBG_ASSERT( nStorageMode == StorageMode::Default, "StorageModes ignored" );
}
SotStorageStream::SotStorageStream( BaseStorageStream * pStm )
......@@ -368,7 +368,7 @@ void SotStorage::CreateStorage( bool bForceUCBStorage, StreamMode nMode, Storage
}
// a new unpacked storage should be created
if ( nStorageMode == STORAGE_CREATE_UNPACKED )
if ( nStorageMode == StorageMode::CreateUnpacked )
{
// don't open stream readwrite, content provider may not support this !
OUString aURL = UCBStorage::CreateLinkFile( m_aName );
......@@ -403,35 +403,35 @@ void SotStorage::CreateStorage( bool bForceUCBStorage, StreamMode nMode, Storage
if ( !(UCBStorage::GetLinkedFile( *m_pStorStm ).isEmpty()) )
{
// detect special unpacked storages
m_pOwnStg = new UCBStorage( *m_pStorStm, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new UCBStorage( *m_pStorStm, !(nStorageMode & StorageMode::Transacted) );
m_bDelStm = true;
}
else
{
// detect special disk spanned storages
if ( UCBStorage::IsDiskSpannedFile( m_pStorStm ) )
nStorageMode |= STORAGE_DISKSPANNED_MODE;
nStorageMode |= StorageMode::DiskspannedMode;
// UCBStorage always works directly on the UCB content, so discard the stream first
DELETEZ( m_pStorStm );
m_pOwnStg = new UCBStorage( m_aName, nMode, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new UCBStorage( m_aName, nMode, !(nStorageMode & StorageMode::Transacted) );
}
}
else
{
// OLEStorage can be opened with a stream
m_pOwnStg = new Storage( *m_pStorStm, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new Storage( *m_pStorStm, !(nStorageMode & StorageMode::Transacted) );
m_bDelStm = true;
}
}
else if ( bForceUCBStorage )
{
m_pOwnStg = new UCBStorage( m_aName, nMode, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new UCBStorage( m_aName, nMode, !(nStorageMode & StorageMode::Transacted) );
SetError( ERRCODE_IO_NOTSUPPORTED );
}
else
{
m_pOwnStg = new Storage( m_aName, nMode, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new Storage( m_aName, nMode, !(nStorageMode & StorageMode::Transacted) );
SetError( ERRCODE_IO_NOTSUPPORTED );
}
}
......@@ -440,9 +440,9 @@ void SotStorage::CreateStorage( bool bForceUCBStorage, StreamMode nMode, Storage
{
// temporary storage
if ( bForceUCBStorage )
m_pOwnStg = new UCBStorage( m_aName, nMode, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new UCBStorage( m_aName, nMode, !(nStorageMode & StorageMode::Transacted) );
else
m_pOwnStg = new Storage( m_aName, nMode, (nStorageMode & STORAGE_TRANSACTED) == 0 );
m_pOwnStg = new Storage( m_aName, nMode, !(nStorageMode & StorageMode::Transacted) );
m_aName = m_pOwnStg->GetName();
}
......@@ -691,7 +691,7 @@ SotStorageStream * SotStorage::OpenSotStream( const OUString & rEleName,
StreamMode nMode,
StorageMode nStorageMode )
{
DBG_ASSERT( !nStorageMode, "StorageModes ignored" );
DBG_ASSERT( nStorageMode == StorageMode::Default, "StorageModes ignored" );
SotStorageStream * pStm = NULL;
DBG_ASSERT( Owner(), "must be owner" );
if( m_pOwnStg )
......@@ -701,7 +701,7 @@ SotStorageStream * SotStorage::OpenSotStream( const OUString & rEleName,
nMode |= StreamMode::SHARE_DENYALL;
ErrCode nE = m_pOwnStg->GetError();
BaseStorageStream * p = m_pOwnStg->OpenStream( rEleName, nMode,
(nStorageMode & STORAGE_TRANSACTED) == 0 );
!(nStorageMode & StorageMode::Transacted) );
pStm = new SotStorageStream( p );
if( !nE )
......
......@@ -4842,7 +4842,7 @@ bool SwWW8ImplReader::ReadGlobalTemplateSettings( const OUString& sCreatedFrom,
if ( !aURL.endsWithIgnoreAsciiCase( ".dot" ) || ( !sCreatedFrom.isEmpty() && sCreatedFrom.equals( aURL ) ) )
continue; // don't try and read the same document as ourselves
SotStorageRef rRoot = new SotStorage( aURL, STREAM_STD_READWRITE, STORAGE_TRANSACTED );
SotStorageRef rRoot = new SotStorage( aURL, STREAM_STD_READWRITE, StorageMode::Transacted );
BasicProjImportHelper aBasicImporter( *m_pDocShell );
// Import vba via oox filter
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment