redi::pstream_common - Class template for common base class
Contents
Constructor & Destructor Documentation
template<typenameC,typenameT>redi::pstream_common<C,T>::pstream_common[inline],[protected]
Default constructor. Creates an uninitialised stream.
References redi::pstream_common< CharT, Traits >::buf_.
template<typenameC,typenameT>redi::pstream_common<C,T>::pstream_common(conststd::string&cmd,pmodemode)[inline],[protected]
Constructor that initialises the stream by starting a process. Initialises the stream buffer by calling
do_open( command , mode )
Parameterscmd a string containing a shell command.
mode the I/O mode to use when opening the pipe.
Seealsodo_open(conststd::string&,pmode)
References redi::pstream_common< CharT, Traits >::buf_, and redi::pstream_common< CharT, Traits
>::do_open().
template<typenameC,typenameT>redi::pstream_common<C,T>::pstream_common(conststd::string&file,constargv_type&argv,pmodemode)[inline],[protected]
Constructor that initialises the stream by starting a process. Initialises the stream buffer by calling
do_open( file , argv , mode )
Parametersfile a string containing the pathname of a program to execute.
argv a vector of argument strings passed to the new program.
mode the I/O mode to use when opening the pipe.
Seealsodo_open(conststd::string&,constargv_type&,pmode)
References redi::pstream_common< CharT, Traits >::buf_, and redi::pstream_common< CharT, Traits
>::do_open().
template<typenameC,typenameT>redi::pstream_common<C,T>::~pstream_common[inline],[protected],[purevirtual]
Pure virtual destructor. This is a pure virtual function to make pstream_commonabstract.Becauseitisthedestructoritwillbecalledbyderivedclassesandsomustbedefined.Itisalsoprotected,todiscourageuseofthePStreamsclassesthroughpointersorreferencestothebaseclass.Seealso
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!)
Detailed Description
template<typenameCharT,typenameTraits=std::char_traits<CharT>>
class redi::pstream_common< CharT, Traits >" Class template for common base class.
Abstract Base Class providing common functionality for basic_ipstream, basic_opstream and basic_pstream.
pstream_common manages the basic_pstreambuf stream buffer that is used by the derived classes to
initialise an iostream class.
Member Function Documentation
template<typenameC,typenameT>intredi::pstream_common<C,T>::close[inline]
Close the pipe, returning the program's exit status, as pclose(3) does.
Calls rdbuf->close() and sets failbit on error. Returns process's exit status, as pclose(3) does.
template<typenameC,typenameT>conststd::string&redi::pstream_common<C,T>::command[inline]
Return the command used to initialise the stream.
Returns
a string containing the command used to initialise the stream.
template<typenameC,typenameT>voidredi::pstream_common<C,T>::do_open(conststd::string&cmd,pmodemode)[inline],[protected]
Start a process. Calls rdbuf()->open( command , mode ) and sets failbit on error.
Parameterscmd a string containing a shell command.
mode the I/O mode to use when opening the pipe.
Seealsobasic_pstreambuf::open(conststd::string&,pmode)
Referenced by redi::pstream_common< CharT, Traits >::pstream_common().
template<typenameC,typenameT>voidredi::pstream_common<C,T>::do_open(conststd::string&file,constargv_type&argv,pmodemode)[inline],[protected]
Start a process. Calls rdbuf()->open( file, argv, mode ) and sets failbit on error.
Parametersfile a string containing the pathname of a program to execute.
argv a vector of argument strings passed to the new program.
mode the I/O mode to use when opening the pipe.
Seealsobasic_pstreambuf::open(conststd::string&,constargv_type&,pmode)template<typenameC,typenameT>boolredi::pstream_common<C,T>::is_open[inline]
Report whether the stream's buffer has been initialised.
Returnsrdbuf()->is_open().
Seealsobasic_pstreambuf::is_open()template<typenameC,typenameT>pstream_common<C,T>::streambuf_type*redi::pstream_common<C,T>::rdbuf[inline]
Return a pointer to the stream buffer.
Returns
a pointer to the private stream buffer member.
Name
redi::pstream_common - Class template for common base class
Synopsis
#include <pstream.h>
Inherits basic_ios< CharT, std::char_traits< CharT > >, and redi::pstreams.
PublicTypes
typedef int fd_type
Type used for file descriptors.
PublicMemberFunctions
int close ()
bool is_open () const
Report whether the stream's buffer has been initialised.
const std::string & command () const
Return the command used to initialise the stream.
streambuf_type * rdbuf () const
Return a pointer to the stream buffer.
StaticPublicAttributes
static const pmodepstdin = std::ios_base::out
Write to stdin.
static const pmodepstdout = std::ios_base::in
Read from stdout.
static const pmodepstderr = std::ios_base::app
Read from stderr.
static const pmodenewpg = std::ios_base::trunc
Create a new process group for the child process.
ProtectedTypes
typedef basic_pstreambuf< CharT, Traits > streambuf_type
typedef std::basic_ios< CharT, Traits > ios_type
typedef pstreams::pmodepmode
typedef pstreams::argv_typeargv_type
enum { bufsz = 32 }
enum { pbsz = 2 }
ProtectedMemberFunctionspstream_common ()
Default constructor.
pstream_common (const std::string &cmd, pmode mode)
Constructor that initialises the stream by starting a process.
pstream_common (const std::string &file, const argv_type &argv, pmode mode)
Constructor that initialises the stream by starting a process.
virtual ~pstream_common ()=0
Pure virtual destructor.
void do_open (const std::string &cmd, pmode mode)
Start a process.
void do_open (const std::string &file, const argv_type &argv, pmode mode)
Start a process.
ProtectedAttributes
std::string command_
The command used to start the process.
streambuf_typebuf_
The stream buffer.
