Dave Harris wrote: >> Me: I'm not sure what kind of generic versioning we can provide. >> What benefit do we provide over the application author >> serializing/deserializing his or her own version? > >Java does quite a lot in this line. It has enough metadata available, >both of the running program and in the archive, to be able to detect >missing or surplus fields, changes in inheritance hierarchy etc, and >fix them up. Many tagged formats (including XML and RTF) are designed >to allow unexpected or unknown fields to be skipped during loading.
Formats that archive meta-data could, at thier option, provide some intelligence to handle meta-data mismatches. I like that. Not all formats will store meta data, though. What will any framework ever be able to do when you try and load a v2.3 class into a v3.2 class? 2.3 and 3.2 mean nothing to the framework, except they're different, so you can generate an error. This just occurred to me: maybe versioning should be left up to the formats rather than being part of the framework? Once a couple of formats are written that use meta-data, maybe we'll find common version matching/recovery code that can be factored out. <snip> >This would mean reading all the data in advance and storing it in some >kind of tree structure. The UDT code shown would actually traverse the >tree and use random access at each node. Not all mediums would be able to support non-serial behavior, forcing you to cache it in memory as you suggest. I think the answer would be to serialize/deserialize your tree structure, and then initialize your objects from the tree. Maybe this would be a good example usage of a serialization library? At any rate, the logic for recovering from meta-data mismatches is part of this tree, not intrinsic to serialization. Cheers- Augustus __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost