annotate src/oct-stdstrm.h @ 4326:1cae4472c624

[project @ 2003-02-15 23:14:47 by jwe]
author jwe
date Sat, 15 Feb 2003 23:14:47 +0000
parents e6f67a1ed814
children c29c382a5b4b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
1 /*
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2800
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
4
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
6
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
10 later version.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
11
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
15 for more details.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
16
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
20
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
21 */
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
22
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_octave_stdiostream_h)
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
24 #define octave_octave_stdiostream_h 1
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
25
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
26 #include "oct-stream.h"
3630
8fbe6931e709 [project @ 2000-03-23 07:42:55 by jwe]
jwe
parents: 3611
diff changeset
27 #include "c-file-ptr-stream.h"
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
28
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
29 class
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
30 octave_base_stdiostream : public octave_base_stream
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
31 {
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
32 public:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
33
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
34 octave_base_stdiostream
3716
08fe5f74c7d4 [project @ 2000-09-07 04:59:03 by jwe]
jwe
parents: 3652
diff changeset
35 (const std::string& n,
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
36 std::ios::openmode arg_md = std::ios::in|std::ios::out,
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
37 oct_mach_info::float_format flt_fmt = oct_mach_info::native)
3716
08fe5f74c7d4 [project @ 2000-09-07 04:59:03 by jwe]
jwe
parents: 3652
diff changeset
38 : octave_base_stream (arg_md, flt_fmt), nm (n) { }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
39
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
40 // Position a stream at OFFSET relative to ORIGIN.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
41
3775
13905c3a24af [project @ 2001-02-06 01:56:59 by jwe]
jwe
parents: 3716
diff changeset
42 int seek (std::streamoff offset, std::ios::seekdir origin);
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
43
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
44 // Return current stream position.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
45
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
46 long tell (void) const;
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
47
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
48 // The name of the file.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
49
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
50 std::string name (void) const { return nm; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
51
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3546
diff changeset
52 virtual c_file_ptr_buf *rdbuf (void) const = 0;
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
53
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
54 virtual bool bad (void) const = 0;
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
55
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
56 virtual void clear (void) = 0;
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
57
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
58 protected:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
59
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
60 std::string nm;
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
61
3716
08fe5f74c7d4 [project @ 2000-09-07 04:59:03 by jwe]
jwe
parents: 3652
diff changeset
62 ~octave_base_stdiostream (void) { }
3340
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
63
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
64 // No copying!
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
65
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
66 octave_base_stdiostream (const octave_base_stdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
67
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
68 octave_base_stdiostream& operator = (const octave_base_stdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
69 };
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
70
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
71 class
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
72 octave_istdiostream : public octave_base_stdiostream
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
73 {
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
74 public:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
75
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
76 octave_istdiostream (const std::string& n, FILE *f = 0,
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
77 std::ios::openmode arg_md = std::ios::in,
4326
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
78 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
79 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
80
3340
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
81 static octave_stream
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
82 create (const std::string& n, FILE *f = 0,
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
83 std::ios::openmode arg_md = std::ios::in,
4326
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
84 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
85 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
86
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
87 // Return non-zero if EOF has been reached on this stream.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
88
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
89 bool eof (void) const { return is ? is->eof () : true; }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
90
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
91 std::istream *input_stream (void) { return is; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
92
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
93 std::ostream *output_stream (void) { return 0; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
94
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
95 // XXX FIXME XXX -- should not have to cast away const here.
3652
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
96 c_file_ptr_buf *rdbuf (void) const
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
97 { return is ? (const_cast<i_c_file_ptr_stream *> (is))->rdbuf () : 0; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
98
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
99 bool bad (void) const { return is ? is->bad () : true; }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
100
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
101 void clear (void)
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
102 {
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
103 if (is)
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
104 is->clear ();
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
105 }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
106
3652
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
107 void do_close (void);
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
108
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
109 protected:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
110
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3546
diff changeset
111 i_c_file_ptr_stream *is;
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
112
3340
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
113 ~octave_istdiostream (void);
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
114
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
115 private:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
116
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
117 // No copying!
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
118
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
119 octave_istdiostream (const octave_istdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
120
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
121 octave_istdiostream& operator = (const octave_istdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
122 };
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
123
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
124 class
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
125 octave_ostdiostream : public octave_base_stdiostream
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
126 {
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
127 public:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
128
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
129 octave_ostdiostream (const std::string& n, FILE *f = 0,
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
130 std::ios::openmode arg_md = std::ios::out,
4326
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
131 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
132 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
133
3340
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
134 static octave_stream
3544
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
135 create (const std::string& n, FILE *f = 0,
71bd2d124119 [project @ 2000-02-02 21:02:31 by jwe]
jwe
parents: 3523
diff changeset
136 std::ios::openmode arg_md = std::ios::out,
4326
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
137 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
138 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
139
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
140 // Return non-zero if EOF has been reached on this stream.
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
141
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
142 bool eof (void) const { return os ? os->eof () : true; }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
143
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
144 std::istream *input_stream (void) { return 0; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
145
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3340
diff changeset
146 std::ostream *output_stream (void) { return os; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
147
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
148 // XXX FIXME XXX -- should not have to cast away const here.
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3546
diff changeset
149 c_file_ptr_buf *rdbuf (void) const
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3546
diff changeset
150 { return os ? (const_cast<o_c_file_ptr_stream *> (os))->rdbuf () : 0; }
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
151
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
152 bool bad (void) const { return os ? os->bad () : true; }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
153
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
154 void clear (void)
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
155 {
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
156 if (os)
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
157 os->clear ();
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
158 }
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
159
3652
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
160 void do_close (void);
25e84fcef38a [project @ 2000-03-31 08:50:48 by jwe]
jwe
parents: 3630
diff changeset
161
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
162 protected:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
163
3611
b1ff6597576f [project @ 2000-03-17 09:44:29 by jwe]
jwe
parents: 3546
diff changeset
164 o_c_file_ptr_stream *os;
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
165
3340
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
166 ~octave_ostdiostream (void);
585a8809fd9b [project @ 1999-11-05 07:02:30 by jwe]
jwe
parents: 2847
diff changeset
167
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
168 private:
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
169
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
170 // No copying!
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
171
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
172 octave_ostdiostream (const octave_ostdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
173
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
174 octave_ostdiostream& operator = (const octave_ostdiostream&);
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
175 };
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
176
4326
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
177 class
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
178 octave_iostdiostream : public octave_base_stdiostream
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
179 {
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
180 public:
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
181
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
182 octave_iostdiostream (const std::string& n, FILE *f = 0,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
183 std::ios::openmode arg_md = std::ios::in,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
184 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
185 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
186
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
187 static octave_stream
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
188 create (const std::string& n, FILE *f = 0,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
189 std::ios::openmode arg_md = std::ios::in|std::ios::out,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
190 oct_mach_info::float_format flt_fmt = oct_mach_info::native,
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
191 c_file_ptr_buf::close_fcn cf = c_file_ptr_buf::fclose);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
192
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
193 // Return non-zero if EOF has been reached on this stream.
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
194
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
195 bool eof (void) const { return s ? s->eof () : true; }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
196
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
197 std::istream *input_stream (void) { return s; }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
198
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
199 std::ostream *output_stream (void) { return s; }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
200
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
201 // XXX FIXME XXX -- should not have to cast away const here.
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
202 c_file_ptr_buf *rdbuf (void) const
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
203 { return s ? (const_cast<io_c_file_ptr_stream *> (s))->rdbuf () : 0; }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
204
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
205 bool bad (void) const { return s ? s->bad () : true; }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
206
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
207 void clear (void)
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
208 {
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
209 if (s)
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
210 s->clear ();
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
211 }
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
212
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
213 void do_close (void);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
214
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
215 protected:
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
216
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
217 io_c_file_ptr_stream *s;
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
218
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
219 ~octave_iostdiostream (void);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
220
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
221 private:
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
222
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
223 // No copying!
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
224
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
225 octave_iostdiostream (const octave_iostdiostream&);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
226
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
227 octave_iostdiostream& operator = (const octave_iostdiostream&);
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
228 };
1cae4472c624 [project @ 2003-02-15 23:14:47 by jwe]
jwe
parents: 3951
diff changeset
229
2081
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
230 #endif
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
231
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
232 /*
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
233 ;;; Local Variables: ***
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
234 ;;; mode: C++ ***
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
235 ;;; End: ***
e9ec222a53e1 [project @ 1996-04-25 03:17:36 by jwe]
jwe
parents:
diff changeset
236 */