Trying to wrap the tools references inside a struct
Change-Id: Ie4d9a1d2c131f14928d7cc47f1b6314cf7e7f41d
This commit is contained in:
parent
c77918bb03
commit
87ccec22b1
2 changed files with 25 additions and 11 deletions
|
@ -163,17 +163,20 @@ WPXInputStream *WPXSvInputStream::getDocumentOLEStream(const char *name)
|
|||
return 0;
|
||||
}
|
||||
|
||||
mxChildrenStorages.push_back(new SotStorage( pStream, sal_True ));
|
||||
SotStorageRefWrapper storageRefWrapper;
|
||||
storageRefWrapper.ref = new SotStorage( pStream, sal_True );
|
||||
mxChildrenStorages.push_back( storageRefWrapper );
|
||||
|
||||
unsigned i = 0;
|
||||
while (i < aElems.size())
|
||||
{
|
||||
if( mxChildrenStorages.back()->IsStream(aElems[i]))
|
||||
if( mxChildrenStorages.back().ref->IsStream(aElems[i]))
|
||||
break;
|
||||
else if (mxChildrenStorages.back()->IsStorage(aElems[i]))
|
||||
else if (mxChildrenStorages.back().ref->IsStorage(aElems[i]))
|
||||
{
|
||||
SotStorageRef &tmpParent(mxChildrenStorages.back());
|
||||
mxChildrenStorages.push_back(tmpParent->OpenSotStorage(aElems[i++], STREAM_STD_READ));
|
||||
SotStorageRef tmpParent(mxChildrenStorages.back().ref);
|
||||
storageRefWrapper.ref = tmpParent->OpenSotStorage(aElems[i++], STREAM_STD_READ);
|
||||
mxChildrenStorages.push_back(storageRefWrapper);
|
||||
}
|
||||
else
|
||||
// should not happen
|
||||
|
@ -186,18 +189,19 @@ WPXInputStream *WPXSvInputStream::getDocumentOLEStream(const char *name)
|
|||
if (i >= aElems.size())
|
||||
return 0;
|
||||
|
||||
mxChildrenStreams.push_back( mxChildrenStorages.back()->OpenSotStream(
|
||||
aElems[i], STREAM_STD_READ ));
|
||||
SotStorageStreamRefWrapper storageStreamRefWrapper;
|
||||
storageStreamRefWrapper.ref = mxChildrenStorages.back().ref->OpenSotStream( aElems[i], STREAM_STD_READ );
|
||||
mxChildrenStreams.push_back( storageStreamRefWrapper );
|
||||
|
||||
mxSeekable->seek(tmpPosition);
|
||||
|
||||
if ( !mxChildrenStreams.back().Is() || mxChildrenStreams.back()->GetError() )
|
||||
if ( !mxChildrenStreams.back().ref.Is() || mxChildrenStreams.back().ref->GetError() )
|
||||
{
|
||||
mxSeekable->seek(tmpPosition);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference < XInputStream > xContents(new utl::OSeekableInputStreamWrapper( mxChildrenStreams.back() ));
|
||||
Reference < XInputStream > xContents(new utl::OSeekableInputStreamWrapper( mxChildrenStreams.back().ref ));
|
||||
mxSeekable->seek(tmpPosition);
|
||||
if (xContents.is())
|
||||
return new WPXSvInputStream( xContents );
|
||||
|
|
|
@ -18,6 +18,16 @@
|
|||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SotStorageRef ref;
|
||||
} SotStorageRefWrapper;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SotStorageStreamRef ref;
|
||||
} SotStorageStreamRefWrapper;
|
||||
|
||||
class WPXSvInputStream : public WPXInputStream
|
||||
{
|
||||
public:
|
||||
|
@ -34,8 +44,8 @@ public:
|
|||
virtual bool atEOS();
|
||||
|
||||
private:
|
||||
std::vector< SotStorageRef > mxChildrenStorages;
|
||||
std::vector< SotStorageStreamRef > mxChildrenStreams;
|
||||
std::vector< SotStorageRefWrapper > mxChildrenStorages;
|
||||
std::vector< SotStorageStreamRefWrapper > mxChildrenStreams;
|
||||
::com::sun::star::uno::Reference<
|
||||
::com::sun::star::io::XInputStream > mxStream;
|
||||
::com::sun::star::uno::Reference<
|
||||
|
|
Loading…
Reference in a new issue