Inherited by AbstractEvolvable
[virtual], and EvolvablePortableObject
List of all members.
An Evolvable class has an integer version identifier
n >= 0. When the contents and/or semantics of the serialized form of the Evolvable class changes, the version identifier is increased. Two versions identifiers,
n2, indicate the same version iff
n1 == n2; the version indicated by
n2 is newer than the version indicated by
n2 > n1.
The Evolvable interface is designed to support the evolution of classes by the addition of data. Removal of data cannot be safely accomplished as long as a previous version of the class exists that relies on that data. Modifications to the structure or semantics of data from previous versions likewise cannot be safely accomplished as long as a previous version of the class exists that relies on the previous structure or semantics of the data.
When an Evolvable is deserialized, it retains any unknown data that has been added to newer versions of the class, and the version identifier for that data format. When the Evolvable is subsequently serialized, it includes both that version identifier and the unknown future data.
When an Evolvable is deserialized from a data stream whose version identifier indicates an older version, it must default and/or calculate the values for any data fields and properties that have been added since that older version. When the Evolvable is subsequently serialized, it includes its own version identifier and all of its data. Note that there will be no unknown future data in this case; future data can only exist when the version of the data stream is newer than the version of the Evolvable class.
|Evolvable Handle definition.|
|Evolvable View definition.|
|Evolvable Holder definition.|
|Binary View definition.|
Public Member Functions
|virtual int32_t||getImplVersion () const =0|
|Determine the serialization version supported by the implementing class.|
|virtual int32_t||getDataVersion () const =0|
|Obtain the version associated with the data stream from which this Evolvable was deserialized.|
|virtual void||setDataVersion (int32_t nVersion)=0|
|Set the version associated with the data stream with which this Evolvable is being deserialized.|
|virtual BinaryView||getFutureData () const =0|
|Return all the unknown remainder of the data stream from which this Evolvable was deserialized.|
|virtual void||setFutureData (BinaryView vBinFuture)=0|
|Store the unknown remainder of the data stream from which this Evolvable is being deserialized.|
|virtual int32_t getImplVersion||(||)|| const
|virtual int32_t getDataVersion||(||)|| const
Obtain the version associated with the data stream from which this Evolvable was deserialized.
If the Object was constructed (not deserialized), the data version is the same as the implementation version.
Implemented in AbstractEvolvable.
|virtual void setDataVersion||(||int32_t||nVersion||)||
|virtual BinaryView getFutureData||(||)|| const
|virtual void setFutureData||(||BinaryView||vBinFuture||)||
Store the unknown remainder of the data stream from which this Evolvable is being deserialized.
The remainder is unknown because it is data that was originally written by a future version of this Evolvable's class.
|vBinFuture||future data in binary form|