1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
3
* Version: MPL 2.0 / LGPLv2.1+
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
* Major Contributor(s):
10
* Copyright (C) 2004-2005 William Lachance (wrlach@gmail.com)
12
* For minor contributions see the git repository.
14
* Alternatively, the contents of this file may be used under the terms
15
* of the GNU Lesser General Public License Version 2.1 or later
16
* (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
17
* applicable instead of those above.
19
* For further information visit http://libwpd.sourceforge.net
22
/* "This product is not manufactured, approved, or supported by
23
* Corel Corporation or Corel Corporation Limited."
40
virtual ~WPXInputStream() {}
43
Analyses the content of the input stream to see whether it is an OLE2 storage.
44
\return A boolean value that should be true if the input stream is an OLE2 storage
45
and false if it is not the case
47
virtual bool isOLEStream() = 0;
49
Extracts a \c PerfectOffice_MAIN stream from an OLE2 storage.
50
\return Should be a pointer to WPXInputStream constructed from the \c PerfectOffice_MAIN stream if it exists.
51
\return Should be 0, if the \c PerfectOffice_MAIN stream does not exist inside the OLE2 storage
52
or if the input stream is not an OLE2 storage.
54
virtual WPXInputStream *getDocumentOLEStream(const char *name) = 0;
57
Tries to read a given number of bytes starting from the current position inside the input stream.
58
\param numBytes Number of bytes desired to be read.
59
\param numBytesRead Number of bytes that were possible to be read.
60
\return Should be a pointer to an array of numBytesRead bytes (unsigned char[numBytesRead]).
61
\return Optionally it could be 0 if the desired number of bytes could not be read.
63
virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) = 0;
65
Moves to the next location inside the input stream.
66
\param offset The offset of the location inside the input stream to move to.
67
It is relative either to the current position or to the beginning of the input stream
68
depending on the value of the \c seekType parameter.
69
\param seekType Determines whether the \c offset is relative to the
70
beginning of the input stream (\c WPX_SEEK_SET) or to the current position (\c WPX_SEEK_CUR).
71
\return An integer value that should be 0 (zero) if the seek was successful and any other value
72
if it failed (i.e. the requested \c offset is beyond the end of the input stream or before its beginning).
74
virtual int seek(long offset, WPX_SEEK_TYPE seekType) = 0;
76
Returns the actual position inside the input stream.
77
\return A long integer value that should correspond to the position of the next location to be read in the input stream.
79
virtual long tell() = 0;
81
Determines whether the current position is at the end of the stream.
82
\return A boolean value that should be true if the next location to be read in the input stream
83
is beyond its end. In all other cases, it should be false.
85
virtual bool atEOS() = 0;
88
/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */