diff src/procstream.h @ 1965:01e3ed56c415

[project @ 1996-02-17 02:02:50 by jwe]
author jwe
date Sat, 17 Feb 1996 02:03:11 +0000
parents e62277bf5fe0
children 003570e69c7b
line wrap: on
line diff
--- a/src/procstream.h
+++ b/src/procstream.h
@@ -28,51 +28,109 @@
 #pragma interface
 #endif
 
-#include <fstream.h>
-
-class procbuf;
+#include <iostream.h>
+#include <procbuf.h>
 
 class
-iprocstream : public ifstream
+procstreambase : virtual public ios
 {
 public:
-  iprocstream (void) { pbuf = 0; }
-  iprocstream (const char *command, int mode=ios::in);
+
+  procstreambase (void) { pb_init (); }
+
+  procstreambase (const char *name, int mode);
 
-  ~iprocstream (void);
+  ~procstreambase (void) { close (); }
 
-  void open (const char *command, int mode=ios::in);
+  void open (const char *name, int mode);
 
-  int is_open (void);
+  int is_open (void) const { return pb.is_open (); }
 
   int close (void);
 
 private:
-  procbuf *pbuf;
+
+  procbuf pb;
+
+  void pb_init (void) { init (&pb); }
+
+  procstreambase (const procstreambase&);
+
+  procstreambase& operator = (const procstreambase&);
 };
 
-extern void cleanup_iprocstream (void *);
+class
+iprocstream : public procstreambase, public istream
+{
+public:
+
+  iprocstream (void) : procstreambase () { }
+
+  iprocstream (const char *name, int mode=ios::in)
+    : procstreambase(name, mode) { }
+
+  ~iprocstream (void) { }
+
+  void open (const char *name, int mode=ios::in)
+    {
+      procstreambase::open (name, mode);
+    }
+
+private:
+
+  iprocstream (const iprocstream&);
+
+  iprocstream& operator = (const iprocstream&);
+};
 
 class
-oprocstream : public ofstream
+oprocstream : public procstreambase, public ostream
 {
 public:
-  oprocstream (void) { pbuf = 0; }
-  oprocstream (const char *command, int mode=ios::out);
+ 
+  oprocstream (void) : procstreambase () { }
 
-  ~oprocstream (void);
+  oprocstream (const char *name, int mode=ios::out)
+    : procstreambase(name, mode) { }
 
-  void open (const char *command, int mode=ios::out);
+  ~oprocstream (void) { }
 
-  int is_open (void);
-
-  int close (void);
+  void open (const char *name, int mode=ios::out)
+    {
+      procstreambase::open(name, mode);
+    }
 
 private:
-  procbuf *pbuf;
+
+  oprocstream (const oprocstream&);
+
+  oprocstream& operator = (const oprocstream&);
 };
 
-extern void cleanup_oprocstream (void *);
+class
+procstream : public procstreambase, public iostream
+{
+public:
+
+  procstream (void) : procstreambase () { }
+
+  procstream (const char *name, int mode)
+    : procstreambase(name, mode) { }
+
+
+  ~procstream (void) { }
+
+  void open (const char *name, int mode)
+    {
+      procstreambase::open(name, mode);
+    }
+
+private:
+
+  procstream (const procstream&);
+
+  procstream& operator = (const procstream&);
+};
 
 #endif