Click on the banner to return to the Class Reference home page.

©Copyright 1996 Rogue Wave Software

RWvostream


RWvostreamRWvios

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>
void storeStuff( RWvostream& str) {
   int i = 5;
   double d = 22.5;
   char string[] = "A string with \t tabs and a newline\n";
   str << i;        // Store an int
   str << d;        // Store a double
   str << string;   // Store a string

   if(str.fail()) cerr << "Oh, oh, bad news.\n";
}
 

Public Destructor

virtual ~RWvostream();




Public Operators

virtual RWvostream&
operator<<(const char* s) = 0;
virtual RWvostream&
operator<<(const wchar_t* ws) = 0;
virtual RWvostream&
operator<<(char c) = 0;
virtual RWvostream&
operator<<(wchar_t wc) = 0;
virtual RWvostream&
operator<<(unsigned char c) = 0;
virtual RWvostream&
operator<<(double d) = 0;
virtual RWvostream&
operator<<(float f) = 0;
virtual RWvostream&
operator<<(int i) = 0;
virtual RWvostream&
operator<<(unsigned int i) = 0;
virtual RWvostream&
operator<<(long l) = 0;
virtual RWvostream&
operator<<(unsigned long l) = 0;
virtual RWvostream&
operator<<(short s) = 0;
virtual RWvostream&
operator<<(unsigned short s) = 0;
operator void*();

Public Member Functions

virtual RWvostream&
flush();
virtual RWvostream&
put(char c) = 0;
virtual RWvostream&
put(wchar_t wc) = 0;
virtual RWvostream&
put(unsigned char c) = 0;
virtual RWvostream&
put(const char* p, size_t N) = 0;
virtual RWvostream&
put(const wchar_t* p, size_t N) = 0;
virtual RWvostream&
put(const unsigned char* p, size_t N) = 0;
virtual RWvostream&
put(const short* p, size_t N) = 0;
virtual RWvostream&
put(const unsigned short* p, size_t N) = 0;
virtual RWvostream&
put(const int* p, size_t N) = 0;
virtual RWvostream&
put(const unsigned int* p, size_t N) = 0;
virtual RWvostream&
put(const long* p, size_t N) = 0;
virtual RWvostream&
put(const unsigned long* p, size_t N) = 0;
virtual RWvostream&
put(const float* p, size_t N) = 0;
virtual RWvostream&
put(const double* p, size_t N) = 0;
virtual RWvostream&
putString(const char*s, size_t N);