redi::basic_opstream< CharT, Traits > Class Template Reference

Class template for Output PStreams. More...

`#include <pstream.h>`

Inheritance diagram for redi::basic_opstream< CharT, Traits >:

## Public Types

typedef pbase_type::pmode | pmode
| Type used to specify how to connect to the process.
typedef pbase_type::argv_type | argv_type
| Type used to hold the arguments for a command.
typedef int | fd_type
| Type used for file descriptors.
typedef int | fd_type
| Type used for file descriptors.

## Public Member Functions

| basic_opstream ()
| Default constructor, creates an uninitialised stream.
| basic_opstream (const std::string &cmd, pmode mode=pstdin)
| Constructor that initialises the stream by starting a process. More...
| basic_opstream (const std::string &file, const argv_type &argv, pmode mode=pstdin)
| Constructor that initialises the stream by starting a process. More...
| basic_opstream (const argv_type &argv, pmode mode=pstdin)
| Constructor that initialises the stream by starting a process. More...
| ~basic_opstream ()
| Destructor. More...
void | open (const std::string &cmd, pmode mode=pstdin)
| Start a process. More...
void | open (const std::string &file, const argv_type &argv, pmode mode=pstdin)
| Start a process. More...
void | close ()
| Close the pipe. More...
bool | is_open () const
| Report whether the stream's buffer has been initialised. More...
const std::string & | command () const
| Return the command used to initialise the stream. More...
streambuf_type * | rdbuf () const
| Return a pointer to the stream buffer. More...

## Static Public Attributes

static const pmode | pstdin = std::ios_base::out
| Write to stdin.
static const pmode | pstdout = std::ios_base::in
| Read from stdout.
static const pmode | pstderr = std::ios_base::app
| Read from stderr.
static const pmode | newpg = std::ios_base::trunc
| Create a new process group for the child process.
static const pmode | pstdin = std::ios_base::out
| Write to stdin.
static const pmode | pstdout = std::ios_base::in
| Read from stdout.
static const pmode | pstderr = std::ios_base::app
| Read from stderr.
static const pmode | newpg = std::ios_base::trunc
| Create a new process group for the child process.

## Protected Types

typedef basic_pstreambuf< CharT, Traits > | streambuf_type
enum | { bufsz = 32 }
enum | { pbsz = 2 }
enum | { bufsz = 32 }
enum | { pbsz = 2 }

## Protected Member Functions

void | do_open (const std::string &cmd, pmode mode)
| Start a process. More...
void | do_open (const std::string &file, const argv_type &argv, pmode mode)
| Start a process. More...

## Protected Attributes

std::string | command_
| The command used to start the process.
streambuf_type | buf_
| The stream buffer.

## Related Functions

(Note that these are not member functions.)
template<typename C , typename T >
std::basic_ostream< C, T > & | peof (std::basic_ostream< C, T > &s)
| Manipulator to close the pipe connected to the process' stdin. More...

## Detailed Description

### template<typename CharT, typename Traits = std::char_traits<CharT>>
class redi::basic_opstream< CharT, Traits >

Class template for Output PStreams.

Writing to an open opstream writes to the standard input of the command; the command's standard output is the same as that of the process that created the pstream object, unless altered by the command itself.

## Constructor & Destructor Documentation

## basic_opstream() [1/3]

template<typename CharT , typename Traits = std::char_traits<CharT>>

redi::basic_opstream< CharT, Traits >::basic_opstream | ( | const std::string & | cmd,
|  | pmode | mode = `pstdin`
| ) |  |

inline explicit

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling do_open() with the supplied arguments.

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, pmode)

## basic_opstream() [2/3]

template<typename CharT , typename Traits = std::char_traits<CharT>>

redi::basic_opstream< CharT, Traits >::basic_opstream | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode = `pstdin`
| ) |  |

inline

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling do_open() with the supplied arguments.

Parameters

  file | 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.

See also
  do_open(const std::string&, const argv_type&, pmode)

## basic_opstream() [3/3]

template<typename CharT , typename Traits = std::char_traits<CharT>>

redi::basic_opstream< CharT, Traits >::basic_opstream | ( | const argv_type & | argv,
|  | pmode | mode = `pstdin`
| ) |  |

inline explicit

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling `do_open`(argv[0],argv,mode|pstdin)

Parameters

  argv | a vector of argument strings passed to the new program.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, const argv_type&, pmode)

References redi::pstreams::pstdin.

## ~basic_opstream()

template<typename CharT , typename Traits = std::char_traits<CharT>>

redi::basic_opstream< CharT, Traits >::~basic_opstream | ( |  | ) |

inline

Destructor.

Closes the stream and waits for the child to exit.

## Member Function Documentation

## close()

template<typename C , typename T >

void redi::pstream_common< C, T >::close | ( |  | ) |

inline inherited

Close the pipe.

Calls rdbuf->close() and sets `failbit` on error.

References redi::pstream_common< CharT, Traits >::buf_, and redi::basic_pstreambuf< CharT, Traits >::close().

## command()

template<typename C , typename T >

const std::string & redi::pstream_common< C, T >::command | ( |  | ) | const

inline inherited

Return the command used to initialise the stream.

Returns
  a string containing the command used to initialise the stream.

References redi::pstream_common< CharT, Traits >::command_.

## do_open() [1/2]

template<typename C , typename T >

void redi::pstream_common< C, T >::do_open | ( | const std::string & | cmd,
|  | pmode | mode
| ) |  |

inline protected inherited

Start a process.

Calls rdbuf()->open( command , mode ) and sets `failbit` on error.

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  basic_pstreambuf::open(const std::string&, pmode)

References redi::pstream_common< CharT, Traits >::buf_, redi::pstream_common< CharT, Traits >::command_, and redi::basic_pstreambuf< CharT, Traits >::open().

Referenced by redi::pstream_common< CharT, Traits >::pstream_common().

## do_open() [2/2]

template<typename C , typename T >

void redi::pstream_common< C, T >::do_open | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode
| ) |  |

inline protected inherited

Start a process.

Calls rdbuf()->open( file, argv, mode ) and sets `failbit` on error.

Parameters

  file | 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.

See also
  basic_pstreambuf::open(const std::string&, const argv_type&, pmode)

References redi::pstream_common< CharT, Traits >::buf_, redi::pstream_common< CharT, Traits >::command_, and redi::basic_pstreambuf< CharT, Traits >::open().

## is_open()

template<typename C , typename T >

bool redi::pstream_common< C, T >::is_open | ( |  | ) | const

inline inherited

Report whether the stream's buffer has been initialised.

Returns
  rdbuf()->is_open().

See also
  basic_pstreambuf::is_open()

References redi::pstream_common< CharT, Traits >::buf_, and redi::basic_pstreambuf< CharT, Traits >::is_open().

## open() [1/2]

template<typename CharT , typename Traits = std::char_traits<CharT>>

void redi::basic_opstream< CharT, Traits >::open | ( | const std::string & | cmd,
|  | pmode | mode = `pstdin`
| ) |  |

inline

Start a process.

Calls do_open( cmd , mode|pstdin ).

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, pmode)

References redi::pstreams::pstdin.

## open() [2/2]

template<typename CharT , typename Traits = std::char_traits<CharT>>

void redi::basic_opstream< CharT, Traits >::open | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode = `pstdin`
| ) |  |

inline

Start a process.

Calls do_open( file , argv , mode|pstdin ).

Parameters

  file | 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.

See also
  do_open(const std::string&, const argv_type&, pmode)

References redi::pstreams::pstdin.

## rdbuf()

template<typename C , typename T >

pstream_common< C, T >::streambuf_type * redi::pstream_common< C, T >::rdbuf | ( |  | ) | const

inline inherited

Return a pointer to the stream buffer.

Returns
  a pointer to the private stream buffer member.

References redi::pstream_common< CharT, Traits >::buf_, redi::pstreams::pstderr, redi::pstreams::pstdin, and redi::pstreams::pstdout.

## Friends And Related Function Documentation

## peof()

template<typename C , typename T >

std::basic_ostream< C, T > & peof | ( | std::basic_ostream< C, T > & | s | ) |

related

Manipulator to close the pipe connected to the process' stdin.

When inserted into an output pstream the manipulator calls basic_pstreambuf<C,T>::peof() to close the output pipe, causing the child process to receive the end-of-file indicator on subsequent reads from its `stdin` stream.

Parameters

  s | An output PStream class.

Returns
  The stream object the manipulator was invoked on.

See also
  basic_pstreambuf<C,T>::peof() basic_pstream basic_rpstream

References redi::basic_pstreambuf< CharT, Traits >::peof().

The documentation for this class was generated from the following file:

- pstream.h