Making the hdf5 Reader forward and backward compatible


My project requires me to have forward and backward compatibility for
the hdf5 files written out across different versions of the application
. I am aware that hdf5 read does support compatibility to a certain
extent . i.e.

If I have a structure say S1

Struct S1

int a;

double b;

long c;


in one version( say V1) of application . and the next version of the
application removes the variable c from the structure , hdf5Read will be
able to identify if the variable c needs to be Read in that particular
version . This also holds good if another variable is added to S1 ( in
the new version ) .

This is a case where in the structure changes marginally . What if the
structure changes completely

Say in the next version( V2) S1 is defined as below

Struct S1


     float a;

     char* b;


In this case is the hdf5 file Created by V1 of the application will have
S1 different from what is expected by version V2 . Hd5 Read will not be
handling this implicitly .

One of the methods I have though of is :

The structure will have a default value associated with all its data
members . When a structure is being Read , instead of Reading the
structure as a whole data members will be Read individually . On failure
of Read of any data member , the default value ( predefined for the
application) will be used .

Queries - What are the implications of such Read on the performance ?

Can anyone suggest some other approach that can be followed .

Thanks and Regards