This is the declaration of the ClassDescriptionBase, ClassDescriptionTBase, ClassDescription, AbstractClassDescription, NoPIOClassDescription and AbstractNoPIOClassDescription classes.
ClassDescriptionBase is the non-templated base class for the templated ClassDescriptionTBase, ClassDescription, AbstractClassDescription, NoPIOClassDescription and AbstractNoPIOClassDescription classes. An instantiation of one of these classes represents a meta class encapsulating information about the template argument class. This information is obtained from the templated ClassTraits class which can be specialized for any given class should the default information not be satisfactory. Information is also obtained from the templated BaseClassTraits class which must be specialized for each class declaring a typedef for each of its base classes.
The information about a class stored in a
ClassDescriptionBase objects is the following:
a
platform-independent class name,
a reference to the
type_info
an integer version number,
a vector of
ClassDescriptionBase* corresponding to the base
classes,
methods for reading/writing members of a class from/to
a
PersistentIStream/PersistentOStream
and
a method for creating an object of a class.
The ClassDescriptionBase objects should be created before main() is executed, and shouold therfore be instantiated as static member variables. Only one ClassDescriptionBase object should be instantiated for each class to be described. The ClassDescriptionBase objects are automatically stored in a purely static DescriptionList class.
AbstractClassDescription and AbstractNoPIOClassDescription should be used for abstract base classes, while NoPIOClassDescription and AbstractNoPIOClassDescription should be used for classes which do not have any members which need to be read and written persistently.
CLASS
ClassDescriptionBase:
CLASS
ClassDescriptionTBase:
CLASS
AbstractClassDescription:
CLASS
ClassDescription:
CLASS
NoPIOClassDescription:
CLASS
AbstractNoPIOClassDescription:
STRUCT
ClassDescriptionHelper
STRUCT
ClassDescriptionHelper<T,