LibreOffice Module package (master) 1
owriteablestream.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
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/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
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 .
18 */
19
20#ifndef INCLUDED_PACKAGE_SOURCE_XSTOR_OWRITEABLESTREAM_HXX
21#define INCLUDED_PACKAGE_SOURCE_XSTOR_OWRITEABLESTREAM_HXX
22
23#include <com/sun/star/io/XInputStream.hpp>
24#include <com/sun/star/io/XOutputStream.hpp>
25#include <com/sun/star/io/XStream.hpp>
26#include <com/sun/star/io/XSeekable.hpp>
27#include <com/sun/star/io/XTruncate.hpp>
28#include <com/sun/star/packages/XDataSinkEncrSupport.hpp>
29#include <com/sun/star/lang/XEventListener.hpp>
30#include <com/sun/star/lang/XSingleServiceFactory.hpp>
31#include <com/sun/star/embed/XEncryptionProtectedSource2.hpp>
32#include <com/sun/star/embed/XStorage.hpp>
33#include <com/sun/star/embed/XRelationshipAccess.hpp>
34#include <com/sun/star/embed/XExtendedStorageStream.hpp>
35#include <com/sun/star/embed/XTransactedObject.hpp>
36#include <com/sun/star/embed/XTransactionBroadcaster.hpp>
37#include <com/sun/star/container/XNameContainer.hpp>
38#include <com/sun/star/beans/StringPair.hpp>
39
40#include <cppuhelper/weak.hxx>
43
47#include <unotools/tempfile.hxx>
48
49#include <vector>
50#include <memory>
51#include <string_view>
52
53#include "ocompinstream.hxx"
54
55namespace com::sun::star::uno {
56 class XComponentContext;
57}
58
59namespace package {
60 // all data in aHash1 is contained in aHash2
61 bool PackageEncryptionDataLessOrEqual( const ::comphelper::SequenceAsHashMap& aHash1, const ::comphelper::SequenceAsHashMap& aHash2 );
62}
63
64struct OStorage_Impl;
65class OWriteStream;
66
68{
70
71 friend struct OStorage_Impl;
72 friend class OWriteStream;
73 friend class OInputCompStream;
74
76 std::optional<utl::TempFileFast> m_oTempFile;
77
78 css::uno::Reference< css::io::XStream > m_xCacheStream;
79 css::uno::Reference< css::io::XSeekable > m_xCacheSeek;
80
81 std::vector< OInputCompStream* > m_aInputStreamsVector;
82
83 bool m_bHasDataToFlush; // only modified elements will be sent to the original content
84 bool m_bFlushed; // sending the streams is coordinated by the root storage of the package
85
86 css::uno::Reference< css::packages::XDataSinkEncrSupport > m_xPackageStream;
87
88 css::uno::Reference< css::uno::XComponentContext > m_xContext;
89
91
92 css::uno::Sequence< css::beans::PropertyValue > m_aProps;
93
95
99
101
102 css::uno::Reference< css::lang::XSingleServiceFactory > m_xPackage;
103
105
106 sal_Int32 m_nStorageType;
107
108 // Relations info related data, stored in *.rels file in OFOPXML format
109 css::uno::Reference< css::io::XInputStream > m_xOrigRelInfoStream;
110 css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > m_aOrigRelInfo;
112
113 css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > m_aNewRelInfo;
114 css::uno::Reference< css::io::XInputStream > m_xNewRelInfoStream;
116 sal_Int32 m_nRelId;
117
118private:
119 void GetFilledTempFileIfNo( const css::uno::Reference< css::io::XInputStream >& xStream );
120 void FillTempGetFileName();
121 css::uno::Reference< css::io::XStream > GetTempFileAsStream();
122 css::uno::Reference< css::io::XInputStream > GetTempFileAsInputStream();
123
124 css::uno::Reference< css::io::XStream > GetStream_Impl( sal_Int32 nStreamMode,
125 bool bHierarchyAccess );
126
129
130 css::uno::Sequence< css::beans::PropertyValue > ReadPackageStreamProperties();
131 css::uno::Sequence< css::beans::PropertyValue > InsertOwnProps(
132 const css::uno::Sequence< css::beans::PropertyValue >& aProps,
133 bool bUseCommonEncryption );
134
135public:
137 OStorage_Impl* pParent,
138 const css::uno::Reference< css::packages::XDataSinkEncrSupport >& xPackageStream,
139 const css::uno::Reference< css::lang::XSingleServiceFactory >& xPackage,
140 css::uno::Reference< css::uno::XComponentContext > xContext,
141 bool bForceEncrypted,
142 sal_Int32 nStorageType,
143 bool bDefaultCompress,
144 css::uno::Reference< css::io::XInputStream > xRelInfoStream =
145 css::uno::Reference< css::io::XInputStream >() );
146
148
149 void CleanCacheStream();
150
152 bool HasTempFile_Impl() const { return m_oTempFile.has_value(); }
153 bool IsTransacted();
154
155 bool HasWriteOwner_Impl() const { return ( m_pAntiImpl != nullptr ); }
156
158 const OUString& aName,
159 const css::uno::Reference< css::container::XNameContainer >& xParentPackageFolder );
160
161 void SetToBeCommited() { m_bFlushed = true; }
162
165
166 bool IsModified() const { return m_bHasDataToFlush || m_bFlushed; }
167
168 bool IsEncrypted();
169 void SetDecrypted();
170 void SetEncrypted( const ::comphelper::SequenceAsHashMap& aEncryptionData );
171
172 void DisposeWrappers();
173
175 const css::uno::Reference< css::io::XInputStream >& xInStream,
176 const css::uno::Sequence< css::beans::PropertyValue >& aProps );
177
178 void Commit();
179 void Revert();
180
181 css::uno::Sequence< css::beans::PropertyValue > const & GetStreamProperties();
182
183 css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > GetAllRelationshipsIfAny();
184
185 void CopyInternallyTo_Impl( const css::uno::Reference< css::io::XStream >& xDestStream,
186 const ::comphelper::SequenceAsHashMap& aEncryptionData );
187 void CopyInternallyTo_Impl( const css::uno::Reference< css::io::XStream >& xDestStream );
188
189 css::uno::Reference< css::io::XStream > GetStream(
190 sal_Int32 nStreamMode,
191 const ::comphelper::SequenceAsHashMap& aEncryptionData,
192 bool bHierarchyAccess );
193
194 css::uno::Reference< css::io::XStream > GetStream(
195 sal_Int32 nStreamMode,
196 bool bHierarchyAccess );
197
198 css::uno::Reference< css::io::XInputStream > GetRawInStream();
199 css::uno::Reference< css::io::XInputStream > GetPlainRawInStream();
200
201 void InputStreamDisposed( OInputCompStream* pStream );
202
204 const css::uno::Reference< css::io::XInputStream >& xDataToCopy,
205 const css::uno::Sequence< css::beans::PropertyValue >& aProps,
206 css::uno::Reference< css::io::XStream >& xTargetStream );
207
208 void GetCopyOfLastCommit( css::uno::Reference< css::io::XStream >& xTargetStream );
210 css::uno::Reference< css::io::XStream >& xTargetStream,
211 const ::comphelper::SequenceAsHashMap& aEncryptionData );
212
214 const css::uno::Reference< css::embed::XStorage >& xRelStorage,
215 std::u16string_view aOrigStreamName,
216 std::u16string_view aNewStreamName );
217
219
220 sal_Int32 GetNewRelId() { return m_nRelId ++; }
221};
222
223class OWriteStream : public css::lang::XTypeProvider
224 , public css::io::XInputStream
225 , public css::io::XOutputStream
226 , public css::embed::XExtendedStorageStream
227 , public css::io::XSeekable
228 , public css::io::XTruncate
229 , public css::embed::XEncryptionProtectedSource2
230 , public css::embed::XRelationshipAccess
231 , public css::embed::XTransactedObject
232 , public css::embed::XTransactionBroadcaster
233 , public css::beans::XPropertySet
234 , public ::cppu::OWeakObject
235 , public comphelper::ByteWriter
236{
237 friend struct OWriteStream_Impl;
238
239protected:
240 css::uno::Reference < css::io::XInputStream > m_xInStream;
241 css::uno::Reference < css::io::XOutputStream > m_xOutStream;
242 css::uno::Reference < css::io::XSeekable > m_xSeekable;
243
246 ::std::optional< ::cppu::OTypeCollection> m_oTypeCollection;
248 sal_Int32 m_nStorageType;
249
253
255
256 OWriteStream( OWriteStream_Impl& rImpl, bool bTransacted );
257 OWriteStream( OWriteStream_Impl& rImpl, css::uno::Reference< css::io::XStream > const & xStream, bool bTransacted );
258
259 void CloseOutput_Impl();
260
261 void CopyToStreamInternally_Impl( const css::uno::Reference< css::io::XStream >& xStream );
262
263 void ModifyParentUnlockMutex_Impl(osl::ClearableMutexGuard& aGuard);
264
265 void BroadcastTransaction( sal_Int8 nMessage );
266
267public:
268
269 virtual ~OWriteStream() override;
270
271 void CheckInitOnDemand();
272 void DeInit();
273
274 // XInterface
275 virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& rType ) override;
276 virtual void SAL_CALL acquire() noexcept override;
277 virtual void SAL_CALL release() noexcept override;
278
279 // XTypeProvider
280 virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override;
281 virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override;
282
283 // XInputStream
284 virtual sal_Int32 SAL_CALL readBytes( css::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) override;
285 virtual sal_Int32 SAL_CALL readSomeBytes( css::uno::Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead ) override;
286 virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip ) override;
287 virtual sal_Int32 SAL_CALL available( ) override;
288 virtual void SAL_CALL closeInput( ) override;
289
290 // XOutputStream
291 virtual void SAL_CALL writeBytes( const css::uno::Sequence< sal_Int8 >& aData ) override;
292 virtual void SAL_CALL flush( ) override;
293 virtual void SAL_CALL closeOutput( ) override;
294
295 //XSeekable
296 virtual void SAL_CALL seek( sal_Int64 location ) override;
297 virtual sal_Int64 SAL_CALL getPosition() override;
298 virtual sal_Int64 SAL_CALL getLength() override;
299
300 //XStream
301 virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getInputStream( ) override;
302 virtual css::uno::Reference< css::io::XOutputStream > SAL_CALL getOutputStream( ) override;
303
304 // XTruncate
305 virtual void SAL_CALL truncate() override;
306
307 //XComponent
308 virtual void SAL_CALL dispose() override;
309 virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) override;
310 virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& aListener ) override;
311
312 //XEncryptionProtectedSource
313 virtual void SAL_CALL setEncryptionPassword( const OUString& aPass ) override;
314 virtual void SAL_CALL removeEncryption() override;
315
316 //XEncryptionProtectedSource2
317 virtual void SAL_CALL setEncryptionData( const css::uno::Sequence< css::beans::NamedValue >& aEncryptionData ) override;
318 virtual sal_Bool SAL_CALL hasEncryptionData() override;
319
320 //XRelationshipAccess
321 virtual sal_Bool SAL_CALL hasByID( const OUString& sID ) override;
322 virtual OUString SAL_CALL getTargetByID( const OUString& sID ) override;
323 virtual OUString SAL_CALL getTypeByID( const OUString& sID ) override;
324 virtual css::uno::Sequence< css::beans::StringPair > SAL_CALL getRelationshipByID( const OUString& sID ) override;
325 virtual css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > SAL_CALL getRelationshipsByType( const OUString& sType ) override;
326 virtual css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > SAL_CALL getAllRelationships( ) override;
327 virtual void SAL_CALL insertRelationshipByID( const OUString& sID, const css::uno::Sequence< css::beans::StringPair >& aEntry, sal_Bool bReplace ) override;
328 virtual void SAL_CALL removeRelationshipByID( const OUString& sID ) override;
329 virtual void SAL_CALL insertRelationships( const css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > >& aEntries, sal_Bool bReplace ) override;
330 virtual void SAL_CALL clearRelationships( ) override;
331
332 //XPropertySet
333 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override;
334 virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override;
335 virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override;
336 virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override;
337 virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override;
338 virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
339 virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
340
341 // XTransactedObject
342 virtual void SAL_CALL commit() override;
343 virtual void SAL_CALL revert() override;
344
345 // XTransactionBroadcaster
346 virtual void SAL_CALL addTransactionListener(
347 const css::uno::Reference< css::embed::XTransactionListener >& aListener ) override;
348 virtual void SAL_CALL removeTransactionListener(
349 const css::uno::Reference< css::embed::XTransactionListener >& aListener ) override;
350
351 // comphelper::ByteWriter
352 virtual void writeBytes(const sal_Int8* aData, sal_Int32 nBytesToWrite) override;
353
354};
355
356#endif
357
358/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
OWriteStream(OWriteStream_Impl &rImpl, css::uno::Reference< css::io::XStream > const &xStream, bool bTransacted)
void ModifyParentUnlockMutex_Impl(osl::ClearableMutexGuard &aGuard)
virtual sal_Int32 SAL_CALL available() override
virtual sal_Int32 SAL_CALL readSomeBytes(css::uno::Sequence< sal_Int8 > &aData, sal_Int32 nMaxBytesToRead) override
virtual void SAL_CALL addPropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
OWriteStream_Impl * m_pImpl
rtl::Reference< comphelper::RefCountedMutex > m_xSharedMutex
virtual void SAL_CALL revert() override
virtual void SAL_CALL addVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
virtual sal_Int64 SAL_CALL getLength() override
virtual void SAL_CALL writeBytes(const css::uno::Sequence< sal_Int8 > &aData) override
virtual void SAL_CALL setEncryptionPassword(const OUString &aPass) override
virtual void SAL_CALL dispose() override
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
virtual sal_Bool SAL_CALL hasEncryptionData() override
virtual css::uno::Sequence< css::beans::StringPair > SAL_CALL getRelationshipByID(const OUString &sID) override
virtual css::uno::Reference< css::io::XOutputStream > SAL_CALL getOutputStream() override
sal_Int32 m_nStorageType
comphelper::OMultiTypeInterfaceContainerHelper2 m_aListenersContainer
virtual void SAL_CALL removeRelationshipByID(const OUString &sID) override
virtual void SAL_CALL addTransactionListener(const css::uno::Reference< css::embed::XTransactionListener > &aListener) override
void CopyToStreamInternally_Impl(const css::uno::Reference< css::io::XStream > &xStream)
virtual void SAL_CALL seek(sal_Int64 location) override
virtual void SAL_CALL insertRelationshipByID(const OUString &sID, const css::uno::Sequence< css::beans::StringPair > &aEntry, sal_Bool bReplace) override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getInputStream() override
::std::optional< ::cppu::OTypeCollection > m_oTypeCollection
css::uno::Reference< css::io::XSeekable > m_xSeekable
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
void BroadcastTransaction(sal_Int8 nMessage)
virtual void SAL_CALL truncate() override
virtual sal_Int32 SAL_CALL readBytes(css::uno::Sequence< sal_Int8 > &aData, sal_Int32 nBytesToRead) override
virtual void SAL_CALL release() noexcept override
virtual css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > SAL_CALL getAllRelationships() override
virtual void SAL_CALL removeEncryption() override
sal_Int64 m_nInitPosition
virtual void SAL_CALL commit() override
virtual void SAL_CALL closeOutput() override
virtual void SAL_CALL removeTransactionListener(const css::uno::Reference< css::embed::XTransactionListener > &aListener) override
OWriteStream(OWriteStream_Impl &rImpl, bool bTransacted)
virtual css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > SAL_CALL getRelationshipsByType(const OUString &sType) override
css::uno::Reference< css::io::XOutputStream > m_xOutStream
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
virtual void SAL_CALL acquire() noexcept override
virtual void SAL_CALL removePropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &aListener) override
virtual sal_Int64 SAL_CALL getPosition() override
virtual void SAL_CALL setEncryptionData(const css::uno::Sequence< css::beans::NamedValue > &aEncryptionData) override
virtual OUString SAL_CALL getTypeByID(const OUString &sID) override
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > &aListener) override
css::uno::Reference< css::io::XInputStream > m_xInStream
virtual sal_Bool SAL_CALL hasByID(const OUString &sID) override
virtual OUString SAL_CALL getTargetByID(const OUString &sID) override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
virtual void SAL_CALL flush() override
virtual void SAL_CALL clearRelationships() override
virtual void SAL_CALL insertRelationships(const css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > &aEntries, sal_Bool bReplace) override
virtual void SAL_CALL skipBytes(sal_Int32 nBytesToSkip) override
virtual ~OWriteStream() override
virtual void SAL_CALL closeInput() override
virtual void SAL_CALL removeVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > &xListener) override
Type
bool PackageEncryptionDataLessOrEqual(const ::comphelper::SequenceAsHashMap &aHash1, const ::comphelper::SequenceAsHashMap &aHash2)
css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > m_aNewRelInfo
void CopyInternallyTo_Impl(const css::uno::Reference< css::io::XStream > &xDestStream, const ::comphelper::SequenceAsHashMap &aEncryptionData)
bool HasTempFile_Impl() const
rtl::Reference< comphelper::RefCountedMutex > m_xMutex
css::uno::Reference< css::io::XStream > m_xCacheStream
css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > m_aOrigRelInfo
void SetEncrypted(const ::comphelper::SequenceAsHashMap &aEncryptionData)
css::uno::Reference< css::io::XSeekable > m_xCacheSeek
::comphelper::SequenceAsHashMap GetCommonRootEncryptionData()
css::uno::Reference< css::io::XInputStream > m_xNewRelInfoStream
void GetCopyOfLastCommit(css::uno::Reference< css::io::XStream > &xTargetStream)
css::uno::Reference< css::packages::XDataSinkEncrSupport > m_xPackageStream
void GetCopyOfLastCommit(css::uno::Reference< css::io::XStream > &xTargetStream, const ::comphelper::SequenceAsHashMap &aEncryptionData)
::comphelper::SequenceAsHashMap m_aEncryptionData
css::uno::Sequence< css::uno::Sequence< css::beans::StringPair > > GetAllRelationshipsIfAny()
void CreateReadonlyCopyBasedOnData(const css::uno::Reference< css::io::XInputStream > &xDataToCopy, const css::uno::Sequence< css::beans::PropertyValue > &aProps, css::uno::Reference< css::io::XStream > &xTargetStream)
bool HasCachedEncryptionData() const
css::uno::Reference< css::io::XInputStream > GetPlainRawInStream()
OWriteStream * m_pAntiImpl
css::uno::Reference< css::io::XInputStream > m_xOrigRelInfoStream
css::uno::Reference< css::io::XInputStream > GetTempFileAsInputStream()
void GetFilledTempFileIfNo(const css::uno::Reference< css::io::XInputStream > &xStream)
bool UsesCommonEncryption_Impl() const
std::optional< utl::TempFileFast > m_oTempFile
css::uno::Reference< css::uno::XComponentContext > m_xContext
void CommitStreamRelInfo(const css::uno::Reference< css::embed::XStorage > &xRelStorage, std::u16string_view aOrigStreamName, std::u16string_view aNewStreamName)
css::uno::Sequence< css::beans::PropertyValue > const & GetStreamProperties()
OStorage_Impl * m_pParent
css::uno::Reference< css::io::XStream > GetStream(sal_Int32 nStreamMode, const ::comphelper::SequenceAsHashMap &aEncryptionData, bool bHierarchyAccess)
css::uno::Reference< css::io::XInputStream > GetRawInStream()
void InsertIntoPackageFolder(const OUString &aName, const css::uno::Reference< css::container::XNameContainer > &xParentPackageFolder)
css::uno::Sequence< css::beans::PropertyValue > m_aProps
bool HasWriteOwner_Impl() const
void InputStreamDisposed(OInputCompStream *pStream)
void InsertStreamDirectly(const css::uno::Reference< css::io::XInputStream > &xInStream, const css::uno::Sequence< css::beans::PropertyValue > &aProps)
void CopyInternallyTo_Impl(const css::uno::Reference< css::io::XStream > &xDestStream)
css::uno::Reference< css::lang::XSingleServiceFactory > m_xPackage
css::uno::Reference< css::io::XStream > GetStream_Impl(sal_Int32 nStreamMode, bool bHierarchyAccess)
css::uno::Reference< css::io::XStream > GetTempFileAsStream()
css::uno::Sequence< css::beans::PropertyValue > ReadPackageStreamProperties()
std::vector< OInputCompStream * > m_aInputStreamsVector
::comphelper::SequenceAsHashMap & GetCachedEncryptionData()
css::uno::Sequence< css::beans::PropertyValue > InsertOwnProps(const css::uno::Sequence< css::beans::PropertyValue > &aProps, bool bUseCommonEncryption)
OWriteStream_Impl(OStorage_Impl *pParent, const css::uno::Reference< css::packages::XDataSinkEncrSupport > &xPackageStream, const css::uno::Reference< css::lang::XSingleServiceFactory > &xPackage, css::uno::Reference< css::uno::XComponentContext > xContext, bool bForceEncrypted, sal_Int32 nStorageType, bool bDefaultCompress, css::uno::Reference< css::io::XInputStream > xRelInfoStream=css::uno::Reference< css::io::XInputStream >())
unsigned char sal_Bool
signed char sal_Int8