Module: Advanced Tools Package: Serialization
Global Macros
#include <rw/serial/RWObjectStreamMacros.h>
Macro definitions used to define operations that enable objects to be serialized.
While not directly part of object streams, these macros make heavy use of the object streams interface, delegating most of the work of object serialization back to the object stream implementation. Object streams are thus able to control nearly all aspects of object serialization, not just the format of primitive data types like virtual streams.
Some of these macros have positional restrictions with respect to each other. As a general rule of thumb, the RW_XXX_AS_SELF macros come before RW_XXX_AS_BASE macros. For more insight, please see Section 6.4, "Basic Examples," in the Advanced Tools Module User's Guide
RW_BEGIN_EXTERNAL_STREAM_CONTENTS(className)
Starts the streamContents() function. Put in separate source file. For external serialization only. (For intrusive, use RW_BEGIN_STREAM_CONTENTS.)
RW_BEGIN_STREAM_CONTENTS(className)
Starts the streamContents() function. Put in source file for class. For intrusive serialization only. (For external, use RW_BEGIN_EXTERNAL_STREAM_CONTENTS.)
RW_DECLARE_EXTERNAL_STREAM_FNS(className)
Declares streamContents(), used to add the contents of your object to a virtual stream, and other things. For external serialization only. (For intrusive, use RW_DECLARE_VIRTUAL_STREAM_FNS.)
RW_DECLARE_FRIEND_CTOR_METHOD(derivedClass, baseClass)
When a derived class has a non-public default constructor, use this macro within the derived class declaration for each base class that might be streamed in as a polymorphic pointer.
RW_DECLARE_STREAMABLE_POINTER(className)
Declares global serialization operators, for streaming most class types. Intrusive. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_COLLECTABLE_MAP(container)
Declares global serialization operators for streaming RWCollectable-based maps (associations). Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_COLLECTABLE_SEQUENCE(container)
Declares global serialization operators for streaming RWCollectable-based collections. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_PTR_MAP(container)
Declares global serialization operators, for streaming maps (associations) of pointers. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_PTR_SEQUENCE(container)
Declares global serialization operators, for streaming Rogue Wave pointer-based template collections. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_STD_MAP(container)
Declares global serialization operators, for streaming maps (associations) of Standard C++ Library types. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_STD_SEQUENCE(container)
Declares global serialization operators, for streaming Standard C++ Library sequences. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_VAL_MAP(container)
Declares global serialization operators, for streaming maps (associations) of value-based templates. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_STREAMABLE_VAL_SEQUENCE(container)
Declares global serialization operators, for streaming Rogue Wave value-based template collections. Intrusive or external. Put in header file outside the class declaration.
RW_DECLARE_VIRTUAL_STREAM_FNS(className)
Declares streamContents(), used to add the contents of your object to a virtual stream, and other things. Put in header file inside the class declaration. For intrusive serialization only. (For external, use RW_DECLARE_EXTERNAL_STREAM_FNS).
RW_DECLARE_EXTERNAL_STREAMABLE_AS_BASE(derivedClass, baseClass) RW_DEFINE_EXTERNAL_STREAMABLE_AS_BASE(derivedClass, baseClass)
Allows concrete derived types to be streamed out and streamed back in as pointers to their base class. Place the first one in your header, after the declaration of the class and the second in a separate source file. Usually you will want to place this macro after you have used the RW_DECLARE_EXTERNAL_STREAMABLE_AS_SELF macro. For external serialization only. (For intrusive, use RW_DEFINE_STREAMABLE_AS_BASE.)
RW_DECLARE_EXTERNAL_STREAMABLE_POINTER(className) RW_DEFINE_EXTERNAL_STREAMABLE_POINTER(className)
Defines the global serialization operators. Place the first one in the header of your serializable class and the second one in the source file. For external serialization only. (For intrusive, use RW_DEFINE_STREAMABLE_POINTER.)
RW_DECLARE_EXTERNAL_STREAMABLE_AS_SELF(className) RW_DEFINE_EXTERNAL_STREAMABLE_AS_SELF(className)
Apply this macro to a class if its instantiations will be serialized as pointers directly to the instantiations. Place the first one in the header of your serializable class and the second one in the source file. For external serialization only. (For intrusive, use RW_DEFINE_STREAMABLE_AS_SELF.)
RW_DECLARE_STREAMABLE_AS_BASE(derivedClass, baseClass) RW_DEFINE_STREAMABLE_AS_BASE(derivedClass, baseClass)
Allows concrete derived types to be streamed out and streamed back in as pointers to their base class. Place the first one in the header of your serializable class and the second one in the source file for class. Usually you will want to place this macro after the RW_DECLARE_STREAMABLE_AS_SELF macro. For intrusive serialization only. (For external, use RW_DEFINE_EXTERNAL_STREAMABLE_AS_BASE.)
RW_DECLARE_STREAMABLE_AS_SELF(className) RW_DEFINE_STREAMABLE_AS_SELF(className)
Apply this macro to a class if its instantiations will be serialized as pointers directly to the instantiations. For intrusive serialization only. (For external, use RW_DEFINE_EXTERNAL_STREAMABLE_AS_SELF. For template classes, use RW_DEFINE_STREAMABLE_TEMPLATE_AS_SELF in the header file.)
RW_DECLARE_STREAMABLE_POINTER(className) RW_DEFINE_STREAMABLE_POINTER(className)
Defines the global serialization operators for pointers. Place the first one in the header for the class and the second one in the source file for class. (For external, use RW_DEFINE_EXTERNAL_STREAMABLE_POINTER. For template classes, use RW_DEFINE_STREAMABLE_TEMPLATE_POINTER in the header file.)
RW_DEFINE_STREAMABLE_TEMPLATE_AS_SELF(className)
For template classes, apply this macro to a class if its instantiations will be serialized as pointers directly to the instantiations. (For other classes, use RW_DEFINE_STREAMABLE_AS_SELF in the source file.)
RW_DEFINE_STREAMABLE_TEMPLATE_POINTER(className)
Defines the global serialization operators to provide serialization support for template classes. (For other classes, use RW_DEFINE_STREAMABLE_POINTER in the source file.)
RW_END_STREAM_CONTENTS
Ends the streamContents() function.
RW_INPUT_STREAM
Used in custom code to access the object input stream
RW_OUTPUT_STREAM
Used in custom code to access the object output stream
RW_STREAM_ATTR_GET_SET(attrName, attrType, get, set)
Use this macro to identify an attribute of the class to be streamed in terms of a get() and set() function pair. This is useful in external streaming when the internal data member is private, but has public get() and set() functions.
RW_STREAM_ATTR_MEMBER(attrName, memberName)
Use this macro to identify a data member as an attribute of the class. If using external streaming, then the data member must be public.
RW_STREAM_EXTERNAL_PARENT(parentClass)
For classes derived from a serializable base class. Calls streamContents() on the base class to stream the contents of the base class before streaming the derived class. Put in separate source file. For external serialization only. (For intrusive, use RW_STREAM_PARENT.)
RW_STREAM_PARENT(parentClass)
For classes derived from a serializable base class. Calls streamContents() on the base class to stream the contents of the base class before streaming the derived class. Put in source file for class. For intrusive serialization only. (For external, use RW_STREAM_EXTERNAL_PARENT.)
RW_WHEN_INPUT(body)
Used to insert custom code into stream contents that only executes during input operations.
RW_WHEN_OUTPUT(body)
Used to insert custom code into stream contents that only executes during output operations.
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.