RWvostream(3C++) RWvostream(3C++)
NameRWvostream - Rogue Wave library class
Synopsis
#include <rw/vstream.h>
Description
Class RWvostream is an abstract base class. It provides an interface for
format-independent storage of fundamental types and arrays of fundamental
types. Its counterpart, RWvistream, provides a complementary interface
for the retrieval of variables of the fundamental types. Because the
interface of RWvistream and RWvostream is independent of formatting, the
user of these classes need not be concerned with how variables will
actually be stored or restored. That will be up to the derived class to
decide. It might be done using an operating-system independent ASCII
format (classes RWpistream and RWpostream), a binary format (classes
RWbistream and RWbostream), or the user could define his or her own
format (e.g., an interface to a network). Note that because it is an
abstract base class, there is no way to actually enforce these goals --
the description here is merely the model of how a class derived from
RWvistream and RWvostream should act. Note that there is no need to
separate variables with whitespace. It is the responsibility of the
derived class to delineate variables with whitespace, packet breaks, or
whatever might be appropriate for the final output sink. The model is
one where variables are inserted into the output stream, either
individually or as homogeneous vectors, to be restored in the same order
using RWvistream. Storage and retrieval of characters requires some
explanation. Characters can be thought of as either representing some
alphanumeric or control character, or as the literal number. Generally,
the overloaded insertion (<<) and extraction (>>) operators seek to store
and restore characters preserving their symbolic meaning. That is,
storage of a newline should be restored as a newline, regardless of its
representation on the target machine. By contrast, member functions
get() and put() should treat the character as a literal number, whose
value is to be preserved. See also class RWpostream.
Persistence
None
Example
#include <rw/vstream.h>
Page 1
RWvostream(3C++) RWvostream(3C++)
void storeStuff( RWvostream& str) {
int i = 5;
double d = 22.5;
char string[] = "A string with tabs and a newline0;
str << i; // Store an int
str << d; // Store a double
str << string; // Store a string
if(str.fail()) cerr << "Oh, oh, bad news.0;
}
Public Destructor
virtual ~RWvostream();
This virtual destructor allows specializing classes to deallocate any
resources that they may have allocated.
Public Operators
virtual RWvostream&
operator<<(const char* s) = 0;
Store the character string starting at s to the output stream. The
character string is expected to be null terminated.
virtual RWvostream&
operator<<(const wchar_t* ws) = 0;
Store the wide character string starting at ws to the output stream. The
character string is expected to be null terminated.
virtual RWvostream&
operator<<(char c) = 0;
Store the char c to the output stream. Note that c is treated as a
character, not a number.
virtual RWvostream&
operator<<(wchar_t wc) = 0;
Store the wchar_t wc to the output stream. Note that wc is treated as a
character, not a number.
Page 2
RWvostream(3C++) RWvostream(3C++)
virtual RWvostream&
operator<<(unsigned char c) = 0;
Store the unsigned char c to the output stream. Note that c is treated
as a character, not a number.
virtual RWvostream&
operator<<(double d) = 0;
Store the double d to the output stream.
virtual RWvostream&
operator<<(float f) = 0;
Store the float f to the output stream.
virtual RWvostream&
operator<<(int i) = 0;
Store the int i to the output stream.
virtual RWvostream&
operator<<(unsigned int i) = 0;
Store the unsigned int i to the output stream.
virtual RWvostream&
operator<<(long l) = 0;
Store the long l to the output stream.
virtual RWvostream&
operator<<(unsigned long l) = 0;
Store the unsigned long l to the output stream.
virtual RWvostream&
operator<<(short s) = 0;
Store the short s to the output stream.
virtual RWvostream&
operator<<(unsigned short s) = 0;
Page 3
RWvostream(3C++) RWvostream(3C++)
Store the unsigned short s to the output stream.
operator void*();
Inherited from RWvios.
Public Member Functions
virtual RWvostream&
flush();
Send the contents of the stream buffer to output immediately.
virtual RWvostream&
put(char c) = 0;
Store the char c to the output stream, preserving its value.
virtual RWvostream&
put(wchar_t wc) = 0;
Store the wchar_t wc to the output stream, preserving its value.
virtual RWvostream&
put(unsigned char c) = 0;
Store the char c to the output stream, preserving its value.
virtual RWvostream&
put(const char* p, size_t N) = 0;
Store the vector of N chars starting at p to the output stream. The
chars should be treated as literal numbers (i.e., not as a character
string).
virtual RWvostream&
put(const wchar_t* p, size_t N) = 0;
Store the vector of N wchar_ts starting at p to the output stream. The
chars should be treated as literal numbers (i.e., not as a character
string).
virtual RWvostream&
put(const unsigned char* p, size_t N) = 0;
Page 4
RWvostream(3C++) RWvostream(3C++)
Store the vector of N unsigned chars starting at p to the output stream.
The chars should be treated as literal numbers (i.e., not as a character
string).
virtual RWvostream&
put(const short* p, size_t N) = 0;
Store the vector of N shorts starting at p to the output stream.
virtual RWvostream&
put(const unsigned short* p, size_t N) = 0;
Store the vector of N unsigned shorts starting at p to the output stream.
virtual RWvostream&
put(const int* p, size_t N) = 0;
Store the vector of N ints starting at p to the output stream.
virtual RWvostream&
put(const unsigned int* p, size_t N) = 0;
Store the vector of N unsigned ints starting at p to the output stream.
virtual RWvostream&
put(const long* p, size_t N) = 0;
Store the vector of N longs starting at p to the output stream.
virtual RWvostream&
put(const unsigned long* p, size_t N) = 0;
Store the vector of N unsigned longs starting at p to the output stream.
virtual RWvostream&
put(const float* p, size_t N) = 0;
Store the vector of N floats starting at p to the output stream.
virtual RWvostream&
put(const double* p, size_t N) = 0;
Store the vector of N doubles starting at p to the output stream.
Page 5
RWvostream(3C++) RWvostream(3C++)
virtual RWvostream&
putString(const char*s, size_t N);
Store the character string, including embedded nulls, starting at s to
the output string.
Page 6