Panda3D
zStream.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file zStream.h
10  * @author drose
11  * @date 2002-08-05
12  */
13 
14 #ifndef ZSTREAM_H
15 #define ZSTREAM_H
16 
17 #include "pandabase.h"
18 
19 // This module is not compiled if zlib is not available.
20 #ifdef HAVE_ZLIB
21 
22 #include "zStreamBuf.h"
23 
24 /**
25  * An input stream object that uses zlib to decompress (inflate) the input
26  * from another source stream on-the-fly.
27  *
28  * Attach an IDecompressStream to an existing istream that provides compressed
29  * data, and read the corresponding uncompressed data from the
30  * IDecompressStream.
31  *
32  * Seeking is not supported.
33  */
34 class EXPCL_PANDA_EXPRESS IDecompressStream : public std::istream {
35 PUBLISHED:
36  INLINE IDecompressStream();
37  INLINE explicit IDecompressStream(std::istream *source, bool owns_source);
38 
39 #if _MSC_VER >= 1800
40  INLINE IDecompressStream(const IDecompressStream &copy) = delete;
41 #endif
42 
43  INLINE IDecompressStream &open(std::istream *source, bool owns_source);
44  INLINE IDecompressStream &close();
45 
46 private:
47  ZStreamBuf _buf;
48 };
49 
50 /**
51  * An input stream object that uses zlib to compress (deflate) data to another
52  * destination stream on-the-fly.
53  *
54  * Attach an OCompressStream to an existing ostream that will accept
55  * compressed data, and write your uncompressed source data to the
56  * OCompressStream.
57  *
58  * Seeking is not supported.
59  */
60 class EXPCL_PANDA_EXPRESS OCompressStream : public std::ostream {
61 PUBLISHED:
62  INLINE OCompressStream();
63  INLINE explicit OCompressStream(std::ostream *dest, bool owns_dest,
64  int compression_level = 6);
65 
66 #if _MSC_VER >= 1800
67  INLINE OCompressStream(const OCompressStream &copy) = delete;
68 #endif
69 
70  INLINE OCompressStream &open(std::ostream *dest, bool owns_dest,
71  int compression_level = 6);
72  INLINE OCompressStream &close();
73 
74 private:
75  ZStreamBuf _buf;
76 };
77 
78 #include "zStream.I"
79 
80 #endif // HAVE_ZLIB
81 
82 
83 #endif
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.