StuBS
CopyStream Class Reference

Duplicate all data passed by the stream operator to two output streams. More...

#include <debug/copystream.h>

Inheritance diagram for CopyStream:
[legend]
Collaboration diagram for CopyStream:
[legend]

Public Member Functions

 CopyStream (OutputStream *first, OutputStream *second)
 Constructor. More...
 
template<typename T >
CopyStreamoperator<< (T value)
 Generic stream operator for any data type. More...
 
template<typename T >
CopyStreamoperator<< (T &(*f)(T &))
 Deal with [OutputStream] manipulator functions. More...
 
- Public Member Functions inherited from OutputStream
 OutputStream ()
 Default constructor. Initial number system is decimal.
 
virtual ~OutputStream ()
 Destructor.
 
virtual void flush ()=0
 Clears the buffer. More...
 
OutputStreamoperator<< (char c)
 Print a single character. More...
 
OutputStreamoperator<< (unsigned char c)
 Print a single character. More...
 
OutputStreamoperator<< (const char *string)
 Printing a null-terminated string. More...
 
OutputStreamoperator<< (bool b)
 Print a boolean value. More...
 
OutputStreamoperator<< (short ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (unsigned short ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (int ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (unsigned int ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (long ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (unsigned long ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (long long ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (unsigned long long ival)
 Print an integral number in radix base More...
 
OutputStreamoperator<< (const void *ptr)
 Print a pointer as hexadecimal number. More...
 
OutputStreamoperator<< (OutputStream &(*f)(OutputStream &))
 Calls one of the manipulator functions. More...
 
- Public Member Functions inherited from Stringbuffer
virtual ~Stringbuffer ()
 Destructor (nothing to do here)
 

Additional Inherited Members

- Public Attributes inherited from OutputStream
int base
 Number system used for printing integral numbers (one of 2, 8, 10, or 16)
 
- Protected Member Functions inherited from Stringbuffer
 Stringbuffer ()
 Constructor; Marks the buffer as empty.
 
void put (char c)
 Inserts a character into the buffer. More...
 
virtual void flush ()=0
 Flush the buffer contents. More...
 
- Protected Attributes inherited from Stringbuffer
char buffer [80]
 buffer containing characters that will be printed upon flush()
 
long unsigned pos
 current position in the buffer
 

Detailed Description

Duplicate all data passed by the stream operator to two output streams.

Can be used as replacement for any OutputStream – for example, forwarding the DBG output simultaneously to screen (TextStream) and serial console (SerialStream).

By using template programming, two generic methods are sufficient (which simply forward the input to both).

Constructor & Destructor Documentation

◆ CopyStream()

CopyStream::CopyStream ( OutputStream first,
OutputStream second 
)
inline

Constructor.

Parameters
firstFirst recipient for output passed to this object
secondSecond recipient for output passed to this object

Member Function Documentation

◆ operator<<() [1/2]

template<typename T >
CopyStream & CopyStream::operator<< ( value)
inline

Generic stream operator for any data type.

Forwards all input to both recipients.

Uses template meta programming for a generic & short solution

Template Parameters
TType of data to be forwarded
Parameters
valuedata to be forwarded
Returns
Reference to the CopyStream object allowing concatenation of operators

◆ operator<<() [2/2]

template<typename T >
CopyStream & CopyStream::operator<< ( T &(*)(T &)  f)
inline

Deal with [OutputStream] manipulator functions.

Template Parameters
TManipulator type
Parameters
fpointer to manipulator function
Returns
Reference to the CopyStream object allowing concatenation of operators

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