The older streaming constructs from VisualAge for C++ 3.5 will remain available on the Windows platforms for compatibility purposes, but are not recommended for new use, and will not be ported to any additional platforms. The old classes will be the only way that data streamed by legacy applications can be read, and should be used only for that purpose.
This table compares the old streaming constructs with the new constructs:
Old streaming construct | New streaming construct |
obj_ptr2 = ::copyPointer(obj_ptr1) obj_ptr2 = ::copy(src) |
obj_ptr2 = ::copyPointer(obj_ptr1); obj_ptr2 = ::copy(src) No Change. |
primitiveType <<= aStream primitiveType >>= aStream |
primitiveType <<= aStream primitiveType >>= aStream Streaming of primitive types is unchanged. |
object_reference >>= aStream object_reference <<= aStream |
object_reference >>= aStream object_reference <<= aStream Monomorphic streaming of embedded objects is unchanged. |
Class IFoo { ... } |
class IFoo : public virtual IMStreamable { ... } Streamable classes must inherit from IMStreamable. |
TypeExtension[*]Macro |
StreamableDeclarationsMacro StreamableDefinitionsMacro No macros for enabling dynamic cast or copy. |
yourClass::operator<<=(IBaseStream&) yourClass::operator>>=(IBaseStream&) |
yourClass::readFromStream(IDataStream&) yourClass::writeToStream(IDataStream&) User written streaming functions for a class. |
readVersion(aStream) |
IStreamInFrame localFrame(aStream); |
writeVersion(aStream, version_number) |
IStreamOutFrame localFrame(aStream); Handling of versions is substantially different. |
BaseClass::operator>>=(aStream) BaseClass::operator<<=(aStream) |
BaseClass::writeToStream(aStream); BaseClass::readFromStream(aStream); Streaming base classes from within a derived class streaming operator. |
:flatten(objectPtr, aStream) |
aStream.writeObject(objectPtr); |
::resurrect(objectPtr, aStream) |
::readObject(objectPtr, aStream); |
dynamicCastTo(targ_ptr, src_ptr) |
targ_ptr = dynamic_cast<ITargetType*>(src_ptr) This is standard C++. |
createNewObject |
Not available. |
class IBaseStream |
class IDataStream Subclassing interface is different. |
IBaseStream::SetContext() |
IStreamContextFrame(IDataStream&); Local object to establish a context for top-level users of a stream. |
Introduction
to the Streaming Classes
Aliased
Objects
Monomorphic
Streaming
Polymorphic
Streaming
Release-to-Release
Data Compatibility (RRDC)
Data
Streams
Adding Streaming Support
to Structs and Simple Classes
Creating a Streamable
Class
Creating a Streamable
Template Class
Instantiating a
Stream Module
Enabling
Release-to-Release Data Compatibility
Streaming Base Classes
Instantiating a Data
Stream
Streaming Aliases
and Aliased Objects
Streaming
Objects Monomorphically
Streaming
Objects Polymorphically