android: Update app-specific/MIME type icons
[LibreOffice.git] / include / oox / dump / oledumper.hxx
blob585e9e5226eb3bcef9b5d5aef8bbd207831a58b5
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_OOX_DUMP_OLEDUMPER_HXX
21 #define INCLUDED_OOX_DUMP_OLEDUMPER_HXX
23 #include <map>
24 #include <memory>
25 #include <utility>
26 #include <vector>
28 #include <com/sun/star/uno/Reference.hxx>
29 #include <oox/dump/dumperbase.hxx>
30 #include <oox/helper/binaryinputstream.hxx>
31 #include <oox/helper/storagebase.hxx>
32 #include <rtl/textenc.h>
33 #include <rtl/ustring.hxx>
34 #include <sal/types.h>
36 #ifdef DBG_UTIL
38 namespace com::sun::star {
39 namespace io { class XInputStream; }
42 namespace oox::dump {
45 class OleInputObjectBase : public InputObjectBase
47 protected:
48 OleInputObjectBase() {}
50 OUString dumpAnsiString32( const String& rName );
51 OUString dumpUniString32( const String& rName );
53 sal_Int32 dumpStdClipboardFormat( const String& rName );
54 OUString dumpAnsiString32OrStdClip( const String& rName );
55 OUString dumpUniString32OrStdClip( const String& rName );
57 void writeOleColorItem( const String& rName, sal_uInt32 nColor );
58 sal_uInt32 dumpOleColor( const String& rName );
62 class StdFontObject : public OleInputObjectBase
64 public:
65 explicit StdFontObject( const InputObjectBase& rParent );
67 protected:
68 virtual void implDump() override;
72 class StdPicObject : public OleInputObjectBase
74 public:
75 explicit StdPicObject( const InputObjectBase& rParent );
77 protected:
78 virtual void implDump() override;
82 class OleStreamObject : public OleInputObjectBase
84 public:
85 explicit OleStreamObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const OUString& rSysFileName );
89 class OleCompObjObject : public OleStreamObject
91 public:
92 explicit OleCompObjObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const OUString& rSysFileName );
94 protected:
95 virtual void implDump() override;
99 class OlePropertyStreamObject : public InputObjectBase
101 public:
102 explicit OlePropertyStreamObject( const ObjectBase& rParent, const BinaryInputStreamRef& rxStrm, const OUString& rSysFileName );
104 protected:
105 virtual void implDump() override;
107 private:
108 void dumpSection( const OUString& rGuid, sal_uInt32 nStartPos );
110 void dumpProperty( sal_Int32 nPropId, sal_uInt32 nStartPos );
111 void dumpCodePageProperty( sal_uInt32 nStartPos );
112 void dumpDictionaryProperty( sal_uInt32 nStartPos );
114 sal_uInt16 dumpPropertyContents( sal_Int32 nPropId );
115 void dumpPropertyValue( sal_Int32 nPropId, sal_uInt16 nBaseType );
116 void dumpPropertyVector( sal_Int32 nPropId, sal_uInt16 nBaseType );
118 sal_uInt16 dumpPropertyType();
119 void dumpBlob( sal_Int32 nPropId, const String& rName );
120 OUString dumpString8( const String& rName );
121 OUString dumpCharArray8( const String& rName, sal_Int32 nLen );
122 OUString dumpString16( const String& rName );
123 OUString dumpCharArray16( const String& rName, sal_Int32 nLen );
124 bool dumpTypedProperty( const String& rName, sal_uInt16 nExpectedType );
125 void dumpHlinks( sal_Int32 nSize );
127 bool startElement( sal_uInt32 nStartPos );
128 void writeSectionHeader( const OUString& rGuid, sal_uInt32 nStartPos );
129 void writePropertyHeader( sal_Int32 nPropId, sal_uInt32 nStartPos );
131 private:
132 NameListRef mxPropIds;
133 rtl_TextEncoding meTextEnc;
134 bool mbIsUnicode;
138 class OleStorageObject : public StorageObjectBase
140 public:
141 explicit OleStorageObject( const ObjectBase& rParent, const StorageRef& rxStrg, const OUString& rSysPath );
143 protected:
144 OleStorageObject() {}
146 using StorageObjectBase::construct;
148 virtual void implDumpStream(
149 const css::uno::Reference< css::io::XInputStream >& rxStrm,
150 const OUString& rStrgPath,
151 const OUString& rStrmName,
152 const OUString& rSysFileName ) override;
156 class ComCtlObjectBase : public OleInputObjectBase
158 protected:
159 explicit ComCtlObjectBase(
160 const InputObjectBase& rParent,
161 sal_uInt32 nDataId5, sal_uInt32 nDataId6, sal_uInt16 nVersion,
162 bool bCommonPart, bool bComplexPart );
164 virtual void implDump() override;
165 virtual void implDumpProperties() = 0;
166 virtual void implDumpCommonExtra( sal_Int64 nEndPos );
167 virtual void implDumpCommonTrailing();
169 private:
170 bool dumpComCtlHeader( sal_uInt32 nExpId, sal_uInt16 nExpMajor = SAL_MAX_UINT16, sal_uInt16 nExpMinor = SAL_MAX_UINT16 );
171 bool dumpComCtlSize();
172 bool dumpComCtlData( sal_uInt32& ornCommonPartSize );
173 bool dumpComCtlCommon( sal_uInt32 nPartSize );
174 bool dumpComCtlComplex();
176 protected:
177 sal_uInt32 mnDataId5;
178 sal_uInt32 mnDataId6;
179 sal_uInt16 mnVersion;
180 bool mbCommonPart;
181 bool mbComplexPart;
185 class ComCtlScrollBarObject : public ComCtlObjectBase
187 public:
188 explicit ComCtlScrollBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
190 protected:
191 virtual void implDumpProperties() override;
195 class ComCtlProgressBarObject : public ComCtlObjectBase
197 public:
198 explicit ComCtlProgressBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
200 protected:
201 virtual void implDumpProperties() override;
205 class ComCtlSliderObject : public ComCtlObjectBase
207 public:
208 explicit ComCtlSliderObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
210 protected:
211 virtual void implDumpProperties() override;
215 class ComCtlUpDownObject : public ComCtlObjectBase
217 public:
218 explicit ComCtlUpDownObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
220 protected:
221 virtual void implDumpProperties() override;
225 class ComCtlImageListObject : public ComCtlObjectBase
227 public:
228 explicit ComCtlImageListObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
230 protected:
231 virtual void implDumpProperties() override;
232 virtual void implDumpCommonExtra( sal_Int64 nEndPos ) override;
233 virtual void implDumpCommonTrailing() override;
237 class ComCtlTabStripObject : public ComCtlObjectBase
239 public:
240 explicit ComCtlTabStripObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
242 protected:
243 virtual void implDumpProperties() override;
244 virtual void implDumpCommonExtra( sal_Int64 nEndPos ) override;
248 class ComCtlTreeViewObject : public ComCtlObjectBase
250 public:
251 explicit ComCtlTreeViewObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
253 protected:
254 virtual void implDumpProperties() override;
255 virtual void implDumpCommonExtra( sal_Int64 nEndPos ) override;
257 private:
258 sal_uInt32 mnStringFlags;
262 class ComCtlStatusBarObject : public ComCtlObjectBase
264 public:
265 explicit ComCtlStatusBarObject( const InputObjectBase& rParent, sal_uInt16 nVersion );
267 protected:
268 virtual void implDumpProperties() override;
269 virtual void implDumpCommonExtra( sal_Int64 nEndPos ) override;
270 virtual void implDumpCommonTrailing() override;
274 class AxPropertyObjectBase : public OleInputObjectBase
276 protected:
277 AxPropertyObjectBase() {}
279 using OleInputObjectBase::construct;
280 void construct(
281 const ObjectBase& rParent,
282 const BinaryInputStreamRef& rxStrm,
283 const OUString& rSysFileName,
284 const String& rPropNameList,
285 bool b64BitPropFlags = false );
286 void construct(
287 const InputObjectBase& rParent,
288 const String& rPropNameList,
289 bool b64BitPropFlags = false );
291 virtual bool implIsValid() const override;
292 virtual void implDump() override;
294 virtual void implDumpShortProperties();
295 virtual void implDumpExtended();
297 bool ensureValid( bool bCondition = true );
299 template< typename Type >
300 void alignInput();
302 void setAlignAnchor();
303 bool startNextProperty();
304 OUString getPropertyName() const;
306 template< typename Type >
307 Type dumpDecProperty( Type nDefault, const NameListWrapper& rListWrp = NO_LIST );
308 template< typename Type >
309 Type dumpHexProperty( Type nDefault, const NameListWrapper& rListWrp = NO_LIST );
311 bool dumpBoolProperty() { return startNextProperty(); }
312 sal_Int32 dumpHmmProperty() { return dumpDecProperty< sal_Int32 >( 0, "CONV-HMM-TO-CM" ); }
313 sal_uInt8 dumpMousePtrProperty() { return dumpDecProperty< sal_uInt8 >( 0, "OLE-MOUSEPTR" ); }
314 template< typename Type >
315 Type dumpBorderStyleProperty( Type nDefault ) { return dumpDecProperty< Type >( nDefault, "AX-BORDERSTYLE" ); }
316 template< typename Type >
317 Type dumpSpecialEffectProperty( Type nDefault ) { return dumpDecProperty< Type >( nDefault, "AX-SPECIALEFFECT" ); }
318 sal_uInt32 dumpEnabledProperty() { return dumpDecProperty< sal_uInt32 >( 1, "AX-ENABLED" ); }
319 sal_Int32 dumpOrientationProperty() { return dumpDecProperty< sal_Int32 >( -1, "AX-ORIENTATION" ); }
320 sal_Int32 dumpDelayProperty() { return dumpDecProperty< sal_Int32 >( 50, "AX-CONV-MS" ); }
321 sal_uInt32 dumpImagePosProperty() { return dumpHexProperty< sal_uInt32 >( 0x00070001, "AX-IMAGEPOS" ); }
322 sal_uInt8 dumpImageSizeModeProperty() { return dumpDecProperty< sal_uInt8 >( 0, "AX-IMAGESIZEMODE" ); }
323 sal_uInt8 dumpImageAlignProperty() { return dumpDecProperty< sal_uInt8 >( 2, "AX-IMAGEALIGN" ); }
325 sal_uInt32 dumpFlagsProperty( sal_uInt32 nDefault, const char* pcNameList = "AX-FLAGS" );
326 sal_uInt32 dumpColorProperty( sal_uInt32 nDefault );
327 sal_Unicode dumpUnicodeProperty();
328 void dumpUnknownProperty();
330 void dumpPosProperty();
331 void dumpSizeProperty();
332 void dumpGuidProperty( OUString* pValue = nullptr );
333 void dumpStringProperty( OUString* pValue = nullptr );
334 void dumpStringArrayProperty();
335 void dumpStreamProperty();
337 void dumpEmbeddedFont();
338 void dumpToPosition( sal_Int64 nPos );
340 private:
341 void constructAxPropObj( const String& rPropNameList, bool b64BitPropFlags );
343 void dumpVersion();
344 OUString dumpString( const String& rName, sal_uInt32 nSize, bool bArray );
345 void dumpShortProperties();
346 void dumpLargeProperties();
348 private:
349 struct LargeProperty
351 enum LargePropertyType { PROPTYPE_POS, PROPTYPE_SIZE, PROPTYPE_GUID, PROPTYPE_STRING, PROPTYPE_STRINGARRAY };
353 LargePropertyType mePropType;
354 OUString maItemName;
355 sal_uInt32 mnDataSize;
356 OUString* mpItemValue;
357 explicit LargeProperty( LargePropertyType ePropType, String aItemName, sal_uInt32 nDataSize, OUString* pItemValue = nullptr ) :
358 mePropType( ePropType ), maItemName(std::move( aItemName )), mnDataSize( nDataSize ), mpItemValue( pItemValue ) {}
360 typedef ::std::vector< LargeProperty > LargePropertyVector;
362 struct StreamProperty
364 OUString maItemName;
365 sal_uInt16 mnData;
366 explicit StreamProperty( String aItemName, sal_uInt16 nData ) :
367 maItemName(std::move( aItemName )), mnData( nData ) {}
370 LargePropertyVector maLargeProps;
371 std::vector< StreamProperty >
372 maStreamProps;
373 NameListRef mxPropNames;
374 sal_Int64 mnPropertiesStart;
375 sal_Int64 mnPropertiesEnd;
376 sal_Int64 mnPropFlags;
377 sal_Int64 mnCurrProp;
378 bool mb64BitPropFlags;
379 bool mbValid;
383 template< typename Type >
384 void AxPropertyObjectBase::alignInput()
386 mxStrm->skip( (sizeof( Type ) - ((mxStrm->tell() - mnPropertiesStart) % sizeof( Type ))) % sizeof( Type ) );
389 template< typename Type >
390 Type AxPropertyObjectBase::dumpDecProperty( Type nDefault, const NameListWrapper& rListWrp )
392 if( startNextProperty() )
394 alignInput< Type >();
395 return dumpDec< Type >( getPropertyName(), rListWrp );
397 return nDefault;
400 template< typename Type >
401 Type AxPropertyObjectBase::dumpHexProperty( Type nDefault, const NameListWrapper& rListWrp )
403 if( startNextProperty() )
405 alignInput< Type >();
406 return dumpHex< Type >( getPropertyName(), rListWrp );
408 return nDefault;
412 class AxCFontNewObject : public AxPropertyObjectBase
414 public:
415 explicit AxCFontNewObject( const InputObjectBase& rParent );
417 protected:
418 virtual void implDumpShortProperties() override;
422 class AxColumnInfoObject : public AxPropertyObjectBase
424 public:
425 explicit AxColumnInfoObject( const InputObjectBase& rParent );
427 protected:
428 virtual void implDumpShortProperties() override;
432 class AxCommandButtonObject : public AxPropertyObjectBase
434 public:
435 explicit AxCommandButtonObject( const InputObjectBase& rParent );
437 protected:
438 virtual void implDumpShortProperties() override;
439 virtual void implDumpExtended() override;
443 class AxMorphControlObject : public AxPropertyObjectBase
445 public:
446 explicit AxMorphControlObject( const InputObjectBase& rParent );
448 protected:
449 virtual void implDumpShortProperties() override;
450 virtual void implDumpExtended() override;
452 private:
453 void dumpColumnInfos();
455 private:
456 sal_uInt16 mnColInfoCount;
457 sal_uInt8 mnCtrlType;
461 class AxLabelObject : public AxPropertyObjectBase
463 public:
464 explicit AxLabelObject( const InputObjectBase& rParent );
466 protected:
467 virtual void implDumpShortProperties() override;
468 virtual void implDumpExtended() override;
472 class AxImageObject : public AxPropertyObjectBase
474 public:
475 explicit AxImageObject( const InputObjectBase& rParent );
477 protected:
478 virtual void implDumpShortProperties() override;
482 class AxScrollBarObject : public AxPropertyObjectBase
484 public:
485 explicit AxScrollBarObject( const InputObjectBase& rParent );
487 protected:
488 virtual void implDumpShortProperties() override;
492 class AxSpinButtonObject : public AxPropertyObjectBase
494 public:
495 explicit AxSpinButtonObject( const InputObjectBase& rParent );
497 protected:
498 virtual void implDumpShortProperties() override;
502 class AxTabStripObject : public AxPropertyObjectBase
504 public:
505 explicit AxTabStripObject( const InputObjectBase& rParent );
507 protected:
508 virtual void implDumpShortProperties() override;
509 virtual void implDumpExtended() override;
511 private:
512 sal_Int32 mnTabFlagCount;
516 class FormControlStreamObject : public OleInputObjectBase
518 public:
519 explicit FormControlStreamObject(
520 const ObjectBase& rParent,
521 const BinaryInputStreamRef& rxStrm,
522 const OUString& rSysFileName,
523 const OUString* pProgId = nullptr );
524 explicit FormControlStreamObject(
525 const OutputObjectBase& rParent,
526 const BinaryInputStreamRef& rxStrm,
527 const OUString* pProgId = nullptr );
529 protected:
530 virtual void implDump() override;
532 private:
533 void constructFormCtrlStrmObj( const OUString* pProgId );
535 private:
536 OUString maProgId;
537 bool mbReadGuid;
541 struct VbaFormSiteInfo
543 OUString maProgId;
544 sal_Int32 mnId;
545 sal_uInt32 mnLength;
546 bool mbInStream;
548 VbaFormSiteInfo() : mnId( 0 ), mnLength( 0 ), mbInStream( false ) {}
552 struct VbaFormSharedData
554 OUStringVector maClassInfoProgIds;
555 std::vector< VbaFormSiteInfo > maSiteInfos;
559 class VbaFormClassInfoObject : public AxPropertyObjectBase
561 public:
562 explicit VbaFormClassInfoObject( const InputObjectBase& rParent, VbaFormSharedData& rFormData );
564 protected:
565 virtual void implDumpShortProperties() override;
567 private:
568 VbaFormSharedData& mrFormData;
572 class VbaFormSiteObject : public AxPropertyObjectBase
574 public:
575 explicit VbaFormSiteObject( const InputObjectBase& rParent, VbaFormSharedData& rFormData );
577 protected:
578 virtual void implDumpShortProperties() override;
580 private:
581 VbaFormSharedData& mrFormData;
585 class VbaFormDesignExtObject : public AxPropertyObjectBase
587 public:
588 explicit VbaFormDesignExtObject( const InputObjectBase& rParent );
590 protected:
591 virtual void implDumpShortProperties() override;
595 class VbaFStreamObject : public AxPropertyObjectBase
597 public:
598 explicit VbaFStreamObject(
599 const ObjectBase& rParent,
600 const BinaryInputStreamRef& rxStrm,
601 const OUString& rSysFileName,
602 VbaFormSharedData& rFormData );
604 protected:
605 virtual void implDumpShortProperties() override;
606 virtual void implDumpExtended() override;
608 private:
609 void dumpClassInfos();
610 void dumpFormSites( sal_uInt32 nCount );
611 void dumpSiteData();
612 void dumpDesignExtender();
614 private:
615 VbaFormSharedData& mrFormData;
616 sal_uInt32 mnFlags;
620 class VbaOStreamObject : public OleInputObjectBase
622 public:
623 explicit VbaOStreamObject(
624 const ObjectBase& rParent,
625 const BinaryInputStreamRef& rxStrm,
626 const OUString& rSysFileName,
627 VbaFormSharedData& rFormData );
629 protected:
630 virtual void implDump() override;
632 private:
633 VbaFormSharedData& mrFormData;
637 class VbaPageObject : public AxPropertyObjectBase
639 public:
640 explicit VbaPageObject( const InputObjectBase& rParent );
642 protected:
643 virtual void implDumpShortProperties() override;
647 class VbaMultiPageObject : public AxPropertyObjectBase
649 public:
650 explicit VbaMultiPageObject( const InputObjectBase& rParent );
652 protected:
653 virtual void implDumpShortProperties() override;
654 virtual void implDumpExtended() override;
656 private:
657 sal_Int32 mnPageCount;
661 class VbaXStreamObject : public InputObjectBase
663 public:
664 explicit VbaXStreamObject(
665 const ObjectBase& rParent,
666 const BinaryInputStreamRef& rxStrm,
667 const OUString& rSysFileName,
668 VbaFormSharedData& rFormData );
670 protected:
671 virtual void implDump() override;
673 private:
674 VbaFormSharedData& mrFormData;
678 class VbaContainerStorageObject : public OleStorageObject
680 public:
681 explicit VbaContainerStorageObject(
682 const ObjectBase& rParent,
683 const StorageRef& rxStrg,
684 const OUString& rSysPath );
686 protected:
687 virtual void implDumpStream(
688 const css::uno::Reference< css::io::XInputStream >& rxStrm,
689 const OUString& rStrgPath,
690 const OUString& rStrmName,
691 const OUString& rSysFileName ) override;
693 virtual void implDumpStorage(
694 const StorageRef& rxStrg,
695 const OUString& rStrgPath,
696 const OUString& rSysPath ) override;
698 private:
699 bool isFormStorage( std::u16string_view rStrgPath ) const;
701 private:
702 VbaFormSharedData maFormData;
706 struct VbaSharedData
708 typedef ::std::map< OUString, sal_Int32 > StreamOffsetMap;
710 StreamOffsetMap maStrmOffsets;
711 rtl_TextEncoding meTextEnc;
713 VbaSharedData();
715 bool isModuleStream( const OUString& rStrmName ) const;
716 sal_Int32 getStreamOffset( const OUString& rStrmName ) const;
720 class VbaDirStreamObject : public SequenceRecordObjectBase
722 public:
723 explicit VbaDirStreamObject(
724 const ObjectBase& rParent,
725 const BinaryInputStreamRef& rxStrm,
726 const OUString& rSysFileName,
727 VbaSharedData& rVbaData );
729 protected:
730 virtual bool implIsValid() const override;
731 virtual bool implReadRecordHeader( BinaryInputStream& rBaseStrm, sal_Int64& ornRecId, sal_Int64& ornRecSize ) override;
732 virtual void implDumpRecordBody() override;
734 private:
735 OUString dumpByteString( const String& rName );
736 OUString dumpUniString( const String& rName );
737 OUString dumpByteStringWithLength( const String& rName );
739 private:
740 VbaSharedData& mrVbaData;
741 BinaryInputStreamRef mxInStrm;
742 OUString maCurrStream;
743 sal_Int32 mnCurrOffset;
747 class VbaModuleStreamObject : public InputObjectBase
749 public:
750 explicit VbaModuleStreamObject(
751 const ObjectBase& rParent,
752 const BinaryInputStreamRef& rxStrm,
753 const OUString& rSysFileName,
754 VbaSharedData& rVbaData,
755 sal_Int32 nStrmOffset );
757 protected:
758 virtual void implDump() override;
760 private:
761 VbaSharedData& mrVbaData;
762 sal_Int32 mnStrmOffset;
766 class VbaStorageObject : public OleStorageObject
768 public:
769 explicit VbaStorageObject(
770 const ObjectBase& rParent,
771 const StorageRef& rxStrg,
772 const OUString& rSysPath,
773 VbaSharedData& rVbaData );
775 protected:
776 virtual void implDumpStream(
777 const css::uno::Reference< css::io::XInputStream >& rxStrm,
778 const OUString& rStrgPath,
779 const OUString& rStrmName,
780 const OUString& rSysFileName ) override;
782 private:
783 VbaSharedData& mrVbaData;
787 class VbaFormStorageObject : public VbaContainerStorageObject
789 public:
790 explicit VbaFormStorageObject(
791 const ObjectBase& rParent,
792 const StorageRef& rxStrg,
793 const OUString& rSysPath,
794 VbaSharedData& rVbaData );
796 protected:
797 virtual void implDumpStream(
798 const css::uno::Reference< css::io::XInputStream >& rxStrm,
799 const OUString& rStrgPath,
800 const OUString& rStrmName,
801 const OUString& rSysFileName ) override;
803 private:
804 VbaSharedData& mrVbaData;
808 class VbaProjectStorageObject : public OleStorageObject
810 public:
811 explicit VbaProjectStorageObject( const ObjectBase& rParent, const StorageRef& rxStrg, const OUString& rSysPath );
813 protected:
814 virtual void implDumpStream(
815 const css::uno::Reference< css::io::XInputStream >& rxStrm,
816 const OUString& rStrgPath,
817 const OUString& rStrmName,
818 const OUString& rSysFileName ) override;
820 virtual void implDumpStorage(
821 const StorageRef& rxStrg,
822 const OUString& rStrgPath,
823 const OUString& rSysPath ) override;
825 private:
826 VbaSharedData maVbaData;
830 class ActiveXStorageObject : public VbaContainerStorageObject
832 public:
833 explicit ActiveXStorageObject(
834 const ObjectBase& rParent,
835 const StorageRef& rxStrg,
836 const OUString& rSysPath );
838 protected:
839 virtual void implDumpBaseStream(
840 const BinaryInputStreamRef& rxStrm,
841 const OUString& rSysFileName ) override;
845 } // namespace oox::dump
847 #endif
848 #endif
850 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */