Hi,

I'd like to build some insurance into my XML files.  If there is some sort of problem in the future (either with boost, or my application), I'd like to be able to hand-edit the serialized XML archive files.   Even better would be to allow XML-tools to manipulate a batch of the XML files, but one thing at a time.

One big problem with the current XML format is that the
 class_id="3" tracking_level="0" version="0" preamble is only included the FIRST time a class is dumped to the file.

Example:
<brother class_id="3" tracking_level="0" version="2">
.. etc, and then later in the file ...
<sister>
... etc ...

If something happened (eg impossible-to-upgrade-format-change) and I needed to manually move the <sister> item above the <brother> item (maybe into a different branch of tags), then I would need to KNOW that the brother class is the same as the sister class (which is not obvious) AND move the preamble into the sister tag.

I would also need to re-number all the class_ids, but those appear to be only used if I'm tracking a pointer AND I have multiple instances of that pointer in the file.   If the item is not a pointer, it looks like the class_id is *always* thrown away.


So, I'm thinking of:
a) never allow tracking (its a compromise to give me the next item)
b) never writing out class_id or tracking_level
c) always writing out the version

the result would look like this:
<brother version="2">
.. etc, and then later in the file ...
<sister version="2">

That way items in the XML file could be rearranged by hand and I would not need to do the difficult task of adjusting the tag attributes.

Does this sound sensible?


I had a look into inheriting and creating my own archive, but it appears all of the changes required happen in the basic_oarchive_impl, which seems pretty fundamental and hard to override.
Will I need to create and maintain my own patch in order to "hack" this change.

Thanks,
Paul