GNU Octave  4.0.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
procstream.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1993-2015 John W. Eaton
4 
5 This file is part of Octave.
6 
7 Octave is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if !defined (octave_procstream_h)
24 #define octave_procstream_h 1
25 
26 #include <istream>
27 #include <ostream>
28 #include <string>
29 
30 #include <sys/types.h>
31 
32 #include "oct-procbuf.h"
33 
34 class
36 procstreambase : virtual public std::ios
37 {
38 public:
39 
40  procstreambase (void) : pb () { pb_init (); }
41 
42  procstreambase (const std::string& name, int mode);
43 
44  procstreambase (const char *name, int mode);
45 
46  ~procstreambase (void) { close (); }
47 
48  void open (const std::string& name, int mode)
49  { open (name.c_str (), mode); }
50 
51  void open (const char *name, int mode);
52 
53  int is_open (void) const { return pb.is_open (); }
54 
55  int close (void);
56 
57  pid_t pid (void) const { return pb.pid (); }
58 
59  int file_number (void) const { return pb.file_number (); }
60 
61 private:
62 
64 
65  void pb_init (void) { init (&pb); }
66 
68 
70 };
71 
72 class
74 iprocstream : public std::istream, public procstreambase
75 // iprocstream : public procstreambase, public std::istream
76 {
77 public:
78 
79  iprocstream (void) : std::istream (0), procstreambase () { }
80 
81  iprocstream (const std::string& name, int mode = std::ios::in)
82  : std::istream (0), procstreambase (name, mode) { }
83 
84  iprocstream (const char *name, int mode = std::ios::in)
85  : std::istream (0), procstreambase (name, mode) { }
86 
87  ~iprocstream (void) { }
88 
89  void open (const std::string& name, int mode = std::ios::in)
90  { procstreambase::open (name, mode); }
91 
92  void open (const char *name, int mode = std::ios::in)
93  { procstreambase::open (name, mode); }
94 
95 private:
96 
97  iprocstream (const iprocstream&);
98 
100 };
101 
102 class
104 oprocstream : public std::ostream, public procstreambase
105 // oprocstream : public procstreambase, public std::ostream
106 {
107 public:
108 
109  oprocstream (void) : std::ostream (0), procstreambase () { }
110 
111  oprocstream (const std::string& name, int mode = std::ios::out)
112  : std::ostream (0), procstreambase (name, mode) { }
113 
114  oprocstream (const char *name, int mode = std::ios::out)
115  : std::ostream (0), procstreambase (name, mode) { }
116 
117  ~oprocstream (void) { }
118 
119  void open (const std::string& name, int mode = std::ios::out)
120  { procstreambase::open (name, mode); }
121 
122  void open (const char *name, int mode = std::ios::out)
123  { procstreambase::open (name, mode); }
124 
125 private:
126 
127  oprocstream (const oprocstream&);
128 
130 };
131 
132 class
134 procstream : public std::iostream, public procstreambase
135 // procstream : public procstreambase, public std::iostream
136 {
137 public:
138 
139  procstream (void) : std::iostream (0), procstreambase () { }
140 
141  procstream (const std::string& name, int mode)
142  : std::iostream (0), procstreambase (name, mode) { }
143 
144  procstream (const char *name, int mode)
145  : std::iostream (0), procstreambase (name, mode) { }
146 
147  ~procstream (void) { }
148 
149  void open (const std::string& name, int mode)
150  { procstreambase::open (name, mode); }
151 
152  void open (const char *name, int mode)
153  { procstreambase::open (name, mode); }
154 
155 private:
156 
157  procstream (const procstream&);
158 
160 };
161 
162 #endif
procstream(void)
Definition: procstream.h:139
octave_value & operator=(const octave_value &a)
Definition: ov.h:357
oprocstream(void)
Definition: procstream.h:109
oprocstream(const char *name, int mode=std::ios::out)
Definition: procstream.h:114
STL namespace.
void open(const std::string &name, int mode)
Definition: procstream.h:48
void open(const std::string &name, int mode=std::ios::out)
Definition: procstream.h:119
iprocstream(void)
Definition: procstream.h:79
~procstreambase(void)
Definition: procstream.h:46
void open(const std::string &name, int mode)
Definition: procstream.h:149
int is_open(void) const
Definition: procstream.h:53
~oprocstream(void)
Definition: procstream.h:117
oprocstream(const std::string &name, int mode=std::ios::out)
Definition: procstream.h:111
procstream(const std::string &name, int mode)
Definition: procstream.h:141
~iprocstream(void)
Definition: procstream.h:87
#define OCTINTERP_API
Definition: mexproto.h:66
void open(const std::string &name, int mode=std::ios::in)
Definition: procstream.h:89
~procstream(void)
Definition: procstream.h:147
pid_t pid(void) const
Definition: procstream.h:57
void pb_init(void)
Definition: procstream.h:65
iprocstream(const char *name, int mode=std::ios::in)
Definition: procstream.h:84
procstream(const char *name, int mode)
Definition: procstream.h:144
procstreambase(void)
Definition: procstream.h:40
void open(const char *name, int mode=std::ios::in)
Definition: procstream.h:92
octave_procbuf pb
Definition: procstream.h:63
void open(const char *name, int mode=std::ios::out)
Definition: procstream.h:122
void open(const char *name, int mode)
Definition: procstream.h:152
int file_number(void) const
Definition: procstream.h:59
iprocstream(const std::string &name, int mode=std::ios::in)
Definition: procstream.h:81