Typically, you will instantiate one instance of IStreamModule per .DLL or .EXE. Instances of IStreamModule are used to uniquely identify types on a stream.
You must declare all stream modules as global variables. Do not declare them static because they will not be visible to functions in other files.
IStreamModule gMyDataStreamModule("MyDataStreamModule");
In the source file for each of your streamable classes, make sure to associate your class with the stream module. The second parameter of the StreamableDeclarationsMacro expects the name of the module variable, not the module name string:
// In source file for IChangeLanguageCommand extern IStreamModule gMyDataStreamModule; StreamableDefinitionsMacro(IChangeLanguageCommand, gMyDataStreamModule);
You can also declare the IStreamModule in one of your header files so that you don't have to declare the IStreamModule as "extern" in every implementation file that uses it.
Introduction
to the Streaming Classes
Data Streams
Creating a Streamable
Class
Creating a Streamable
Template Class
Instantiating a Data
Stream
Streaming
Aliases and Aliased Objects
Streaming Objects
Polymorphically