### Introduction to the Streaming Classes

The VisualAge C++ streaming classes provide support for the storage and retrieval of data, including both C++ objects and primitive types, from streams. The Streaming Classes comprise three core elements:

- Data streams
- The IMStreamable mixin class
- Stream modules

The Streaming Classes also define several exception classes.

Capabilities supported by the Streaming Classes include monomorphic streaming, polymorphic streaming, platform-to-platform data compatibility (a document streamed out on one platform will be readable on another platform), and release-to-release data compatibility (a document written by one version of an application or system will be readable by a newer or an older version).

Typical usage of the Streaming Classes involves:

- Implementing persistent storage
- Marshalling function arguments for remote procedure-calls
- Streaming data polymorphically and monomorphically
- Implementing release-to-release data compatibility
- Streaming aliases and aliased objects

Exceptions Defined by the Streaming Classes
Release-to-Release Data Compatibility (RRDC)
Data Streams

Adding Streaming Support to Structs and Simple Classes
Instantiating a Data Stream
Creating a Streamable Class
Instantiating a Stream Module
Streaming Objects Monomorphically
Streaming Objects Polymorphically
Transitioning from Older Streaming Constructs