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