Chapter 2 Package Overview
2.1 Advanced Tools Module Packages
The Advanced Tools Module is made up of three packages:
*The Streams package
*The Serialization package
*The Types package
2.1.1 The Streams Package
The Streams package includes flexible, Java-like stream abstractions that include support for streaming tiny and wide characters. These stream abstractions give you more ways to move data into and out of your application and can optionally interoperate with the virtual streaming mechanism in the Essential Tools Module for even more flexibility.
The Streams package provides five stream families:
* binary streams
* narrow character streams
* Unicode character streams
* wide character streams
* data streams
The wide character streams and Unicode character streams provide support for internationalization.
For more information on using the Advanced Tools Module to internationalize your streams, see Chapter 8, “International Features of the Advanced Tools Module.”
2.1.2 The Serialization Package
The Serialization package includes two object persistence mechanisms: non RWCollectable polymorphic persistence and non-intrusive polymorphic persistence. This package enables you to add polymorphic persistence to your applications without changing your classes. A concrete stream is provided producing a compact data representation like that generated by RWCollectable persistence. The package can also be extended to user-defined formats.
The Serialization package includes the following capabilities:
*Provides a mechanism for flattening and transporting objects across communication boundaries and for storing the contents of these objects to disk
*Passes objects by value between processes in a distributed system
*Makes your classes “serializable” without inheriting from a serializable base class
*Streams your objects to and from portable ASCII and portable binary formats
2.1.3 The Types Package
The Types package includes just one class, RWSymbol. This class encapsulates a string name in a reference-counted handle-body pattern. Therefore, several RWSymbols can reference one string name, making storage space smaller, name memory management easier, and name comparisons faster.