~ubuntu-branches/ubuntu/wily/libwpd/wily-proposed

« back to all changes in this revision

Viewing changes to inc/libwpd-stream/WPXStream.h

  • Committer: Package Import Robot
  • Author(s): Rene Engelhard
  • Date: 2013-05-14 11:01:45 UTC
  • mfrom: (1.5.4)
  • Revision ID: package-import@ubuntu.com-20130514110145-8g97krfs7eoqyuwl
Tags: 0.9.8-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 
2
/* libwpd
 
3
 * Version: MPL 2.0 / LGPLv2.1+
 
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
 * Major Contributor(s):
 
10
 * Copyright (C) 2004-2005 William Lachance (wrlach@gmail.com)
 
11
 *
 
12
 * For minor contributions see the git repository.
 
13
 *
 
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.
 
18
 *
 
19
 * For further information visit http://libwpd.sourceforge.net
 
20
 */
 
21
 
 
22
/* "This product is not manufactured, approved, or supported by
 
23
 * Corel Corporation or Corel Corporation Limited."
 
24
 */
 
25
 
 
26
#ifndef WPXSTREAM_H
 
27
#define WPXSTREAM_H
 
28
 
 
29
enum WPX_SEEK_TYPE
 
30
{
 
31
    WPX_SEEK_CUR,
 
32
    WPX_SEEK_SET,
 
33
    WPX_SEEK_END
 
34
};
 
35
 
 
36
class WPXInputStream
 
37
{
 
38
public:
 
39
        WPXInputStream() {}
 
40
        virtual ~WPXInputStream() {}
 
41
 
 
42
        /**
 
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
 
46
        */
 
47
        virtual bool isOLEStream() = 0;
 
48
        /**
 
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.
 
53
        */
 
54
        virtual WPXInputStream *getDocumentOLEStream(const char *name) = 0;
 
55
 
 
56
        /**
 
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.
 
62
        */
 
63
        virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) = 0;
 
64
        /**
 
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).
 
73
        */
 
74
        virtual int seek(long offset, WPX_SEEK_TYPE seekType) = 0;
 
75
        /**
 
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.
 
78
        */
 
79
        virtual long tell() = 0;
 
80
        /**
 
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.
 
84
        */
 
85
        virtual bool atEOS() = 0;
 
86
};
 
87
#endif
 
88
/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */