21#include <unordered_map>
27#include <osl/endian.h>
29#include <com/sun/star/io/NotConnectedException.hpp>
30#include <com/sun/star/io/XObjectInputStream.hpp>
31#include <com/sun/star/io/XObjectOutputStream.hpp>
32#include <com/sun/star/io/XActiveDataSource.hpp>
33#include <com/sun/star/io/XActiveDataSink.hpp>
34#include <com/sun/star/io/XMarkableStream.hpp>
35#include <com/sun/star/io/XConnectable.hpp>
36#include <com/sun/star/io/UnexpectedEOFException.hpp>
37#include <com/sun/star/io/WrongFormatException.hpp>
38#include <com/sun/star/lang/XServiceInfo.hpp>
39#include <com/sun/star/uno/XComponentContext.hpp>
41using namespace ::
cppu;
51class ODataInputStream :
52 public WeakImplHelper <
68 virtual void SAL_CALL skipBytes(sal_Int32 nBytesToSkip)
override;
69 virtual sal_Int32 SAL_CALL available()
override;
70 virtual void SAL_CALL closeInput()
override;
73 virtual sal_Int8 SAL_CALL readBoolean()
override;
74 virtual sal_Int8 SAL_CALL readByte()
override;
76 virtual sal_Int16 SAL_CALL readShort()
override;
77 virtual sal_Int32 SAL_CALL readLong()
override;
78 virtual sal_Int64 SAL_CALL readHyper()
override;
79 virtual float SAL_CALL readFloat()
override;
80 virtual double SAL_CALL readDouble()
override;
81 virtual OUString SAL_CALL readUTF()
override;
85 virtual void SAL_CALL setInputStream(
const Reference< XInputStream > & aStream)
override;
86 virtual Reference< XInputStream > SAL_CALL getInputStream()
override;
89 virtual void SAL_CALL setPredecessor(
const Reference < XConnectable >& aPredecessor)
override;
90 virtual Reference < XConnectable > SAL_CALL getPredecessor()
override;
91 virtual void SAL_CALL setSuccessor(
const Reference < XConnectable >& aSuccessor)
override;
92 virtual Reference < XConnectable > SAL_CALL getSuccessor()
override ;
115 throw NotConnectedException( );
117 sal_Int32 nRead =
m_input->readBytes( aData , nBytesToRead );
121sal_Int32 ODataInputStream::readSomeBytes(
Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead)
124 throw NotConnectedException( );
125 sal_Int32 nRead =
m_input->readSomeBytes( aData , nMaxBytesToRead );
128void ODataInputStream::skipBytes(sal_Int32 nBytesToSkip)
131 throw NotConnectedException( );
132 m_input->skipBytes( nBytesToSkip );
136sal_Int32 ODataInputStream::available()
139 throw NotConnectedException( );
140 sal_Int32 nAvail =
m_input->available( );
144void ODataInputStream::closeInput()
147 throw NotConnectedException( );
149 setInputStream( Reference< XInputStream > () );
150 setPredecessor( Reference < XConnectable >() );
151 setSuccessor( Reference < XConnectable >() );
159sal_Int8 ODataInputStream::readBoolean()
164sal_Int8 ODataInputStream::readByte()
166 Sequence<sal_Int8> aTmp(1);
167 if( 1 != readBytes( aTmp, 1 ) )
169 throw UnexpectedEOFException();
171 return aTmp.getConstArray()[0];
176 Sequence<sal_Int8> aTmp(2);
177 if( 2 != readBytes( aTmp, 2 ) )
179 throw UnexpectedEOFException();
183 return (
static_cast<sal_Unicode>(pBytes[0]) << 8) + pBytes[1];
186sal_Int16 ODataInputStream::readShort()
188 Sequence<sal_Int8> aTmp(2);
189 if( 2 != readBytes( aTmp, 2 ) )
191 throw UnexpectedEOFException();
195 return (
static_cast<sal_Int16
>(pBytes[0]) << 8) + pBytes[1];
199sal_Int32 ODataInputStream::readLong()
201 Sequence<sal_Int8> aTmp(4);
202 if( 4 != readBytes( aTmp, 4 ) )
204 throw UnexpectedEOFException( );
208 return (
static_cast<sal_Int32
>(pBytes[0]) << 24) + (
static_cast<sal_Int32
>(pBytes[1]) << 16) + (
static_cast<sal_Int32
>(pBytes[2]) << 8) + pBytes[3];
212sal_Int64 ODataInputStream::readHyper()
214 Sequence<sal_Int8> aTmp(8);
215 if( 8 != readBytes( aTmp, 8 ) )
217 throw UnexpectedEOFException( );
222 (
static_cast<sal_Int64
>(pBytes[0]) << 56) +
223 (
static_cast<sal_Int64
>(pBytes[1]) << 48) +
224 (
static_cast<sal_Int64
>(pBytes[2]) << 40) +
225 (
static_cast<sal_Int64
>(pBytes[3]) << 32) +
226 (
static_cast<sal_Int64
>(pBytes[4]) << 24) +
227 (
static_cast<sal_Int64
>(pBytes[5]) << 16) +
228 (
static_cast<sal_Int64
>(pBytes[6]) << 8) +
232float ODataInputStream::readFloat()
234 union {
float f; sal_uInt32
n; }
a;
239double ODataInputStream::readDouble()
241 union {
double d;
struct { sal_uInt32
n1; sal_uInt32
n2; } ad; }
a;
242#if defined OSL_LITENDIAN
243 a.ad.n2 = readLong();
244 a.ad.n1 = readLong();
246 a.ad.n1 = readLong();
247 a.ad.n2 = readLong();
252OUString ODataInputStream::readUTF()
254 sal_uInt16 nShortLen =
static_cast<sal_uInt16
>(readShort());
257 if( (sal_uInt16(0xffff)) == nShortLen )
261 nUTFLen = readLong();
265 nUTFLen =
static_cast<sal_Int32
>(nShortLen);
268 Sequence<sal_Unicode>
aBuffer( nUTFLen );
272 sal_Int32 nStrLen = 0;
273 while( nCount < nUTFLen )
279 case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
288 if( nCount > nUTFLen )
290 throw WrongFormatException( );
293 char2 =
static_cast<sal_uInt8>(readByte());
294 if( (char2 & 0xC0) != 0x80 )
296 throw WrongFormatException( );
299 pStr[nStrLen++] = (
sal_Unicode(c & 0x1F) << 6) | (char2 & 0x3F);
305 if( nCount > nUTFLen )
307 throw WrongFormatException( );
310 char2 =
static_cast<sal_uInt8>(readByte());
311 char3 =
static_cast<sal_uInt8>(readByte());
313 if( ((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80) ) {
314 throw WrongFormatException( );
323 throw WrongFormatException();
327 return OUString( pStr, nStrLen );
332void ODataInputStream::setInputStream(
const Reference< XInputStream > & aStream)
338 Reference < XConnectable > pred(
m_input , UNO_QUERY );
339 setPredecessor( pred );
345Reference< XInputStream > ODataInputStream::getInputStream()
352void ODataInputStream::setSuccessor(
const Reference < XConnectable > &r )
361 m_succ->setPredecessor( Reference< XConnectable > (
362 static_cast< XConnectable *
>(
this) ) );
367Reference < XConnectable > ODataInputStream::getSuccessor()
374void ODataInputStream::setPredecessor(
const Reference < XConnectable > &r )
379 m_pred->setSuccessor( Reference< XConnectable > (
380 static_cast< XConnectable *
>(
this) ) );
384Reference < XConnectable > ODataInputStream::getPredecessor()
390OUString ODataInputStream::getImplementationName()
392 return "com.sun.star.comp.io.stm.DataInputStream";
396sal_Bool ODataInputStream::supportsService(
const OUString& ServiceName)
402Sequence< OUString > ODataInputStream::getSupportedServiceNames()
404 return {
"com.sun.star.io.DataInputStream" };
407extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
409 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
411 return cppu::acquire(
new ODataInputStream());
416class ODataOutputStream :
417 public WeakImplHelper <
431 virtual void SAL_CALL flush()
override;
432 virtual void SAL_CALL closeOutput()
override;
435 virtual void SAL_CALL writeBoolean(
sal_Bool Value)
override;
436 virtual void SAL_CALL writeByte(
sal_Int8 Value)
override;
437 virtual void SAL_CALL writeChar(
sal_Unicode Value)
override;
438 virtual void SAL_CALL writeShort(sal_Int16 Value)
override;
439 virtual void SAL_CALL writeLong(sal_Int32 Value)
override;
440 virtual void SAL_CALL writeHyper(sal_Int64 Value)
override;
441 virtual void SAL_CALL writeFloat(
float Value)
override;
442 virtual void SAL_CALL writeDouble(
double Value)
override;
443 virtual void SAL_CALL writeUTF(
const OUString& Value)
override;
446 virtual void SAL_CALL setOutputStream(
const Reference< XOutputStream > & aStream)
override;
447 virtual Reference < XOutputStream > SAL_CALL
getOutputStream()
override;
450 virtual void SAL_CALL setPredecessor(
const Reference < XConnectable >& aPredecessor)
override;
451 virtual Reference < XConnectable > SAL_CALL getPredecessor()
override;
452 virtual void SAL_CALL setSuccessor(
const Reference < XConnectable >& aSuccessor)
override;
453 virtual Reference < XConnectable > SAL_CALL getSuccessor()
override;
461 Reference < XConnectable >
m_succ;
462 Reference < XConnectable >
m_pred;
473 throw NotConnectedException( );
477void ODataOutputStream::flush()
480 throw NotConnectedException();
485void ODataOutputStream::closeOutput()
488 throw NotConnectedException();
490 setOutputStream( Reference< XOutputStream > () );
491 setPredecessor( Reference < XConnectable >() );
492 setSuccessor( Reference < XConnectable >() );
496void ODataOutputStream::writeBoolean(
sal_Bool Value)
509void ODataOutputStream::writeByte(
sal_Int8 Value)
511 writeBytes( {
Value } );
514void ODataOutputStream::writeChar(
sal_Unicode Value)
521void ODataOutputStream::writeShort(sal_Int16 Value)
527void ODataOutputStream::writeLong(sal_Int32 Value)
529 writeBytes( {
sal_Int8(Value >> 24),
535void ODataOutputStream::writeHyper(sal_Int64 Value)
537 writeBytes( {
sal_Int8(Value >> 56),
548void ODataOutputStream::writeFloat(
float Value)
550 union {
float f; sal_uInt32
n; }
a;
555void ODataOutputStream::writeDouble(
double Value)
557 union {
double d;
struct { sal_uInt32
n1; sal_uInt32
n2; } ad; }
a;
559#if defined OSL_LITENDIAN
560 writeLong(
a.ad.n2 );
561 writeLong(
a.ad.n1 );
563 writeLong(
a.ad.n1 );
564 writeLong(
a.ad.n2 );
568void ODataOutputStream::writeUTF(
const OUString& Value)
570 sal_Int32 nStrLen =
Value.getLength();
572 sal_Int32 nUTFLen = 0;
575 for( i = 0 ;
i < nStrLen ;
i++ )
577 sal_uInt16 c = pStr[
i];
578 if( (c >= 0x0001) && (c <= 0x007F) )
582 else if( c > 0x07FF )
597 if( nUTFLen >= 0xFFFF ) {
598 writeShort( sal_Int16(-1) );
599 writeLong( nUTFLen );
602 writeShort(
static_cast<sal_uInt16
>(nUTFLen) );
604 for( i = 0 ;
i < nStrLen ;
i++ )
606 sal_uInt16 c = pStr[
i];
607 if( (c >= 0x0001) && (c <= 0x007F) )
611 else if( c > 0x07FF )
613 writeByte(
sal_Int8(0xE0 | ((c >> 12) & 0x0F)));
614 writeByte(
sal_Int8(0x80 | ((c >> 6) & 0x3F)));
615 writeByte(
sal_Int8(0x80 | ((c >> 0) & 0x3F)));
619 writeByte(
sal_Int8(0xC0 | ((c >> 6) & 0x1F)));
620 writeByte(
sal_Int8(0x80 | ((c >> 0) & 0x3F)));
626void ODataOutputStream::setOutputStream(
const Reference< XOutputStream > & aStream)
632 Reference < XConnectable > succ(
m_output , UNO_QUERY );
633 setSuccessor( succ );
637Reference< XOutputStream > ODataOutputStream::getOutputStream()
644void ODataOutputStream::setSuccessor(
const Reference < XConnectable > &r )
655 m_succ->setPredecessor( Reference < XConnectable > (
656 static_cast< XConnectable *
>(
this) ));
660Reference < XConnectable > ODataOutputStream::getSuccessor()
667void ODataOutputStream::setPredecessor(
const Reference < XConnectable > &r )
672 m_pred->setSuccessor( Reference< XConnectable > (
673 static_cast< XConnectable *
>(
this) ));
677Reference < XConnectable > ODataOutputStream::getPredecessor()
684OUString ODataOutputStream::getImplementationName()
686 return "com.sun.star.comp.io.stm.DataOutputStream";
690sal_Bool ODataOutputStream::supportsService(
const OUString& ServiceName)
696Sequence< OUString > ODataOutputStream::getSupportedServiceNames()
698 return {
"com.sun.star.io.DataOutputStream" };
701extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
703 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
705 return cppu::acquire(
new ODataOutputStream());
710struct equalObjectContainer_Impl
712 bool operator()(
const Reference< XInterface > & s1,
713 const Reference< XInterface > & s2)
const
720struct hashObjectContainer_Impl
722 size_t operator()(
const Reference< XInterface > & xRef)
const
724 return reinterpret_cast<size_t>(xRef.get());
730typedef std::unordered_map
732 Reference< XInterface >,
734 hashObjectContainer_Impl,
735 equalObjectContainer_Impl
740class OObjectOutputStream:
741 public ImplInheritanceHelper<
743 XObjectOutputStream, XMarkableStream >
746 OObjectOutputStream()
755 { ODataOutputStream::writeBytes(
aData ); }
757 virtual void SAL_CALL flush()
override
758 { ODataOutputStream::flush(); }
760 virtual void SAL_CALL closeOutput()
override
761 { ODataOutputStream::closeOutput(); }
766 { ODataOutputStream::writeBoolean(
Value ); }
768 { ODataOutputStream::writeByte(
Value ); }
770 { ODataOutputStream::writeChar(
Value ); }
771 virtual void SAL_CALL writeShort(sal_Int16
Value)
override
772 { ODataOutputStream::writeShort(
Value ); }
773 virtual void SAL_CALL writeLong(sal_Int32
Value)
override
774 { ODataOutputStream::writeLong(
Value ); }
775 virtual void SAL_CALL writeHyper(sal_Int64
Value)
override
776 { ODataOutputStream::writeHyper(
Value ); }
777 virtual void SAL_CALL writeFloat(
float Value)
override
778 { ODataOutputStream::writeFloat(
Value ); }
779 virtual void SAL_CALL writeDouble(
double Value)
override
780 { ODataOutputStream::writeDouble(
Value ); }
781 virtual void SAL_CALL writeUTF(
const OUString&
Value)
override
782 { ODataOutputStream::writeUTF(
Value );}
785 virtual void SAL_CALL writeObject(
const Reference< XPersistObject > & r )
override;
788 virtual sal_Int32 SAL_CALL createMark()
override;
789 virtual void SAL_CALL deleteMark(sal_Int32
Mark)
override;
790 virtual void SAL_CALL jumpToMark(sal_Int32 nMark)
override;
791 virtual void SAL_CALL jumpToFurthest()
override;
792 virtual sal_Int32 SAL_CALL offsetToMark(sal_Int32 nMark)
override;
800 void connectToMarkable();
810void OObjectOutputStream::writeObject(
const Reference< XPersistObject > & xPObj )
814 bool bWriteObj =
false;
816 sal_uInt32 nInfoLenMark =
m_rMarkable->createMark();
819 OObjectOutputStream::writeShort( 0 );
824 Reference< XInterface > rX( xPObj , UNO_QUERY );
826 ObjectContainer_Impl::const_iterator aIt
832 ODataOutputStream::writeLong(
m_nMaxId );
833 ODataOutputStream::writeUTF( xPObj->getServiceName() );
838 ODataOutputStream::writeLong( (*aIt).second );
839 ODataOutputStream::writeUTF( OUString() );
844 ODataOutputStream::writeLong( 0 );
845 ODataOutputStream::writeUTF( OUString() );
848 sal_uInt32 nObjLenMark =
m_rMarkable->createMark();
849 ODataOutputStream::writeLong( 0 );
851 sal_Int32 nInfoLen =
m_rMarkable->offsetToMark( nInfoLenMark );
854 ODataOutputStream::writeShort(
static_cast<sal_Int16
>(nInfoLen) );
859 xPObj->write( Reference< XObjectOutputStream > (
860 static_cast< XObjectOutputStream *
>(
this) ) );
862 sal_Int32 nObjLen =
m_rMarkable->offsetToMark( nObjLenMark ) -4;
865 ODataOutputStream::writeLong( nObjLen );
874void OObjectOutputStream::connectToMarkable()
880 throw NotConnectedException();
883 Reference< XInterface > rTry(
m_output);
887 throw NotConnectedException();
889 Reference < XMarkableStream > markable( rTry , UNO_QUERY );
895 Reference < XActiveDataSource > source( rTry , UNO_QUERY );
902sal_Int32 OObjectOutputStream::createMark()
909void OObjectOutputStream::deleteMark(sal_Int32 Mark)
913 throw NotConnectedException();
918void OObjectOutputStream::jumpToMark(sal_Int32 nMark)
922 throw NotConnectedException();
928void OObjectOutputStream::jumpToFurthest()
934sal_Int32 OObjectOutputStream::offsetToMark(sal_Int32 nMark)
938 throw NotConnectedException();
944OUString OObjectOutputStream::getImplementationName()
946 return "com.sun.star.comp.io.stm.ObjectOutputStream";
950sal_Bool OObjectOutputStream::supportsService(
const OUString& ServiceName)
956Sequence< OUString > OObjectOutputStream::getSupportedServiceNames()
958 return {
"com.sun.star.io.ObjectOutputStream" };
961extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
963 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
965 return cppu::acquire(
new OObjectOutputStream());
970class OObjectInputStream:
971 public ImplInheritanceHelper<
973 XObjectInputStream, XMarkableStream >
976 explicit OObjectInputStream(
const Reference < XComponentContext > &r)
977 :
m_rSMgr( r->getServiceManager() )
984 virtual sal_Int32 SAL_CALL readBytes(
Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead)
override
985 {
return ODataInputStream::readBytes( aData , nBytesToRead ); }
987 virtual sal_Int32 SAL_CALL readSomeBytes(
Sequence< sal_Int8 >& aData, sal_Int32 nMaxBytesToRead)
override
988 {
return ODataInputStream::readSomeBytes( aData, nMaxBytesToRead ); }
990 virtual void SAL_CALL skipBytes(sal_Int32 nBytesToSkip)
override
991 { ODataInputStream::skipBytes( nBytesToSkip ); }
993 virtual sal_Int32 SAL_CALL available()
override
994 {
return ODataInputStream::available(); }
996 virtual void SAL_CALL closeInput()
override
997 { ODataInputStream::closeInput(); }
1000 virtual sal_Int8 SAL_CALL readBoolean()
override
1001 {
return ODataInputStream::readBoolean(); }
1002 virtual sal_Int8 SAL_CALL readByte()
override
1003 {
return ODataInputStream::readByte(); }
1005 {
return ODataInputStream::readChar(); }
1006 virtual sal_Int16 SAL_CALL readShort()
override
1007 {
return ODataInputStream::readShort(); }
1008 virtual sal_Int32 SAL_CALL readLong()
override
1009 {
return ODataInputStream::readLong(); }
1010 virtual sal_Int64 SAL_CALL readHyper()
override
1011 {
return ODataInputStream::readHyper(); }
1012 virtual float SAL_CALL readFloat()
override
1013 {
return ODataInputStream::readFloat(); }
1014 virtual double SAL_CALL readDouble()
override
1015 {
return ODataInputStream::readDouble(); }
1016 virtual OUString SAL_CALL readUTF()
override
1017 {
return ODataInputStream::readUTF(); }
1020 virtual Reference< XPersistObject > SAL_CALL readObject( )
override;
1023 virtual sal_Int32 SAL_CALL createMark()
override;
1024 virtual void SAL_CALL deleteMark(sal_Int32 Mark)
override;
1025 virtual void SAL_CALL jumpToMark(sal_Int32 nMark)
override;
1026 virtual void SAL_CALL jumpToFurthest()
override;
1027 virtual sal_Int32 SAL_CALL offsetToMark(sal_Int32 nMark)
override;
1035 void connectToMarkable();
1047Reference< XPersistObject > OObjectInputStream::readObject()
1050 connectToMarkable();
1052 Reference< XPersistObject > xLoadedObj;
1057 sal_Int32 nLen =
static_cast<sal_uInt16
>(ODataInputStream::readShort());
1060 throw WrongFormatException();
1064 sal_uInt32
nId = readLong();
1068 OUString
aName = readUTF();
1071 sal_Int32 nObjLen = readLong();
1072 if( 0 == nId && 0 != nObjLen )
1074 throw WrongFormatException();
1078 skipBytes( nLen -
m_rMarkable->offsetToMark( nMark ) );
1080 bool bLoadSuccessful =
true;
1083 if( !
aName.isEmpty() )
1086 Reference< XInterface >
x =
m_rSMgr->createInstanceWithContext( aName,
m_rCxt );
1087 xLoadedObj.set( x, UNO_QUERY );
1088 if( xLoadedObj.is() )
1094 Reference< XPersistObject > xEmpty;
1099 xLoadedObj->read( Reference< XObjectInputStream >(
1100 static_cast< XObjectInputStream *
>(
this) ) );
1105 bLoadSuccessful =
false;
1112 bLoadSuccessful =
false;
1123 skipBytes( nObjLen + nLen -
m_rMarkable->offsetToMark( nMark ) );
1126 if( ! bLoadSuccessful )
1128 throw WrongFormatException();
1134void OObjectInputStream::connectToMarkable()
1140 throw NotConnectedException( );
1144 Reference< XInterface > rTry(
m_input);
1148 throw NotConnectedException( );
1150 Reference< XMarkableStream > markable( rTry , UNO_QUERY );
1156 Reference < XActiveDataSink > sink( rTry , UNO_QUERY );
1162sal_Int32 OObjectInputStream::createMark()
1164 connectToMarkable();
1169void OObjectInputStream::deleteMark(sal_Int32 Mark)
1173 throw NotConnectedException();
1178void OObjectInputStream::jumpToMark(sal_Int32 nMark)
1182 throw NotConnectedException();
1186void OObjectInputStream::jumpToFurthest()
1188 connectToMarkable();
1192sal_Int32 OObjectInputStream::offsetToMark(sal_Int32 nMark)
1196 throw NotConnectedException();
1202OUString OObjectInputStream::getImplementationName()
1204 return "com.sun.star.comp.io.stm.ObjectInputStream";
1208sal_Bool OObjectInputStream::supportsService(
const OUString& ServiceName)
1214Sequence< OUString > OObjectInputStream::getSupportedServiceNames()
1216 return {
"com.sun.star.io.ObjectInputStream" };
1219extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
1221 css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any>
const&)
1223 return cppu::acquire(
new OObjectInputStream(context));
constexpr OUStringLiteral aData
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * io_OObjectInputStream_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * io_ODataInputStream_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
std::unordered_map< Reference< XInterface >, sal_Int32, hashObjectContainer_Impl, equalObjectContainer_Impl > ObjectContainer_Impl
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * io_ODataOutputStream_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * io_OObjectOutputStream_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
bool getOutputStream(ProgramOptions const &options, OString const &extension, std::ostream **ppOutputStream, OString &targetSourceFileName, OString &tmpSourceFileName)
Reference< XConnectable > m_succ
std::vector< Reference< XPersistObject > > m_aPersistVector
Reference< XOutputStream > m_output
Reference< XConnectable > m_pred
Reference< XInputStream > m_input
Reference< XMarkableStream > m_rMarkable
Reference< XMultiComponentFactory > m_rSMgr
ObjectContainer_Impl m_mapObject
Reference< XComponentContext > m_rCxt
std::unique_ptr< char[]> aBuffer