Mercurial > octave
annotate libinterp/corefcn/procstream.h @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | 3988112c7116 |
children | 2aa5bcaba504 e88a07dec498 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
29991
diff
changeset
|
3 // Copyright (C) 1993-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
1 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
20088
diff
changeset
|
26 #if ! defined (octave_procstream_h) |
383 | 27 #define octave_procstream_h 1 |
1 | 28 |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
20791
diff
changeset
|
29 #include "octave-config.h" |
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
20791
diff
changeset
|
30 |
25438
cb1606f78f6b
prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
31 #include <iosfwd> |
4051 | 32 #include <string> |
2095 | 33 |
34 #include <sys/types.h> | |
35 | |
36 #include "oct-procbuf.h" | |
1 | 37 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
38 OCTAVE_NAMESPACE_BEGIN |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
39 |
1 | 40 class |
6109 | 41 OCTINTERP_API |
3544 | 42 procstreambase : virtual public std::ios |
1 | 43 { |
1380 | 44 public: |
1965 | 45 |
27175
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
46 procstreambase (void) : m_pb () { pb_init (); } |
1965 | 47 |
4051 | 48 procstreambase (const std::string& name, int mode); |
49 | |
1965 | 50 procstreambase (const char *name, int mode); |
1380 | 51 |
1965 | 52 ~procstreambase (void) { close (); } |
1 | 53 |
4051 | 54 void open (const std::string& name, int mode) |
27172 | 55 { |
56 open (name.c_str (), mode); | |
57 } | |
4051 | 58 |
1965 | 59 void open (const char *name, int mode); |
1380 | 60 |
27172 | 61 int is_open (void) const { return m_pb.is_open (); } |
1 | 62 |
483 | 63 int close (void); |
1380 | 64 |
27172 | 65 pid_t pid (void) const { return m_pb.pid (); } |
6316 | 66 |
27172 | 67 int file_number (void) const { return m_pb.file_number (); } |
2095 | 68 |
1380 | 69 private: |
1965 | 70 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
71 procbuf m_pb; |
1965 | 72 |
27175
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
73 void pb_init (void) |
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
74 { |
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
75 // Explicit initialization of the std::ios object is needed. |
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
76 // FIXME: is there a better way to organize these classes? |
27176
0112951951a9
missing edit for previous change
John W. Eaton <jwe@octave.org>
parents:
27175
diff
changeset
|
77 init (&m_pb); |
27175
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
78 } |
613a31410ad0
backout changeset 196dfb42f3e9
John W. Eaton <jwe@octave.org>
parents:
27172
diff
changeset
|
79 |
1965 | 80 procstreambase (const procstreambase&); |
81 | |
82 procstreambase& operator = (const procstreambase&); | |
1 | 83 }; |
84 | |
1965 | 85 class |
6109 | 86 OCTINTERP_API |
3775 | 87 iprocstream : public std::istream, public procstreambase |
1965 | 88 { |
89 public: | |
90 | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
91 iprocstream (void) : std::istream (nullptr), procstreambase () { } |
1965 | 92 |
4051 | 93 iprocstream (const std::string& name, int mode = std::ios::in) |
27172 | 94 : std::istream (nullptr), procstreambase (name, mode) |
95 { } | |
4051 | 96 |
3544 | 97 iprocstream (const char *name, int mode = std::ios::in) |
27172 | 98 : std::istream (nullptr), procstreambase (name, mode) |
99 { } | |
1965 | 100 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
101 ~iprocstream (void) = default; |
1965 | 102 |
4051 | 103 void open (const std::string& name, int mode = std::ios::in) |
27172 | 104 { |
105 procstreambase::open (name, mode); | |
106 } | |
4051 | 107 |
3544 | 108 void open (const char *name, int mode = std::ios::in) |
27172 | 109 { |
110 procstreambase::open (name, mode); | |
111 } | |
1965 | 112 |
113 private: | |
114 | |
115 iprocstream (const iprocstream&); | |
116 | |
117 iprocstream& operator = (const iprocstream&); | |
118 }; | |
1448 | 119 |
1 | 120 class |
6109 | 121 OCTINTERP_API |
3775 | 122 oprocstream : public std::ostream, public procstreambase |
1 | 123 { |
1380 | 124 public: |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11584
diff
changeset
|
125 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
126 oprocstream (void) : std::ostream (nullptr), procstreambase () { } |
1 | 127 |
4051 | 128 oprocstream (const std::string& name, int mode = std::ios::out) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
129 : std::ostream (nullptr), procstreambase (name, mode) { } |
4051 | 130 |
3544 | 131 oprocstream (const char *name, int mode = std::ios::out) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
132 : std::ostream (nullptr), procstreambase (name, mode) { } |
1 | 133 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
134 ~oprocstream (void) = default; |
1380 | 135 |
4051 | 136 void open (const std::string& name, int mode = std::ios::out) |
27172 | 137 { |
138 procstreambase::open (name, mode); | |
139 } | |
4051 | 140 |
3544 | 141 void open (const char *name, int mode = std::ios::out) |
27172 | 142 { |
143 procstreambase::open (name, mode); | |
144 } | |
1380 | 145 |
146 private: | |
1965 | 147 |
148 oprocstream (const oprocstream&); | |
149 | |
150 oprocstream& operator = (const oprocstream&); | |
1 | 151 }; |
152 | |
1965 | 153 class |
6109 | 154 OCTINTERP_API |
3775 | 155 procstream : public std::iostream, public procstreambase |
1965 | 156 { |
157 public: | |
158 | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
159 procstream (void) : std::iostream (nullptr), procstreambase () { } |
1965 | 160 |
4051 | 161 procstream (const std::string& name, int mode) |
27172 | 162 : std::iostream (nullptr), procstreambase (name, mode) |
163 { } | |
4051 | 164 |
1965 | 165 procstream (const char *name, int mode) |
27172 | 166 : std::iostream (nullptr), procstreambase (name, mode) |
167 { } | |
1965 | 168 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
169 ~procstream (void) = default; |
1965 | 170 |
4051 | 171 void open (const std::string& name, int mode) |
27172 | 172 { |
173 procstreambase::open (name, mode); | |
174 } | |
4051 | 175 |
1965 | 176 void open (const char *name, int mode) |
27172 | 177 { |
178 procstreambase::open (name, mode); | |
179 } | |
1965 | 180 |
181 private: | |
182 | |
183 procstream (const procstream&); | |
184 | |
185 procstream& operator = (const procstream&); | |
186 }; | |
1448 | 187 |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
188 OCTAVE_NAMESPACE_END |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
189 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
190 #if defined (OCTAVE_PROVIDE_DEPRECATED_SYMBOLS) |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
191 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
192 OCTAVE_DEPRECATED (7, "use 'octave::procstreambase' instead") |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
193 typedef octave::procstreambase procstreambase; |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
194 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
195 OCTAVE_DEPRECATED (7, "use 'octave::iprocstream' instead") |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
196 typedef octave::iprocstream iprocstream; |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
197 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
198 OCTAVE_DEPRECATED (7, "use 'octave::oprocstream' instead") |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
199 typedef octave::oprocstream oprocstream; |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
200 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
201 OCTAVE_DEPRECATED (7, "use 'octave::procstream' instead") |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
202 typedef octave::procstream procstream; |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
203 |
1 | 204 #endif |
29991
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
205 |
3988112c7116
move i/o stream classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
206 #endif |