24#include <com/sun/star/io/XInputStream.hpp>
25#include <com/sun/star/io/XOutputStream.hpp>
38 :
public ::cppu::WeakImplHelper< io::XInputStream >
40 std::vector<sal_Int8>
_seq;
44 explicit BSeqInputStream( std::vector<sal_Int8>&& rSeq )
50 virtual sal_Int32 SAL_CALL readBytes(
52 virtual sal_Int32 SAL_CALL readSomeBytes(
54 virtual void SAL_CALL skipBytes(
55 sal_Int32 nBytesToSkip )
override;
56 virtual sal_Int32 SAL_CALL available()
override;
57 virtual void SAL_CALL closeInput()
override;
62sal_Int32 BSeqInputStream::readBytes(
65 nBytesToRead = ((nBytesToRead >
static_cast<sal_Int32
>(
_seq.size()) -
_nPos)
69 if (rData.getLength() != nBytesToRead)
70 rData.realloc( nBytesToRead );
71 if (nBytesToRead != 0) {
72 memcpy(rData.getArray(), &
_seq[
_nPos], nBytesToRead);
74 _nPos += nBytesToRead;
78sal_Int32 BSeqInputStream::readSomeBytes(
81 return readBytes( rData, nMaxBytesToRead );
84void BSeqInputStream::skipBytes(
89sal_Int32 BSeqInputStream::available()
94void BSeqInputStream::closeInput()
100class BSeqOutputStream
101 :
public ::cppu::WeakImplHelper< io::XOutputStream >
103 std::vector<sal_Int8> *
_seq;
106 explicit BSeqOutputStream( std::vector<sal_Int8> * seq )
111 virtual void SAL_CALL writeBytes(
113 virtual void SAL_CALL flush()
override;
114 virtual void SAL_CALL closeOutput()
override;
122 _seq->resize( nPos + rData.getLength() );
123 if (rData.getLength() != 0) {
124 memcpy(
_seq->data() + nPos,
125 rData.getConstArray(),
129void BSeqOutputStream::flush()
133void BSeqOutputStream::closeOutput()
139 return new BSeqInputStream( std::move(rInData) );
144 std::vector<sal_Int8> rInData(len);
146 memcpy( rInData.data(),
pData, len);
148 return new BSeqInputStream( std::move(rInData) );
153 return new BSeqOutputStream( pOutData );
std::unique_ptr< sal_Int32[]> pData
Reference< io::XInputStream > createInputStream(std::vector< sal_Int8 > &&rInData)
Reference< io::XOutputStream > createOutputStream(std::vector< sal_Int8 > *pOutData)
std::vector< sal_Int8 > _seq