blob: 078ee3722fef91cc9d81a8035b8fe19b5bf6c629 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef OOX_DUMP_OLEDUMPER_HXX
#define OOX_DUMP_OLEDUMPER_HXX
#include "oox/helper/storagebase.hxx"
#include "oox/dump/dumperbase.hxx"
#if OOX_INCLUDE_DUMPER
namespace com { namespace sun { namespace star {
namespace io { class XInputStream; }
} } }
namespace oox {
namespace dump {
// ============================================================================
// ============================================================================
class OleInputObjectBase : public InputObjectBase
{
protected:
inline explicit OleInputObjectBase() {}
::rtl::OUString dumpAnsiString32( const String& rName );
::rtl::OUString dumpUniString32( const String& rName );
sal_Int32 dumpStdClipboardFormat( const String& rName = EMPTY_STRING );
::rtl::OUString dumpAnsiString32OrStdClip( const String& rName );
::rtl::OUString dumpUniString32OrStdClip( const String& rName );
void writeOleColorItem( const String& rName, sal_uInt32 nColor );
sal_uInt32 dumpOleColor( const String& rName );
};
// ============================================================================
// ============================================================================
class StdFontObject : public OleInputObjectBase
{
public:
explicit StdFontObject( const InputObjectBase& rParent );
protected:
virtual void implDump();
};
// ============================================================================
class StdPicObject : public OleInputObjectBase
{
public:
explicit StdPicObject( const InputObjectBase& rParent );
protected:
virtual void implDump();
};
// ============================================================================
class StdHlinkObject : public OleInputObjectBase
{
public:
explicit StdHlinkObject( const InputObjectBase& rParent );
protected:
virtual void implDump();
private:
::rtl::OUString dumpHyperlinkString( const String& rName, bool bUnicode );
bool dumpGuidAndMoniker();
void dumpUrlMoniker();
void dumpFileMoniker();
void dumpItemMoniker();
void dumpAntiMoniker();
void dumpCompositeMoniker();
};
// ============================================================================
// ============================================================================
class OleStreamObject : public OleInputObjectBase
{
public:
explicit OleStreamObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const ::rtl::OUString& rSysFileName );
};
// ============================================================================
class OleCompObjObject : public OleStreamObject
{
public:
explicit OleCompObjObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const ::rtl::OUString& rSysFileName );
protected:
virtual void implDump();
};
// ============================================================================
// ============================================================================
class OlePropertyStreamObject : public InputObjectBase
{
public:
explicit OlePropertyStreamObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const ::rtl::OUString& rSysFileName );
protected:
virtual void implDump();
private:
void dumpSection( const ::rtl::OUString& rGuid, sal_uInt32 nStartPos );
void dumpProperty( sal_Int32 nPropId, sal_uInt32 nStartPos );
void dumpCodePageProperty( sal_uInt32 nStartPos );
void dumpDictionaryProperty( sal_uInt32 nStartPos );
sal_uInt16 dumpPropertyContents( sal_Int32 nPropId );
void dumpPropertyValue( sal_Int32 nPropId, sal_uInt16 nBaseType );
void dumpPropertyVector( sal_Int32 nPropId, sal_uInt16 nBaseType );
void dumpPropertyArray( sal_Int32 nPropId, sal_uInt16 nBaseType );
sal_uInt16 dumpPropertyType();
void dumpBlob( sal_Int32 nPropId, const String& rName );
::rtl::OUString dumpString8( const String& rName );
::rtl::OUString dumpCharArray8( const String& rName, sal_Int32 nLen );
::rtl::OUString dumpString16( const String& rName );
::rtl::OUString dumpCharArray16( const String& rName, sal_Int32 nLen );
bool dumpTypedProperty( const String& rName, sal_uInt16 nExpectedType );
void dumpHlinks( sal_Int32 nSize );
bool startElement( sal_uInt32 nStartPos );
void writeSectionHeader( const ::rtl::OUString& rGuid, sal_uInt32 nStartPos );
void writePropertyHeader( sal_Int32 nPropId, sal_uInt32 nStartPos );
private:
NameListRef mxPropIds;
rtl_TextEncoding meTextEnc;
bool mbIsUnicode;
};
// ============================================================================
class OleStorageObject : public StorageObjectBase
{
public:
explicit OleStorageObject( const ObjectBase& rParent, const StorageRef& rxStrg, const ::rtl::OUString& rSysPath );
protected:
inline explicit OleStorageObject() {}
using StorageObjectBase::construct;
void construct( const ObjectBase& rParent, const StorageRef& rxStrg, const ::rtl::OUString& rSysPath );
void construct( const ObjectBase& rParent );
virtual void implDumpStream(
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxStrm,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rStrmName,
const ::rtl::OUString& rSysFileName );
};
// ============================================================================
// ============================================================================
class ComCtlObjectBase : public OleInputObjectBase
{
protected:
explicit ComCtlObjectBase(
const InputObjectBase& rParent,
sal_uInt32 nDataId5, sal_uInt32 nDataId6, sal_uInt16 nVersion,
bool bCommonPart, bool bComplexPart );
virtual void implDump();
virtual void implDumpProperties() = 0;
virtual void implDumpCommonExtra( sal_Int64 nEndPos );
virtual void implDumpCommonTrailing();
private:
bool dumpComCtlHeader( sal_uInt32 nExpId, sal_uInt16 nExpMajor = SAL_MAX_UINT16, sal_uInt16 nExpMinor = SAL_MAX_UINT16 );
bool dumpComCtlSize();
bool dumpComCtlData( sal_uInt32& ornCommonPartSize );
bool dumpComCtlCommon( sal_uInt32 nPartSize );
bool dumpComCtlComplex();
protected:
sal_uInt32 mnDataId5;
sal_uInt32 mnDataId6;
sal_uInt16 mnVersion;
bool mbCommonPart;
bool mbComplexPart;
};
// ============================================================================
class ComCtlScrollBarObject : public ComCtlObjectBase
{
public:
explicit ComCtlScrollBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
};
// ============================================================================
class ComCtlProgressBarObject : public ComCtlObjectBase
{
public:
explicit ComCtlProgressBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
};
// ============================================================================
class ComCtlSliderObject : public ComCtlObjectBase
{
public:
explicit ComCtlSliderObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
};
// ============================================================================
class ComCtlUpDownObject : public ComCtlObjectBase
{
public:
explicit ComCtlUpDownObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
};
// ============================================================================
class ComCtlImageListObject : public ComCtlObjectBase
{
public:
explicit ComCtlImageListObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
virtual void implDumpCommonExtra( sal_Int64 nEndPos );
virtual void implDumpCommonTrailing();
};
// ============================================================================
class ComCtlTabStripObject : public ComCtlObjectBase
{
public:
explicit ComCtlTabStripObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
virtual void implDumpCommonExtra( sal_Int64 nEndPos );
};
// ============================================================================
class ComCtlTreeViewObject : public ComCtlObjectBase
{
public:
explicit ComCtlTreeViewObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
virtual void implDumpCommonExtra( sal_Int64 nEndPos );
private:
sal_uInt32 mnStringFlags;
};
// ============================================================================
class ComCtlStatusBarObject : public ComCtlObjectBase
{
public:
explicit ComCtlStatusBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
protected:
virtual void implDumpProperties();
virtual void implDumpCommonExtra( sal_Int64 nEndPos );
virtual void implDumpCommonTrailing();
};
// ============================================================================
// ============================================================================
class AxPropertyObjectBase : public OleInputObjectBase
{
protected:
inline explicit AxPropertyObjectBase() {}
using OleInputObjectBase::construct;
void construct(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
const String& rPropNameList,
bool b64BitPropFlags = false );
void construct(
const OutputObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const String& rPropNameList,
bool b64BitPropFlags = false );
void construct(
const InputObjectBase& rParent,
const String& rPropNameList,
bool b64BitPropFlags = false );
virtual bool implIsValid() const;
virtual void implDump();
virtual void implDumpShortProperties();
virtual void implDumpExtended();
bool ensureValid( bool bCondition = true );
template< typename Type >
void alignInput();
void setAlignAnchor();
bool startNextProperty();
::rtl::OUString getPropertyName() const;
template< typename Type >
Type dumpDecProperty( Type nDefault, const NameListWrapper& rListWrp = NO_LIST );
template< typename Type >
Type dumpHexProperty( Type nDefault, const NameListWrapper& rListWrp = NO_LIST );
inline bool dumpBoolProperty() { return startNextProperty(); }
inline sal_Int32 dumpHmmProperty() { return dumpDecProperty< sal_Int32 >( 0, "CONV-HMM-TO-CM" ); }
inline sal_uInt8 dumpMousePtrProperty() { return dumpDecProperty< sal_uInt8 >( 0, "OLE-MOUSEPTR" ); }
template< typename Type >
inline Type dumpBorderStyleProperty( Type nDefault ) { return dumpDecProperty< Type >( nDefault, "AX-BORDERSTYLE" ); }
template< typename Type >
inline Type dumpSpecialEffectProperty( Type nDefault ) { return dumpDecProperty< Type >( nDefault, "AX-SPECIALEFFECT" ); }
inline sal_uInt32 dumpEnabledProperty() { return dumpDecProperty< sal_uInt32 >( 1, "AX-ENABLED" ); }
inline sal_Int32 dumpOrientationProperty() { return dumpDecProperty< sal_Int32 >( -1, "AX-ORIENTATION" ); }
inline sal_Int32 dumpDelayProperty() { return dumpDecProperty< sal_Int32 >( 50, "AX-CONV-MS" ); }
inline sal_uInt32 dumpImagePosProperty() { return dumpHexProperty< sal_uInt32 >( 0x00070001, "AX-IMAGEPOS" ); }
inline sal_uInt8 dumpImageSizeModeProperty() { return dumpDecProperty< sal_uInt8 >( 0, "AX-IMAGESIZEMODE" ); }
inline sal_uInt8 dumpImageAlignProperty() { return dumpDecProperty< sal_uInt8 >( 2, "AX-IMAGEALIGN" ); }
sal_uInt32 dumpFlagsProperty( sal_uInt32 nDefault, const sal_Char* pcNameList = "AX-FLAGS" );
sal_uInt32 dumpColorProperty( sal_uInt32 nDefault );
sal_Unicode dumpUnicodeProperty();
void dumpUnknownProperty();
void dumpPosProperty();
void dumpSizeProperty();
void dumpGuidProperty( ::rtl::OUString* pValue = 0 );
void dumpStringProperty( ::rtl::OUString* pValue = 0 );
void dumpStringArrayProperty();
void dumpStreamProperty();
void dumpEmbeddedFont();
void dumpToPosition( sal_Int64 nPos );
private:
void constructAxPropObj( const String& rPropNameList, bool b64BitPropFlags );
void dumpVersion();
::rtl::OUString dumpString( const String& rName, sal_uInt32 nSize, bool bArray );
void dumpShortProperties();
void dumpLargeProperties();
private:
struct LargeProperty
{
enum LargePropertyType { PROPTYPE_POS, PROPTYPE_SIZE, PROPTYPE_GUID, PROPTYPE_STRING, PROPTYPE_STRINGARRAY };
LargePropertyType mePropType;
::rtl::OUString maItemName;
sal_uInt32 mnDataSize;
::rtl::OUString* mpItemValue;
inline explicit LargeProperty( LargePropertyType ePropType, const String& rItemName, sal_uInt32 nDataSize, ::rtl::OUString* pItemValue = 0 ) :
mePropType( ePropType ), maItemName( rItemName ), mnDataSize( nDataSize ), mpItemValue( pItemValue ) {}
};
typedef ::std::vector< LargeProperty > LargePropertyVector;
struct StreamProperty
{
::rtl::OUString maItemName;
sal_uInt16 mnData;
inline explicit StreamProperty( const String& rItemName, sal_uInt16 nData ) :
maItemName( rItemName ), mnData( nData ) {}
};
typedef ::std::vector< StreamProperty > StreamPropertyVector;
LargePropertyVector maLargeProps;
StreamPropertyVector maStreamProps;
NameListRef mxPropNames;
sal_Int64 mnPropertiesStart;
sal_Int64 mnPropertiesEnd;
sal_Int64 mnPropFlags;
sal_Int64 mnCurrProp;
bool mb64BitPropFlags;
bool mbValid;
};
// ----------------------------------------------------------------------------
template< typename Type >
void AxPropertyObjectBase::alignInput()
{
mxStrm->skip( (sizeof( Type ) - ((mxStrm->tell() - mnPropertiesStart) % sizeof( Type ))) % sizeof( Type ) );
}
template< typename Type >
Type AxPropertyObjectBase::dumpDecProperty( Type nDefault, const NameListWrapper& rListWrp )
{
if( startNextProperty() )
{
alignInput< Type >();
return dumpDec< Type >( getPropertyName(), rListWrp );
}
return nDefault;
}
template< typename Type >
Type AxPropertyObjectBase::dumpHexProperty( Type nDefault, const NameListWrapper& rListWrp )
{
if( startNextProperty() )
{
alignInput< Type >();
return dumpHex< Type >( getPropertyName(), rListWrp );
}
return nDefault;
}
// ============================================================================
class AxCFontNewObject : public AxPropertyObjectBase
{
public:
explicit AxCFontNewObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class AxColumnInfoObject : public AxPropertyObjectBase
{
public:
explicit AxColumnInfoObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class AxCommandButtonObject : public AxPropertyObjectBase
{
public:
explicit AxCommandButtonObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
};
// ============================================================================
class AxMorphControlObject : public AxPropertyObjectBase
{
public:
explicit AxMorphControlObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
private:
void dumpColumnInfos();
private:
sal_uInt16 mnColInfoCount;
sal_uInt8 mnCtrlType;
};
// ============================================================================
class AxLabelObject : public AxPropertyObjectBase
{
public:
explicit AxLabelObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
};
// ============================================================================
class AxImageObject : public AxPropertyObjectBase
{
public:
explicit AxImageObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class AxScrollBarObject : public AxPropertyObjectBase
{
public:
explicit AxScrollBarObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class AxSpinButtonObject : public AxPropertyObjectBase
{
public:
explicit AxSpinButtonObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class AxTabStripObject : public AxPropertyObjectBase
{
public:
explicit AxTabStripObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
private:
sal_Int32 mnTabFlagCount;
};
// ============================================================================
// ============================================================================
class FormControlStreamObject : public OleInputObjectBase
{
public:
explicit FormControlStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
const ::rtl::OUString* pProgId = 0 );
explicit FormControlStreamObject(
const OutputObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString* pProgId = 0 );
protected:
virtual void implDump();
private:
void constructFormCtrlStrmObj( const ::rtl::OUString* pProgId );
private:
::rtl::OUString maProgId;
bool mbReadGuid;
};
// ============================================================================
// ============================================================================
struct VbaFormSiteInfo
{
::rtl::OUString maProgId;
sal_Int32 mnId;
sal_uInt32 mnLength;
bool mbInStream;
inline explicit VbaFormSiteInfo() : mnId( 0 ), mnLength( 0 ), mbInStream( false ) {}
};
typedef ::std::vector< VbaFormSiteInfo > VbaFormSiteInfoVector;
// ============================================================================
struct VbaFormSharedData
{
OUStringVector maClassInfoProgIds;
VbaFormSiteInfoVector maSiteInfos;
};
// ============================================================================
class VbaFormClassInfoObject : public AxPropertyObjectBase
{
public:
explicit VbaFormClassInfoObject( const InputObjectBase& rParent, VbaFormSharedData& rFormData );
protected:
virtual void implDumpShortProperties();
private:
VbaFormSharedData& mrFormData;
};
// ============================================================================
class VbaFormSiteObject : public AxPropertyObjectBase
{
public:
explicit VbaFormSiteObject( const InputObjectBase& rParent, VbaFormSharedData& rFormData );
protected:
virtual void implDumpShortProperties();
private:
VbaFormSharedData& mrFormData;
};
// ============================================================================
class VbaFormDesignExtObject : public AxPropertyObjectBase
{
public:
explicit VbaFormDesignExtObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class VbaFStreamObject : public AxPropertyObjectBase
{
public:
explicit VbaFStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
VbaFormSharedData& rFormData );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
private:
void dumpClassInfos();
void dumpFormSites( sal_uInt32 nCount );
void dumpSiteData();
void dumpDesignExtender();
private:
VbaFormSharedData& mrFormData;
sal_uInt32 mnFlags;
};
// ============================================================================
class VbaOStreamObject : public OleInputObjectBase
{
public:
explicit VbaOStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
VbaFormSharedData& rFormData );
protected:
virtual void implDump();
private:
VbaFormSharedData& mrFormData;
};
// ============================================================================
class VbaPageObject : public AxPropertyObjectBase
{
public:
explicit VbaPageObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
};
// ============================================================================
class VbaMultiPageObject : public AxPropertyObjectBase
{
public:
explicit VbaMultiPageObject( const InputObjectBase& rParent );
protected:
virtual void implDumpShortProperties();
virtual void implDumpExtended();
private:
sal_Int32 mnPageCount;
};
// ============================================================================
class VbaXStreamObject : public InputObjectBase
{
public:
explicit VbaXStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
VbaFormSharedData& rFormData );
protected:
virtual void implDump();
private:
VbaFormSharedData& mrFormData;
};
// ============================================================================
class VbaContainerStorageObject : public OleStorageObject
{
public:
explicit VbaContainerStorageObject(
const ObjectBase& rParent,
const StorageRef& rxStrg,
const ::rtl::OUString& rSysPath );
protected:
virtual void implDumpStream(
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxStrm,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rStrmName,
const ::rtl::OUString& rSysFileName );
virtual void implDumpStorage(
const StorageRef& rxStrg,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rSysPath );
private:
bool isFormStorage( const ::rtl::OUString& rStrgPath ) const;
private:
VbaFormSharedData maFormData;
};
// ============================================================================
// ============================================================================
struct VbaSharedData
{
typedef ::std::map< ::rtl::OUString, sal_Int32 > StreamOffsetMap;
StreamOffsetMap maStrmOffsets;
rtl_TextEncoding meTextEnc;
explicit VbaSharedData();
bool isModuleStream( const ::rtl::OUString& rStrmName ) const;
sal_Int32 getStreamOffset( const ::rtl::OUString& rStrmName ) const;
};
// ============================================================================
class VbaDirStreamObject : public SequenceRecordObjectBase
{
public:
explicit VbaDirStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
VbaSharedData& rVbaData );
protected:
virtual bool implIsValid() const;
virtual bool implReadRecordHeader( BinaryInputStream& rBaseStrm, sal_Int64& ornRecId, sal_Int64& ornRecSize );
virtual void implDumpRecordBody();
private:
::rtl::OUString dumpByteString( const String& rName = EMPTY_STRING );
::rtl::OUString dumpUniString( const String& rName = EMPTY_STRING );
::rtl::OUString dumpByteStringWithLength( const String& rName = EMPTY_STRING );
private:
VbaSharedData& mrVbaData;
BinaryInputStreamRef mxInStrm;
::rtl::OUString maCurrStream;
sal_Int32 mnCurrOffset;
};
// ============================================================================
class VbaModuleStreamObject : public InputObjectBase
{
public:
explicit VbaModuleStreamObject(
const ObjectBase& rParent,
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName,
VbaSharedData& rVbaData,
sal_Int32 nStrmOffset );
protected:
virtual void implDump();
private:
VbaSharedData& mrVbaData;
sal_Int32 mnStrmOffset;
};
// ============================================================================
class VbaStorageObject : public OleStorageObject
{
public:
explicit VbaStorageObject(
const ObjectBase& rParent,
const StorageRef& rxStrg,
const ::rtl::OUString& rSysPath,
VbaSharedData& rVbaData );
protected:
virtual void implDumpStream(
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxStrm,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rStrmName,
const ::rtl::OUString& rSysFileName );
private:
VbaSharedData& mrVbaData;
};
// ============================================================================
class VbaFormStorageObject : public VbaContainerStorageObject
{
public:
explicit VbaFormStorageObject(
const ObjectBase& rParent,
const StorageRef& rxStrg,
const ::rtl::OUString& rSysPath,
VbaSharedData& rVbaData );
protected:
virtual void implDumpStream(
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxStrm,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rStrmName,
const ::rtl::OUString& rSysFileName );
private:
VbaSharedData& mrVbaData;
};
// ============================================================================
class VbaProjectStorageObject : public OleStorageObject
{
public:
explicit VbaProjectStorageObject( const ObjectBase& rParent, const StorageRef& rxStrg, const ::rtl::OUString& rSysPath );
protected:
virtual void implDumpStream(
const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxStrm,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rStrmName,
const ::rtl::OUString& rSysFileName );
virtual void implDumpStorage(
const StorageRef& rxStrg,
const ::rtl::OUString& rStrgPath,
const ::rtl::OUString& rSysPath );
private:
VbaSharedData maVbaData;
};
// ============================================================================
// ============================================================================
class ActiveXStorageObject : public VbaContainerStorageObject
{
public:
explicit ActiveXStorageObject(
const ObjectBase& rParent,
const StorageRef& rxStrg,
const ::rtl::OUString& rSysPath );
protected:
virtual void implDumpBaseStream(
const BinaryInputStreamRef& rxStrm,
const ::rtl::OUString& rSysFileName );
};
// ============================================================================
// ============================================================================
} // namespace dump
} // namespace oox
#endif
#endif