SourcePro® API Reference Guide

 
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions
RWCompactObjectOutputStreamImp Class Reference

Writes objects in a compact format to the supplied RWDataOutputStream. More...

#include <rw/serial/RWCompactObjectOutputStreamImp.h>

Inheritance diagram for RWCompactObjectOutputStreamImp:
RWObjectOutputStreamImp RWFilteredDataOutputStreamImp RWDataOutputStreamImp RWOutputStreamImp RWStreamImp RWBodyBase RWTCountingBody< RWMutexLock > RWTMonitor< RWMutexLock >

Public Member Functions

virtual void endBlock ()
 
virtual bool needToWrite (const void *obj)
 
virtual void newObjectMarker ()
 
virtual void putString (const RWCString &str)
 
virtual void putUString (const RWBasicUString &str)
 
virtual void putWString (const RWWString &str)
 
virtual void rememberObject (const void *obj)
 
virtual void setNameForNextObject (const RWCString &)
 
virtual void startBlock (const RWSymbol &)
 
virtual void startMap (int count, RWStreamType keyType, RWStreamType valueType, const RWSymbol &)
 
virtual void startSequence (int count, RWStreamType elementType, const RWSymbol &)
 
virtual void writeMemberInfo (const RWSymbol &memberName, RWStreamType memberType)
 
virtual void writeNullPtr ()
 
virtual void writeTypeInfo (const RWSymbol &typeInfo)
 
- Public Member Functions inherited from RWObjectOutputStreamImp
virtual void closeContext (bool writeContext=true)
 
virtual void endAssoc ()
 
virtual void endElement ()
 
virtual void endMap ()
 
virtual void endMember (const RWSymbol &)
 
virtual void endParent ()
 
virtual void endSequence ()
 
virtual void openContext (bool writeContext=true)
 
virtual void putSymbol (const RWSymbol &sym)
 
virtual void startAssocKey ()
 
virtual void startAssocValue ()
 
virtual void startElement (int)
 
virtual void startParent (const RWSymbol &)
 
- Public Member Functions inherited from RWFilteredDataOutputStreamImp
virtual ~RWFilteredDataOutputStreamImp ()
 
virtual void close ()
 
virtual void flush ()
 
virtual bool isBad () const
 
virtual bool isFail () const
 
virtual bool isGood () const
 
virtual void putBool (bool value)
 
virtual void putBools (const bool *arrayPt, RWSize count)
 
virtual void putChar (char value)
 
virtual void putCharacter (char value)
 
virtual void putChars (const char *arrayPt, RWSize count)
 
virtual void putDouble (double value)
 
virtual void putDoubles (const double *arrayPt, RWSize count)
 
virtual void putFloat (float value)
 
virtual void putFloats (const float *arrayPt, RWSize count)
 
virtual void putInt (int value)
 
virtual void putInts (const int *arrayPt, RWSize count)
 
virtual void putLong (long value)
 
virtual void putLongDouble (long double value)
 
virtual void putLongDoubles (const long double *arrayPt, RWSize count)
 
virtual void putLongLong (long long value)
 
virtual void putLongLongs (const long long *arrayPt, RWSize count)
 
virtual void putLongs (const long *arrayPt, RWSize count)
 
virtual void putShort (short value)
 
virtual void putShorts (const short *arrayPt, RWSize count)
 
virtual void putSignedChar (signed char value)
 
virtual void putSignedChars (const signed char *arrayPt, RWSize count)
 
virtual void putSizeT (size_t value)
 
virtual void putUCharacter (RWUChar value)
 
virtual void putUnsignedChar (unsigned char value)
 
virtual void putUnsignedChars (const unsigned char *arrayPt, RWSize count)
 
virtual void putUnsignedInt (unsigned int value)
 
virtual void putUnsignedInts (const unsigned int *arrayPt, RWSize count)
 
virtual void putUnsignedLong (unsigned long value)
 
virtual void putUnsignedLongLong (unsigned long long value)
 
virtual void putUnsignedLongLongs (const unsigned long long *arrayPt, RWSize count)
 
virtual void putUnsignedLongs (const unsigned long *arrayPt, RWSize count)
 
virtual void putUnsignedShort (unsigned short value)
 
virtual void putUnsignedShorts (const unsigned short *arrayPt, RWSize count)
 
virtual void putWchar_t (wchar_t value)
 
virtual void putWchar_ts (const wchar_t *arrayPt, RWSize count)
 
virtual void putWCharacter (wchar_t value)
 
- Public Member Functions inherited from RWDataOutputStreamImp
virtual ~RWDataOutputStreamImp ()
 
virtual RWDataOutputStream acquire ()
 
virtual void release ()
 
- Public Member Functions inherited from RWOutputStreamImp
virtual ~RWOutputStreamImp ()
 
- Public Member Functions inherited from RWStreamImp
virtual ~RWStreamImp ()
 

Static Public Member Functions

static RWObjectOutputStream make (const RWDataOutputStream &sink, bool annotateStream=false)
 

Protected Member Functions

 RWCompactObjectOutputStreamImp (const RWDataOutputStream &sinkStream, bool annotateStream)
 
virtual void closeOuterContext (bool writeContext)
 
virtual void openOuterContext (bool writeContext)
 
virtual void putString (const char *string, RWSize count)
 
virtual void putUString (const RWUChar *ustring, RWSize count)
 
virtual void putWString (const wchar_t *wstring, RWSize count)
 
- Protected Member Functions inherited from RWObjectOutputStreamImp
 RWObjectOutputStreamImp (const RWDataOutputStream &sinkStream)
 
int getContextNestingLevel ()
 
- Protected Member Functions inherited from RWFilteredDataOutputStreamImp
 RWFilteredDataOutputStreamImp (const RWDataOutputStream &sinkStream)
 
RWDataOutputStreamgetSinkStream ()
 
const RWDataOutputStreamgetSinkStream () const
 
- Protected Member Functions inherited from RWDataOutputStreamImp
 RWDataOutputStreamImp ()
 
- Protected Member Functions inherited from RWOutputStreamImp
 RWOutputStreamImp ()
 
- Protected Member Functions inherited from RWStreamImp
 RWStreamImp ()
 
- Protected Member Functions inherited from RWBodyBase
 RWBodyBase (void)
 
 RWBodyBase (RWStaticCtor)
 
 RWBodyBase (const RWBodyBase &second)
 
virtual ~RWBodyBase (void)
 
RWBodyBaseoperator= (const RWBodyBase &second)
 
- Protected Member Functions inherited from RWTCountingBody< RWMutexLock >
 RWTCountingBody (unsigned initCount=0)
 
 RWTCountingBody (RWStaticCtor)
 
 RWTCountingBody (const RWTCountingBody< RWMutexLock > &second)
 
RWTCountingBody< RWMutexLock > & operator= (const RWTCountingBody< RWMutexLock > &second)
 
 ~RWTCountingBody (void)
 
unsigned addReference (void)
 
unsigned references (void) const
 
unsigned removeReference (void)
 
- Protected Member Functions inherited from RWTMonitor< RWMutexLock >
 RWTMonitor ()
 
 RWTMonitor (RWStaticCtor)
 
 RWTMonitor (const RWTMonitor< RWMutexLock > &second)
 
 ~RWTMonitor ()
 
void acquire ()
 
bool isAcquired () const
 
RWTMonitor< RWMutexLock > & monitor () const
 
RWMutexLockmutex ()
 
RWTMonitor< RWMutexLock > & operator= (const RWTMonitor< RWMutexLock > &)
 
void release ()
 
bool tryAcquire ()
 

Additional Inherited Members

- Protected Types inherited from RWTCountingBody< RWMutexLock >
typedef RWTLockGuard< RWTMonitor< RWMutexLock > > LockGuard
 
typedef RWTTryLockGuard< RWTMonitor< RWMutexLock > > TryLockGuard
 
typedef RWTUnlockGuard< RWTMonitor< RWMutexLock > > UnlockGuard
 
- Protected Types inherited from RWTMonitor< RWMutexLock >
typedef RWTLockGuard< RWTMonitor< RWMutexLock > > LockGuard
 
typedef RWTTryLockGuard< RWTMonitor< RWMutexLock > > TryLockGuard
 
typedef RWTUnlockGuard< RWTMonitor< RWMutexLock > > UnlockGuard
 
- Protected Attributes inherited from RWObjectOutputStreamImp
RWCString nameForNextObject_
 

Detailed Description

The class RWCompactObjectOutputStreamImp writes objects in a compact format to the supplied RWDataOutputStream. The format of this stream resembles that produced when RWCollectable instances are persisted using RW virtual streams. Implements the body idiom from the handle/body pattern. The stream can optionally be annotated with member (attribute) name and type information to support generic parsing.

Example
// Create a string stream to serve as our sink
ostringstream s;
// Create a portable stream from the string stream
RWpostream pstrm(s);
// Create a compact data stream using the portable stream
// Write integer value 1 to compact data stream
out << 1;

Constructor & Destructor Documentation

RWCompactObjectOutputStreamImp::RWCompactObjectOutputStreamImp ( const RWDataOutputStream sinkStream,
bool  annotateStream 
)
inlineprotected

Used by derived classes to initialize the next processing stream. Throws no exceptions.

Parameters
sinkStreamA handle to the next processing stream.
annotateStreamIndicates whether the stream will be annotated.

Member Function Documentation

virtual void RWCompactObjectOutputStreamImp::closeOuterContext ( bool  writeContext)
protectedvirtual

Really closes an open context. This function is called when the number of closeContext() calls matches the number of openContext() calls.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::endBlock ( )
virtual

Outputs tokens that identify the end of an object.

Implements RWObjectOutputStreamImp.

static RWObjectOutputStream RWCompactObjectOutputStreamImp::make ( const RWDataOutputStream sink,
bool  annotateStream = false 
)
static

Constructs an RWCompactObjectOutputStreamImp instance that uses the parameter sink as its sink of bytes, and returns a handle to it. Throws no exceptions.

Parameters
sinkThe data stream used as the sink of bytes.
annotateStreamIndicates whether the stream will be annotated.
virtual bool RWCompactObjectOutputStreamImp::needToWrite ( const void *  obj)
virtual

Returns true when the referenced object has not yet been written to the stream in the current context. Otherwise, tokens are output identifying this object as having been previously streamed, and the function returns false.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::newObjectMarker ( )
virtual

Output is a token indicating that an object will be created by the factory.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::openOuterContext ( bool  writeContext)
protectedvirtual

Really opens a new context. This function is called by openContext() when a context is not already open.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putString ( const RWCString str)
virtual

Writes an RWCString to the stream.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putString ( const char *  string,
RWSize  count 
)
inlineprotectedvirtual

Forwards the writing of a narrow character string, including embedded nulls, starting at string to the next processing stream.

Parameters
stringA pointer to the narrow string's first character.
countThe number of narrow character(s) to be written to the stream.

Reimplemented from RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putUString ( const RWBasicUString str)
virtual

Writes an RWBasicUString to the stream.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putUString ( const RWUChar ustring,
RWSize  count 
)
inlineprotectedvirtual

Forwards the writing of a UTF-16 character string, including embedded nulls, starting at ustring to the next processing stream.

Parameters
ustringA pointer to the string's first unicode character.
countThe number of unicode character(s) to be written to the stream.

Reimplemented from RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putWString ( const RWWString str)
virtual

Writes an RWWString to the stream.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::putWString ( const wchar_t *  wstring,
RWSize  count 
)
inlineprotectedvirtual

Forwards the writing of a wide character string, including embedded nulls, starting at wstring to the next processing stream.

Parameters
wstringA pointer to the string's first wide character.
countThe number of wide character(s) to be written to the stream.

Reimplemented from RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::rememberObject ( const void *  obj)
virtual

Called by streaming operators to record each instance streamed out, in case it is referenced again in the same context.

Parameters
objHolds the address of the instance.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::setNameForNextObject ( const RWCString str)
inlinevirtual

Sets up the instance name for the next object to be written out.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::startBlock ( const RWSymbol typeInfo)
virtual

Outputs tokens that identify the start of a new object.

Parameters
typeInfoIdentifies the type of the new object, if such information is available.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::startMap ( int  count,
RWStreamType  keyType,
RWStreamType  valueType,
const RWSymbol typeInfo 
)
virtual

Called by the output operators for association types (hash tables, etc.) at the start.

Parameters
countContains the number of items in the association.
keyTypeContains the type of key in the association.
valueTypeContains the type of value in the association.
typeInfoContains the type of the association (collection) itself.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::startSequence ( int  count,
RWStreamType  elementType,
const RWSymbol typeInfo 
)
virtual

Called by the output operators for collection types at the start of a sequence.

Parameters
countContains the number of items in the collection.
elementTypeContains the type of element in the collection.
typeInfoContains the type of the collection itself.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::writeMemberInfo ( const RWSymbol memberName,
RWStreamType  memberType 
)
virtual

Called for before each data member by the streamContents() function. Metadata about the field may or may not be written to the stream, depending on the implementation. This function returns true if data is actually written out. Otherwise, it returns false.

Parameters
memberNameIdentifies the name of the member.
memberTypeIdentifies the type of the member.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::writeNullPtr ( )
virtual

Output is a token representing a null pointer.

Implements RWObjectOutputStreamImp.

virtual void RWCompactObjectOutputStreamImp::writeTypeInfo ( const RWSymbol typeInfo)
virtual

Outputs the type information required to factory an object of the correct dynamic type (derived class) on input.

Parameters
typeInfoIdentifies the type of the new object, if such information is available.

Implements RWObjectOutputStreamImp.

Copyright © 2023 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.