.TH "redi::pstream_common< CharT, Traits >" 3 "Sun Dec 13 2020" "PStreams" \" -*- nroff -*- .ad l .nh .SH NAME redi::pstream_common \- Class template for common base class .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits basic_ios< CharT, std::char_traits< CharT > >, and \fBredi::pstreams\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "typedef int \fBfd_type\fP" .br .RI "Type used for file descriptors\&. " .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "int \fBclose\fP ()" .br .ti -1c .RI "bool \fBis_open\fP () const" .br .RI "Report whether the stream's buffer has been initialised\&. " .ti -1c .RI "const std::string & \fBcommand\fP () const" .br .RI "Return the command used to initialise the stream\&. " .ti -1c .RI "\fBstreambuf_type\fP * \fBrdbuf\fP () const" .br .RI "Return a pointer to the stream buffer\&. " .in -1c .SS "Static Public Attributes" .in +1c .ti -1c .RI "static const \fBpmode\fP \fBpstdin\fP = std::ios_base::out" .br .RI "Write to stdin\&. " .ti -1c .RI "static const \fBpmode\fP \fBpstdout\fP = std::ios_base::in" .br .RI "Read from stdout\&. " .ti -1c .RI "static const \fBpmode\fP \fBpstderr\fP = std::ios_base::app" .br .RI "Read from stderr\&. " .ti -1c .RI "static const \fBpmode\fP \fBnewpg\fP = std::ios_base::trunc" .br .RI "Create a new process group for the child process\&. " .in -1c .SS "Protected Types" .in +1c .ti -1c .RI "typedef \fBbasic_pstreambuf\fP< CharT, Traits > \fBstreambuf_type\fP" .br .ti -1c .RI "typedef std::basic_ios< CharT, Traits > \fBios_type\fP" .br .ti -1c .RI "typedef \fBpstreams::pmode\fP \fBpmode\fP" .br .ti -1c .RI "typedef \fBpstreams::argv_type\fP \fBargv_type\fP" .br .ti -1c .RI "enum { \fBbufsz\fP = 32 }" .br .ti -1c .RI "enum { \fBpbsz\fP = 2 }" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "\fBpstream_common\fP ()" .br .RI "Default constructor\&. " .ti -1c .RI "\fBpstream_common\fP (const std::string &cmd, \fBpmode\fP mode)" .br .RI "Constructor that initialises the stream by starting a process\&. " .ti -1c .RI "\fBpstream_common\fP (const std::string &file, const \fBargv_type\fP &argv, \fBpmode\fP mode)" .br .RI "Constructor that initialises the stream by starting a process\&. " .ti -1c .RI "virtual \fB~pstream_common\fP ()=0" .br .RI "Pure virtual destructor\&. " .ti -1c .RI "void \fBdo_open\fP (const std::string &cmd, \fBpmode\fP mode)" .br .RI "Start a process\&. " .ti -1c .RI "void \fBdo_open\fP (const std::string &file, const \fBargv_type\fP &argv, \fBpmode\fP mode)" .br .RI "Start a process\&. " .in -1c .SS "Protected Attributes" .in +1c .ti -1c .RI "std::string \fBcommand_\fP" .br .RI "The command used to start the process\&. " .ti -1c .RI "\fBstreambuf_type\fP \fBbuf_\fP" .br .RI "The stream buffer\&. " .in -1c .SH "Detailed Description" .PP .SS "template> .br class redi::pstream_common< CharT, Traits >" Class template for common base class\&. Abstract Base Class providing common functionality for \fBbasic_ipstream\fP, \fBbasic_opstream\fP and \fBbasic_pstream\fP\&. \fBpstream_common\fP manages the \fBbasic_pstreambuf\fP stream buffer that is used by the derived classes to initialise an iostream class\&. .SH "Constructor & Destructor Documentation" .PP .SS "template \fBredi::pstream_common\fP< C, T >::\fBpstream_common\fP\fC [inline]\fP, \fC [protected]\fP" .PP Default constructor\&. Creates an uninitialised stream\&. .PP References redi::pstream_common< CharT, Traits >::buf_\&. .SS "template \fBredi::pstream_common\fP< C, T >::\fBpstream_common\fP (const std::string & cmd, \fBpmode\fP mode)\fC [inline]\fP, \fC [protected]\fP" .PP Constructor that initialises the stream by starting a process\&. Initialises the stream buffer by calling do_open( \fIcommand\fP , \fImode\fP ) .PP \fBParameters\fP .RS 4 \fIcmd\fP a string containing a shell command\&. .br \fImode\fP the I/O mode to use when opening the pipe\&. .RE .PP \fBSee also\fP .RS 4 \fBdo_open(const std::string&, pmode)\fP .RE .PP .PP References redi::pstream_common< CharT, Traits >::buf_, and redi::pstream_common< CharT, Traits >::do_open()\&. .SS "template \fBredi::pstream_common\fP< C, T >::\fBpstream_common\fP (const std::string & file, const \fBargv_type\fP & argv, \fBpmode\fP mode)\fC [inline]\fP, \fC [protected]\fP" .PP Constructor that initialises the stream by starting a process\&. Initialises the stream buffer by calling do_open( \fIfile\fP , \fIargv\fP , \fImode\fP ) .PP \fBParameters\fP .RS 4 \fIfile\fP a string containing the pathname of a program to execute\&. .br \fIargv\fP a vector of argument strings passed to the new program\&. .br \fImode\fP the I/O mode to use when opening the pipe\&. .RE .PP \fBSee also\fP .RS 4 \fBdo_open(const std::string&, const argv_type&, pmode)\fP .RE .PP .PP References redi::pstream_common< CharT, Traits >::buf_, and redi::pstream_common< CharT, Traits >::do_open()\&. .SS "template \fBredi::pstream_common\fP< C, T >::~\fBpstream_common\fP\fC [inline]\fP, \fC [protected]\fP, \fC [pure virtual]\fP" .PP Pure virtual destructor\&. This is a pure virtual function to make \fC\fBpstream_common\fP\fP abstract\&. Because it is the destructor it will be called by derived classes and so must be defined\&. It is also protected, to discourage use of the PStreams classes through pointers or references to the base class\&. .PP \fBSee also\fP .RS 4 If defining a pure virtual seems odd you should read http://www.gotw.ca/gotw/031.htm (and the rest of the site as well!) .RE .PP .SH "Member Function Documentation" .PP .SS "template int \fBredi::pstream_common\fP< C, T >::close\fC [inline]\fP" Close the pipe, returning the program's exit status, as pclose(3) does\&. .PP Calls rdbuf->\fBclose()\fP and sets \fCfailbit\fP on error\&. Returns process's exit status, as pclose(3) does\&. .SS "template const std::string & \fBredi::pstream_common\fP< C, T >::command\fC [inline]\fP" .PP Return the command used to initialise the stream\&. .PP \fBReturns\fP .RS 4 a string containing the command used to initialise the stream\&. .RE .PP .SS "template void \fBredi::pstream_common\fP< C, T >::do_open (const std::string & cmd, \fBpmode\fP mode)\fC [inline]\fP, \fC [protected]\fP" .PP Start a process\&. Calls \fBrdbuf()\fP->open( \fIcommand\fP , \fImode\fP ) and sets \fCfailbit\fP on error\&. .PP \fBParameters\fP .RS 4 \fIcmd\fP a string containing a shell command\&. .br \fImode\fP the I/O mode to use when opening the pipe\&. .RE .PP \fBSee also\fP .RS 4 \fBbasic_pstreambuf::open(const std::string&, pmode)\fP .RE .PP .PP Referenced by redi::pstream_common< CharT, Traits >::pstream_common()\&. .SS "template void \fBredi::pstream_common\fP< C, T >::do_open (const std::string & file, const \fBargv_type\fP & argv, \fBpmode\fP mode)\fC [inline]\fP, \fC [protected]\fP" .PP Start a process\&. Calls \fBrdbuf()\fP->open( \fIfile\fP, \fIargv\fP, \fImode\fP ) and sets \fCfailbit\fP on error\&. .PP \fBParameters\fP .RS 4 \fIfile\fP a string containing the pathname of a program to execute\&. .br \fIargv\fP a vector of argument strings passed to the new program\&. .br \fImode\fP the I/O mode to use when opening the pipe\&. .RE .PP \fBSee also\fP .RS 4 \fBbasic_pstreambuf::open(const std::string&, const argv_type&, pmode)\fP .RE .PP .SS "template bool \fBredi::pstream_common\fP< C, T >::is_open\fC [inline]\fP" .PP Report whether the stream's buffer has been initialised\&. .PP \fBReturns\fP .RS 4 \fBrdbuf()\fP->\fBis_open()\fP\&. .RE .PP \fBSee also\fP .RS 4 \fBbasic_pstreambuf::is_open()\fP .RE .PP .SS "template \fBpstream_common\fP< C, T >::\fBstreambuf_type\fP * \fBredi::pstream_common\fP< C, T >::rdbuf\fC [inline]\fP" .PP Return a pointer to the stream buffer\&. .PP \fBReturns\fP .RS 4 a pointer to the private stream buffer member\&. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for PStreams from the source code\&.