Line data Source code
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 :
10 : #ifndef WPXSVSTREAM_H
11 : #define WPXSVSTREAM_H
12 :
13 : #include <sot/storage.hxx>
14 : #include <com/sun/star/io/XInputStream.hpp>
15 : #include <com/sun/star/io/XSeekable.hpp>
16 :
17 : #include <libwpd-stream/libwpd-stream.h>
18 :
19 : typedef struct
20 0 : {
21 : SotStorageRef ref;
22 0 : } SotStorageRefWrapper;
23 :
24 : typedef struct
25 0 : {
26 : SotStorageStreamRef ref;
27 0 : } SotStorageStreamRefWrapper;
28 :
29 : class WPXSvInputStream : public WPXInputStream
30 : {
31 : public:
32 : WPXSvInputStream( ::com::sun::star::uno::Reference<
33 : ::com::sun::star::io::XInputStream > xStream );
34 : virtual ~WPXSvInputStream();
35 :
36 : virtual bool isOLEStream();
37 : virtual WPXInputStream * getDocumentOLEStream(const char *name);
38 :
39 : virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead);
40 : virtual int seek(long offset, WPX_SEEK_TYPE seekType);
41 : virtual long tell();
42 : virtual bool atEOS();
43 :
44 : private:
45 : std::vector< SotStorageRefWrapper > mxChildrenStorages;
46 : std::vector< SotStorageStreamRefWrapper > mxChildrenStreams;
47 : ::com::sun::star::uno::Reference<
48 : ::com::sun::star::io::XInputStream > mxStream;
49 : ::com::sun::star::uno::Reference<
50 : ::com::sun::star::io::XSeekable > mxSeekable;
51 : ::com::sun::star::uno::Sequence< sal_Int8 > maData;
52 : sal_Int64 mnLength;
53 : };
54 :
55 : #endif
56 :
57 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|