annotate libinterp/corefcn/zfstream.h @ 21139:538b57866b90

consistently use "typename" intead of "class" in template declarations * Object.h, QtHandlesUtils.cc, QtHandlesUtils.h, ToolBarButton.cc, ToolBarButton.h, Cell.h, __lin_interpn__.cc, bitfcns.cc, bsxfun.cc, cellfun.cc, data.cc, filter.cc, gcd.cc, graphics.cc, help.cc, kron.cc, lookup.cc, ls-mat5.cc, ls-oct-text.h, lu.cc, max.cc, mgorth.cc, oct-map.cc, oct-map.h, oct-stream.cc, oct-stream.h, octave-link.h, pr-output.cc, profiler.h, schur.cc, sparse-xdiv.cc, sparse-xpow.cc, sqrtm.cc, symtab.h, tril.cc, typecast.cc, variables.cc, xdiv.cc, zfstream.h, __init_fltk__.cc, __magick_read__.cc, chol.cc, qr.cc, ov-base-diag.cc, ov-base-diag.h, ov-base-int.cc, ov-base-int.h, ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc, ov-base-scalar.h, ov-base-sparse.cc, ov-base-sparse.h, ov-base.h, ov-classdef.cc, ov-int-traits.h, ov-java.h, ov-usr-fcn.h, ov.cc, ov.h, op-dms-template.cc, oct-parse.in.yy, parse.h, pt-mat.cc, Array-b.cc, Array.cc, Array.h, CDiagMatrix.h, CMatrix.h, CNDArray.h, DiagArray2.cc, DiagArray2.h, MArray.cc, MArray.h, MDiagArray2.cc, MDiagArray2.h, MSparse.cc, MSparse.h, MatrixType.cc, Sparse.cc, Sparse.h, dDiagMatrix.h, dMatrix.h, dNDArray.h, fCDiagMatrix.h, fCMatrix.h, fCNDArray.h, fDiagMatrix.h, fMatrix.h, fNDArray.h, idx-vector.cc, idx-vector.h, intNDArray.cc, intNDArray.h, DET.h, base-aepbal.h, base-lu.cc, base-lu.h, base-qr.cc, base-qr.h, bsxfun-defs.cc, eigs-base.cc, lo-mappers.h, lo-specfun.cc, lo-specfun.h, oct-convn.cc, oct-fftw.cc, oct-norm.cc, sparse-base-chol.cc, sparse-base-chol.h, sparse-base-lu.cc, sparse-base-lu.h, sparse-dmsolve.cc, mx-inlines.cc, action-container.h, base-list.h, lo-traits.h, lo-utils.h, oct-base64.h, oct-binmap.h, oct-cmplx.h, oct-inttypes.cc, oct-inttypes.h, oct-locbuf.h, oct-refcount.h, oct-sort.cc, oct-sort.h: Use "typename" instead of "class" in template declarations.
author John W. Eaton <jwe@octave.org>
date Sun, 24 Jan 2016 13:50:04 -0500
parents 6eff66fb8a02
children f7d1050b9b53
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
1 /*
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
2
19697
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 17787
diff changeset
3 Copyright (C) 2005-2015 Ludwig Schwardt, Kevin Ruland
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
4
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
5 This file is part of Octave.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
6
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6777
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6777
diff changeset
10 option) any later version.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
11
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
15 for more details.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
16
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6777
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6777
diff changeset
19 <http://www.gnu.org/licenses/>.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
20
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
21 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
22
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
23 /*
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
24
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
25 This file is adapted from the zlib 1.2.2 contrib/iostream3 code,
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
26 written by
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
27
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
28 Ludwig Schwardt <schwardt@sun.ac.za>
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
29 original version by Kevin Ruland <kevin@rodin.wustl.edu>
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
30
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
31 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
32
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
33 #ifndef ZFSTREAM_H
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
34 #define ZFSTREAM_H
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
35
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
36 #ifdef HAVE_ZLIB
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
37
8950
d865363208d6 include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
38 #include <iosfwd>
d865363208d6 include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
39
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
40 #include "zlib.h"
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
41
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
42 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
43 * @brief Gzipped file stream buffer class.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
44 *
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
45 * This class implements basic_filebuf for gzipped files. It doesn't yet
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
46 * support seeking (allowed by zlib but slow/limited), putback and read/write
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
47 * access * (tricky). Otherwise, it attempts to be a drop-in replacement for
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
48 * the standard file streambuf.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
49 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
50 class gzfilebuf : public std::streambuf
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
51 {
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
52 public:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
53 // Default constructor.
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
54 gzfilebuf ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
55
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
56 // Destructor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
57 virtual
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
58 ~gzfilebuf ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
59
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
60 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
61 * @brief Set compression level and strategy on the fly.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
62 * @param comp_level Compression level (see zlib.h for allowed values)
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
63 * @param comp_strategy Compression strategy (see zlib.h for allowed values)
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
64 * @return Z_OK on success, Z_STREAM_ERROR otherwise.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
65 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
66 * Unfortunately, these parameters cannot be modified separately, as the
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
67 * previous zfstream version assumed. Since the strategy is seldom changed,
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
68 * it can default and setcompression(level) then becomes like the old
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
69 * setcompressionlevel(level).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
70 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
71 int
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
72 setcompression (int comp_level,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
73 int comp_strategy = Z_DEFAULT_STRATEGY);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
74
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
75 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
76 * @brief Check if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
77 * @return True if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
78 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
79 bool
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
80 is_open () const { return (file != 0); }
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
81
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
82 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
83 * @brief Open gzipped file.
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 19861
diff changeset
84 * @param name Filename.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
85 * @param mode Open mode flags.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
86 * @return @c this on success, NULL on failure.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
87 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
88 gzfilebuf*
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
89 open (const char* name,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
90 std::ios_base::openmode mode);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
91
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
92 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
93 * @brief Attach to already open gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
94 * @param fd File descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
95 * @param mode Open mode flags.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
96 * @return @c this on success, NULL on failure.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
97 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
98 gzfilebuf*
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
99 attach (int fd,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
100 std::ios_base::openmode mode);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
101
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
102 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
103 * @brief Close gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
104 * @return @c this on success, NULL on failure.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
105 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
106 gzfilebuf*
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
107 close ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
108
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
109 protected:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
110 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
111 * @brief Convert ios open mode int to mode string used by zlib.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
112 * @return True if valid mode flag combination.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
113 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
114 bool
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
115 open_mode (std::ios_base::openmode mode,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
116 char* c_mode) const;
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
117
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
118 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
119 * @brief Number of characters available in stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
120 * @return Number of characters.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
121 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
122 * This indicates number of characters in get area of stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
123 * These characters can be read without accessing the gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
124 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
125 virtual std::streamsize
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
126 showmanyc ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
127
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
128 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
129 * @brief Fill get area from gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
130 * @return First character in get area on success, EOF on error.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
131 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
132 * This actually reads characters from gzipped file to stream
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
133 * buffer. Always buffered.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
134 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
135 virtual int_type
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
136 underflow ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
137
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
138 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
139 * @brief Write put area to gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
140 * @param c Extra character to add to buffer contents.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
141 * @return Non-EOF on success, EOF on error.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
142 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
143 * This actually writes characters in stream buffer to
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
144 * gzipped file. With unbuffered output this is done one
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
145 * character at a time.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
146 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
147 virtual int_type
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
148 overflow (int_type c = traits_type::eof ());
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
149
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
150 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
151 * @brief Installs external stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
152 * @param p Pointer to char buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
153 * @param n Size of external buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
154 * @return @c this on success, NULL on failure.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
155 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
156 * Call setbuf(0,0) to enable unbuffered output.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
157 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
158 virtual std::streambuf*
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
159 setbuf (char_type* p,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
160 std::streamsize n);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
161
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
162 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
163 * @brief Flush stream buffer to file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
164 * @return 0 on success, -1 on error.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
165 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
166 * This calls underflow(EOF) to do the job.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
167 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
168 virtual int
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
169 sync ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
170
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
171 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
172 * @brief Alters the stream positions.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
173 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
174 * Each derived class provides its own appropriate behavior.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
175 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
176 virtual pos_type
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
177 seekoff (off_type off, std::ios_base::seekdir way,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
178 std::ios_base::openmode mode =
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
179 std::ios_base::in|std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
180
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
181 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
182 * @brief Alters the stream positions.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
183 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
184 * Each derived class provides its own appropriate behavior.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
185 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
186 virtual pos_type
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
187 seekpos (pos_type sp, std::ios_base::openmode mode =
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
188 std::ios_base::in|std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
189
6777
4775fc1aa728 [project @ 2007-07-18 16:32:51 by dbateman]
dbateman
parents: 5307
diff changeset
190 virtual int_type
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
191 pbackfail (int_type c = traits_type::eof ());
6777
4775fc1aa728 [project @ 2007-07-18 16:32:51 by dbateman]
dbateman
parents: 5307
diff changeset
192
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
193 //
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
194 // Some future enhancements
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
195 //
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
196 // virtual int_type uflow();
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
197 // virtual int_type pbackfail(int_type c = traits_type::eof());
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
198
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
199 private:
12122
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
200
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
201 // No copying!
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
202
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
203 gzfilebuf (const gzfilebuf&);
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
204
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
205 gzfilebuf& operator = (const gzfilebuf&);
f4689107dd8c Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 11586
diff changeset
206
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
207 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
208 * @brief Allocate internal buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
209 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
210 * This function is safe to call multiple times. It will ensure
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
211 * that a proper internal buffer exists if it is required. If the
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
212 * buffer already exists or is external, the buffer pointers will be
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
213 * reset to their original state.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
214 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
215 void
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
216 enable_buffer ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
217
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
218 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
219 * @brief Destroy internal buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
220 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
221 * This function is safe to call multiple times. It will ensure
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
222 * that the internal buffer is deallocated if it exists. In any
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
223 * case, it will also reset the buffer pointers.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
224 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
225 void
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
226 disable_buffer ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
227
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
228 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
229 * Underlying file pointer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
230 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
231 gzFile file;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
232
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
233 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
234 * Mode in which file was opened.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
235 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
236 std::ios_base::openmode io_mode;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
237
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
238 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
239 * @brief True if this object owns file descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
240 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
241 * This makes the class responsible for closing the file
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
242 * upon destruction.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
243 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
244 bool own_fd;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
245
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
246 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
247 * @brief Stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
248 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
249 * For simplicity this remains allocated on the free store for the
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
250 * entire life span of the gzfilebuf object, unless replaced by setbuf.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
251 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
252 char_type* buffer;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
253
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
254 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
255 * @brief Stream buffer size.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
256 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
257 * Defaults to system default buffer size (typically 8192 bytes).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
258 * Modified by setbuf.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
259 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
260 std::streamsize buffer_size;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
261
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
262 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
263 * @brief True if this object owns stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
264 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
265 * This makes the class responsible for deleting the buffer
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
266 * upon destruction.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
267 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
268 bool own_buffer;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
269 };
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
270
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
271 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
272 * @brief Gzipped file input stream class.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
273 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
274 * This class implements ifstream for gzipped files. Seeking and putback
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
275 * is not supported yet.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
276 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
277 class gzifstream : public std::istream
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
278 {
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
279 public:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
280 // Default constructor
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
281 gzifstream ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
282
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
283 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
284 * @brief Construct stream on gzipped file to be opened.
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 19861
diff changeset
285 * @param name Filename.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
286 * @param mode Open mode flags (forced to contain ios::in).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
287 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
288 explicit
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
289 gzifstream (const char* name,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
290 std::ios_base::openmode mode = std::ios_base::in);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
291
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
292 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
293 * @brief Construct stream on already open gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
294 * @param fd File descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
295 * @param mode Open mode flags (forced to contain ios::in).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
296 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
297 explicit
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
298 gzifstream (int fd,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
299 std::ios_base::openmode mode = std::ios_base::in);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
300
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
301 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
302 * Obtain underlying stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
303 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
304 gzfilebuf*
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
305 rdbuf () const
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
306 { return const_cast<gzfilebuf*>(&sb); }
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
307
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
308 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
309 * @brief Check if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
310 * @return True if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
311 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
312 bool
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
313 is_open () { return sb.is_open (); }
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
314
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
315 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
316 * @brief Open gzipped file.
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 19861
diff changeset
317 * @param name Filename.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
318 * @param mode Open mode flags (forced to contain ios::in).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
319 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
320 * Stream will be in state good() if file opens successfully;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
321 * otherwise in state fail(). This differs from the behavior of
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
322 * ifstream, which never sets the state to good() and therefore
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
323 * won't allow you to reuse the stream for a second file unless
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
324 * you manually clear() the state. The choice is a matter of
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
325 * convenience.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
326 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
327 void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
328 open (const char* name,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
329 std::ios_base::openmode mode = std::ios_base::in);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
330
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
331 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
332 * @brief Attach to already open gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
333 * @param fd File descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
334 * @param mode Open mode flags (forced to contain ios::in).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
335 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
336 * Stream will be in state good() if attach succeeded; otherwise
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
337 * in state fail().
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
338 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
339 void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
340 attach (int fd,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
341 std::ios_base::openmode mode = std::ios_base::in);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
342
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
343 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
344 * @brief Close gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
345 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
346 * Stream will be in state fail() if close failed.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
347 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
348 void
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
349 close ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
350
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
351 private:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
352 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
353 * Underlying stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
354 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
355 gzfilebuf sb;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
356 };
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
357
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
358 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
359 * @brief Gzipped file output stream class.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
360 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
361 * This class implements ofstream for gzipped files. Seeking and putback
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
362 * is not supported yet.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
363 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
364 class gzofstream : public std::ostream
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
365 {
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
366 public:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
367 // Default constructor
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
368 gzofstream ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
369
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
370 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
371 * @brief Construct stream on gzipped file to be opened.
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 19861
diff changeset
372 * @param name Filename.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
373 * @param mode Open mode flags (forced to contain ios::out).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
374 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
375 explicit
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
376 gzofstream (const char* name,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
377 std::ios_base::openmode mode = std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
378
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
379 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
380 * @brief Construct stream on already open gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
381 * @param fd File descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
382 * @param mode Open mode flags (forced to contain ios::out).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
383 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
384 explicit
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
385 gzofstream (int fd,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
386 std::ios_base::openmode mode = std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
387
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
388 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
389 * Obtain underlying stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
390 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
391 gzfilebuf*
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
392 rdbuf () const
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
393 { return const_cast<gzfilebuf*>(&sb); }
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
394
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
395 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
396 * @brief Check if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
397 * @return True if file is open.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
398 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
399 bool
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
400 is_open () { return sb.is_open (); }
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
401
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
402 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
403 * @brief Open gzipped file.
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 19861
diff changeset
404 * @param name Filename.
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
405 * @param mode Open mode flags (forced to contain ios::out).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
406 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
407 * Stream will be in state good() if file opens successfully;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
408 * otherwise in state fail(). This differs from the behavior of
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
409 * ofstream, which never sets the state to good() and therefore
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
410 * won't allow you to reuse the stream for a second file unless
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
411 * you manually clear() the state. The choice is a matter of
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
412 * convenience.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
413 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
414 void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
415 open (const char* name,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
416 std::ios_base::openmode mode = std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
417
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
418 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
419 * @brief Attach to already open gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
420 * @param fd File descriptor.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
421 * @param mode Open mode flags (forced to contain ios::out).
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
422 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
423 * Stream will be in state good() if attach succeeded; otherwise
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
424 * in state fail().
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
425 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
426 void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
427 attach (int fd,
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
428 std::ios_base::openmode mode = std::ios_base::out);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
429
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
430 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
431 * @brief Close gzipped file.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
432 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
433 * Stream will be in state fail() if close failed.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
434 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
435 void
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
436 close ();
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
437
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
438 private:
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
439 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
440 * Underlying stream buffer.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
441 */
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
442 gzfilebuf sb;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
443 };
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
444
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
445 /**
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
446 * @brief Gzipped file output stream manipulator class.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
447 *
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
448 * This class defines a two-argument manipulator for gzofstream. It is used
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
449 * as base for the setcompression(int,int) manipulator.
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
450 */
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 20946
diff changeset
451 template <typename T1, typename T2>
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
452 class gzomanip2
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
453 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
454 public:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
455 // Allows insertor to peek at internals
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
456 template <typename Ta, typename Tb>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
457 friend gzofstream&
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
458 operator<<(gzofstream&,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
459 const gzomanip2<Ta,Tb>&);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
460
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
461 // Constructor
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
462 gzomanip2 (gzofstream& (*f)(gzofstream&, T1, T2),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
463 T1 v1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
464 T2 v2);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
465 private:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
466 // Underlying manipulator function
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
467 gzofstream&
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
468 (*func)(gzofstream&, T1, T2);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
469
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
470 // Arguments for manipulator function
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
471 T1 val1;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
472 T2 val2;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
473 };
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
474
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
475 // Manipulator function thunks through to stream buffer
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
476 inline gzofstream&
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
477 setcompression (gzofstream &gzs, int l, int s = Z_DEFAULT_STRATEGY)
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
478 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
479 (gzs.rdbuf ())->setcompression (l, s);
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
480 return gzs;
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
481 }
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
482
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
483 // Manipulator constructor stores arguments
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 20946
diff changeset
484 template <typename T1, typename T2>
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
485 inline
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
486 gzomanip2<T1,T2>::gzomanip2 (gzofstream &(*f)(gzofstream &, T1, T2),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
487 T1 v1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
488 T2 v2)
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
489 : func(f), val1(v1), val2(v2)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
490 { }
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
491
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
492 // Insertor applies underlying manipulator function to stream
21139
538b57866b90 consistently use "typename" intead of "class" in template declarations
John W. Eaton <jwe@octave.org>
parents: 20946
diff changeset
493 template <typename T1, typename T2>
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
494 inline gzofstream&
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
495 operator<<(gzofstream& s, const gzomanip2<T1,T2>& m)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
496 { return (*m.func)(s, m.val1, m.val2); }
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
497
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
498 // Insert this onto stream to simplify setting of compression level
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
499 inline gzomanip2<int,int>
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
500 setcompression (int l, int s = Z_DEFAULT_STRATEGY)
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
501 { return gzomanip2<int,int>(&setcompression, l, s); }
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
502
20945
9d9270e2f98f eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents: 20713
diff changeset
503 #endif
5269
a90ce2dc8b1e [project @ 2005-04-06 19:20:09 by dbateman]
dbateman
parents:
diff changeset
504
20945
9d9270e2f98f eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents: 20713
diff changeset
505 #endif