SourcePro® API Reference Guide

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

Reads objects encoded in a compact format from the supplied RWDataInputStream. More...

#include <rw/serial/RWCompactObjectInputStreamImp.h>

Inheritance diagram for RWCompactObjectInputStreamImp:
RWObjectInputStreamImp RWFilteredDataInputStreamImp RWDataInputStreamImp RWInputStreamImp RWStreamImp RWBodyBase RWTCountingBody< RWMutexLock > RWTMonitor< RWMutexLock >

Public Member Functions

virtual void endBlock ()
 
virtual void * getNewObject (const std::type_info *base)
 
virtual void getString (RWCString &str)
 
virtual void getUString (RWBasicUString &str)
 
virtual void getWString (RWWString &str)
 
virtual RWSymbol readTypeInfo ()
 
virtual void rememberObject (const void *obj)
 
virtual RWSymbol startBlock ()
 
virtual RWSymbol startMap (int &count, RWStreamType &keyType, RWStreamType &valueType)
 
virtual bool startMember (RWSymbol &memberName, RWStreamType &memberType)
 
virtual RWSymbol startSequence (int &count, RWStreamType &elementType)
 
- Public Member Functions inherited from RWObjectInputStreamImp
virtual void closeContext (bool readContext=true)
 
virtual void endAssoc ()
 
virtual void endElement ()
 
virtual void endMap ()
 
virtual void endMember ()
 
virtual void endParent ()
 
virtual void endSequence ()
 
virtual void getChar (char &value)
 
virtual void getCharacter (char &value)
 
virtual void getSymbol (RWSymbol &value)
 
virtual void openContext (bool readContext=true)
 
virtual void peekChar (char &value)
 
virtual void peekCharacter (char &value)
 
virtual void startAssocKey ()
 
virtual void startAssocValue ()
 
virtual void startElement (int &)
 
virtual void startParent (const RWSymbol &)
 
- Public Member Functions inherited from RWFilteredDataInputStreamImp
virtual ~RWFilteredDataInputStreamImp ()
 
virtual RWSize available () const
 
virtual void close ()
 
virtual void getBool (bool &value)
 
virtual RWSize getBools (bool *arrayPt, RWSize count)
 
virtual RWSize getChars (char *arrayPt, RWSize count)
 
virtual RWSize getDelimitedString (char *string, RWSize maxCount, char delim)
 
virtual RWSize getDelimitedUString (RWUChar *ustring, RWSize maxCount, RWUChar delim)
 
virtual RWSize getDelimitedWString (wchar_t *wstring, RWSize maxCount, wchar_t delim)
 
virtual void getDouble (double &value)
 
virtual RWSize getDoubles (double *arrayPt, RWSize count)
 
virtual void getFloat (float &value)
 
virtual RWSize getFloats (float *arrayPt, RWSize count)
 
virtual void getInt (int &value)
 
virtual RWSize getInts (int *arrayPt, RWSize count)
 
virtual void getLong (long &value)
 
virtual void getLongDouble (long double &value)
 
virtual RWSize getLongDoubles (long double *arrayPt, RWSize count)
 
virtual void getLongLong (long long &value)
 
virtual RWSize getLongLongs (long long *arrayPt, RWSize count)
 
virtual RWSize getLongs (long *arrayPt, RWSize count)
 
virtual void getShort (short &value)
 
virtual RWSize getShorts (short *arrayPt, RWSize count)
 
virtual void getSignedChar (signed char &value)
 
virtual RWSize getSignedChars (signed char *arrayPt, RWSize count)
 
virtual void getSizeT (size_t &value)
 
virtual void getUCharacter (RWUChar &value)
 
virtual void getUnsignedChar (unsigned char &value)
 
virtual RWSize getUnsignedChars (unsigned char *arrayPt, RWSize count)
 
virtual void getUnsignedInt (unsigned int &value)
 
virtual RWSize getUnsignedInts (unsigned int *arrayPt, RWSize count)
 
virtual void getUnsignedLong (unsigned long &value)
 
virtual void getUnsignedLongLong (unsigned long long &value)
 
virtual RWSize getUnsignedLongLongs (unsigned long long *arrayPt, RWSize count)
 
virtual RWSize getUnsignedLongs (unsigned long *arrayPt, RWSize count)
 
virtual void getUnsignedShort (unsigned short &value)
 
virtual RWSize getUnsignedShorts (unsigned short *arrayPt, RWSize count)
 
virtual void getWchar_t (wchar_t &value)
 
virtual RWSize getWchar_ts (wchar_t *arrayPt, RWSize count)
 
virtual void getWCharacter (wchar_t &value)
 
virtual bool isBad () const
 
virtual bool isEof () const
 
virtual bool isFail () const
 
virtual bool isGood () const
 
virtual RWSize skip (RWSize numUnits)
 
- Public Member Functions inherited from RWDataInputStreamImp
virtual ~RWDataInputStreamImp ()
 
- Public Member Functions inherited from RWInputStreamImp
virtual ~RWInputStreamImp ()
 
- Public Member Functions inherited from RWStreamImp
virtual ~RWStreamImp ()
 

Static Public Member Functions

static RWObjectInputStream make (const RWDataInputStream &source, bool annotateStream=false)
 

Protected Member Functions

 RWCompactObjectInputStreamImp (const RWDataInputStream &sourceStream, bool annotateStream)
 
virtual void closeOuterContext (bool readContext)
 
virtual RWSize getString (char *string, RWSize count)
 
virtual RWSize getUString (RWUChar *ustring, RWSize count)
 
virtual RWSize getWString (wchar_t *wstring, RWSize count)
 
virtual void openOuterContext (bool readContext)
 
- Protected Member Functions inherited from RWObjectInputStreamImp
 RWObjectInputStreamImp (const RWDataInputStream &sourceStream)
 
- Protected Member Functions inherited from RWFilteredDataInputStreamImp
 RWFilteredDataInputStreamImp (const RWDataInputStream &sourceStream)
 
RWDataInputStreamgetSourceStream ()
 
const RWDataInputStreamgetSourceStream () const
 
- Protected Member Functions inherited from RWDataInputStreamImp
 RWDataInputStreamImp ()
 
- Protected Member Functions inherited from RWInputStreamImp
 RWInputStreamImp ()
 
- 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
 

Detailed Description

The class RWCompactObjectInputStreamImp reads objects encoded in a compact format from the supplied RWDataInputStream. 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
// Open an fstream to serve as our source.
ifstream s("foo.dat");
// Create a portable stream using the fstream.
RWpistream pstrm(s);
// Create a compact data stream using the portable stream.
// Read integer from compact data stream
int i;
in >> i;

Constructor & Destructor Documentation

RWCompactObjectInputStreamImp::RWCompactObjectInputStreamImp ( const RWDataInputStream sourceStream,
bool  annotateStream 
)
inlineprotected

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

Parameters
sourceStreamServes as a handle to the previous processing stream.
annotateStreamIndicates whether the stream is annotated.

Member Function Documentation

virtual void RWCompactObjectInputStreamImp::closeOuterContext ( bool  readContext)
protectedvirtual

Really closes an open context, called when closeContext() calls match the number of openContext() calls.

Implements RWObjectInputStreamImp.

virtual void RWCompactObjectInputStreamImp::endBlock ( )
virtual

Inputs tokens that identify the end of an object.

Implements RWObjectInputStreamImp.

virtual void* RWCompactObjectInputStreamImp::getNewObject ( const std::type_info *  base)
virtual

Reads the dynamic type information (derived class) from the input stream, and factories an instance of this type.

Parameters
baseRepresents the static type (base class) of the field being read.

Implements RWObjectInputStreamImp.

virtual void RWCompactObjectInputStreamImp::getString ( RWCString value)
virtual

Reads an RWCString value from the stream.

Parameters
valueThe RWCString value to be read from the stream.

Implements RWObjectInputStreamImp.

virtual RWSize RWCompactObjectInputStreamImp::getString ( char *  string,
RWSize  count 
)
inlineprotectedvirtual

Forward the reading of a string of narrow characters from the attached source stream. The function returns the number of narrow characters read.

Parameters
stringA pointer to the first element of the string. The string must have been pre-allocated to contain at least count narrow characters.
countThe number of narrow character(s) to be read from the stream.

Reimplemented from RWObjectInputStreamImp.

virtual void RWCompactObjectInputStreamImp::getUString ( RWBasicUString value)
virtual

Reads an RWBasicUString value from the stream.

Parameters
valueThe RWBasicUString value to be read from the stream.

Implements RWObjectInputStreamImp.

virtual RWSize RWCompactObjectInputStreamImp::getUString ( RWUChar ustring,
RWSize  count 
)
inlineprotectedvirtual

Forward the reading of a string of UTF-16 characters from the attached source stream. The function returns the number of UTF-16 characters read.

Parameters
ustringA pointer to the first element of the string. The string must have been pre-allocated to contain at least count unicode characters.
countThe number of unicode character(s) to be read from the stream.

Reimplemented from RWObjectInputStreamImp.

virtual void RWCompactObjectInputStreamImp::getWString ( RWWString value)
virtual

Reads an RWWString value from the stream.

Parameters
valueThe RWWString value to be read from the stream.

Implements RWObjectInputStreamImp.

virtual RWSize RWCompactObjectInputStreamImp::getWString ( wchar_t *  wstring,
RWSize  count 
)
inlineprotectedvirtual

Forward the reading of a string of wide characters from the attached source stream. The function returns the number of wide characters read.

Parameters
wstringA pointer to the first element of the string. The string must have been pre-allocated to contain at least count wide characters.
countThe number of wide character(s) to be read from the stream.

Reimplemented from RWObjectInputStreamImp.

static RWObjectInputStream RWCompactObjectInputStreamImp::make ( const RWDataInputStream source,
bool  annotateStream = false 
)
static

Constructs an RWCompactObjectInputStreamImp instance that uses source as its source of bytes, and returns a handle to it. Throws no exceptions.

Parameters
sourceThe data stream used as the source of bytes.
annotateStreamIndicates whether the stream is annotated.
virtual void RWCompactObjectInputStreamImp::openOuterContext ( bool  readContext)
protectedvirtual

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

Implements RWObjectInputStreamImp.

virtual RWSymbol RWCompactObjectInputStreamImp::readTypeInfo ( )
virtual

Reads the type information for an class instance from the stream and returns it as a symbol.

Implements RWObjectInputStreamImp.

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

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

Implements RWObjectInputStreamImp.

virtual RWSymbol RWCompactObjectInputStreamImp::startBlock ( )
virtual

Inputs tokens that identify the start of a new object. Returns an RWSymbol representing the new object. Depending on the implementation class associated with this handle, the RWSymbol may be empty.

Implements RWObjectInputStreamImp.

virtual RWSymbol RWCompactObjectInputStreamImp::startMap ( int &  count,
RWStreamType keyType,
RWStreamType valueType 
)
virtual

Called by the input operators for association types (hash tables, etc.) at the start of a sequence. Returns an RWSymbol representing the collection.

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.

Implements RWObjectInputStreamImp.

virtual bool RWCompactObjectInputStreamImp::startMember ( RWSymbol memberName,
RWStreamType memberType 
)
virtual

Called for before each data member by the streamContents() function, metadata about the field may or may not be read from the stream depending on the implementation. If data is read (returning true), then parameter memberName will contain the name of the member. Otherwise returns false.

Implements RWObjectInputStreamImp.

virtual RWSymbol RWCompactObjectInputStreamImp::startSequence ( int &  count,
RWStreamType elementType 
)
virtual

Called by the input operators for collection types at the start of a sequence. Returns an RWSymbol representing the collection.

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

Implements RWObjectInputStreamImp.

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