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

Class template for Bidirectional PStreams. More...

`#include <pstream.h>`

Inheritance diagram for redi::basic_pstream< 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_pstream ()
| Default constructor, creates an uninitialised stream.
| basic_pstream (const std::string &command, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process. More...
| basic_pstream (const std::string &file, const argv_type &argv, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process. More...
| basic_pstream (const argv_type &argv, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process. More...
| ~basic_pstream ()
| Destructor. More...
void | open (const std::string &command, pmode mode=pstdout|pstdin)
| Start a process. More...
void | open (const std::string &file, const argv_type &argv, pmode mode=pstdout|pstdin)
| Start a process. More...
basic_pstream & | out ()
| Set streambuf to read from process' `stdout`. More...
basic_pstream & | err ()
| Set streambuf to read from process' `stderr`. 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 | 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.

## 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 &command, 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.

## Detailed Description

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

Class template for Bidirectional PStreams.

Writing to a pstream opened with `pmode` `pstdin` writes to the standard input of the command. Reading from a pstream opened with `pmode` `pstdout` and/or `pstderr` reads the command's standard output and/or standard error. Any of the process' `stdin`, `stdout` or `stderr` that is not connected to the pstream (as specified by the `pmode`) will be the same as the process that created the pstream object, unless altered by the command itself.

## Constructor & Destructor Documentation

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

redi::basic_pstream< CharT, Traits >::basic_pstream | ( | const std::string & | command,
|  | pmode | mode = `pstdout|pstdin`
| ) |  |

inline

Constructor that initialises the stream by starting a process.

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

Parameters

  command | 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)

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

redi::basic_pstream< CharT, Traits >::basic_pstream | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode = `pstdout|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)

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

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

inline

Constructor that initialises the stream by starting a process.

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

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)

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

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

inline

Destructor.

Closes the stream and waits for the child to exit.

## Member Function Documentation

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.

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.

template<typename C , typename T >

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

inline protected inherited

Start a process.

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

Parameters

  command | 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)

Referenced by redi::basic_ipstream< CharT, Traits >::open(), redi::basic_opstream< CharT, Traits >::open(), redi::basic_pstream< CharT, Traits >::open(), redi::basic_rpstream< CharT, Traits >::open(), and redi::pstream_common< CharT, Traits >::pstream_common().

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)

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

basic_pstream& redi::basic_pstream< CharT, Traits >::err | ( |  | ) |

inline

Set streambuf to read from process' `stderr`.

Returns
  `*this`

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

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()

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

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

inline

Start a process.

Calls do_open( command , mode ).

Parameters

  command | 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::pstream_common< CharT, Traits >::do_open().

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

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

inline

Start a process.

Calls do_open( file , argv , mode ).

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::pstream_common< CharT, Traits >::do_open().

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

basic_pstream& redi::basic_pstream< CharT, Traits >::out | ( |  | ) |

inline

Set streambuf to read from process' `stdout`.

Returns
  `*this`

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

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.

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

- pstream.h