Hi, The macro is useful, I agree with that.
What we should keep in mind is that we should not abuse do-versions so much. It's currently being flooded with node patches, and in my perception most of these just aren't needed. Design of .blend data can be done in a careful way, keeping for/backwards compatibility work, and just code functionality updates to be handled where this is being used. The example I mailed yesterday (missing node->storage for translate node) is a good case, it's not depending on any versioning, it's just about upgrading the spec to always have such a struct. You can do that in direct-link, or better: in the code accessing the data. My only objection is not the macro in itself, but by making it even easier to add version hacks. I would rather see this used with an absolute mininum. So: before adding a versioning patch: consult at least some others to check if it's really needed, and if you can avoid it by smarter design. -Ton- ------------------------------------------------------------------------ Ton Roosendaal Blender Foundation [email protected] www.blender.org Blender Institute Entrepotdok 57A 1018AD Amsterdam The Netherlands On 8 Feb, 2013, at 10:38, Lukas Tönne wrote: > I propose to introduce a C macro for use in readfile.c to clean up the > frequent node tree do_versions mess. Currently whenever we need to > iterate over all node trees in the library data we have to either make > a number of repetitive bloated loops and/or use callbacks outside the > actual do_versions function. Here's an example of one of my own fixes: > > http://www.pasteall.org/39515/c > > As you can see the loops in do_versions and the actual fix in the > callback are spaced far apart and to figure out what is going on you > have to jump around in this monster file quite a lot. Furthermore > since we have node trees in 6 different ID data blocks currently it > requires looping over all these blocks to iterate all potential node > trees. > > This macro would help make the code localized to just a few lines like > most of the other do_versions code and keep things much more readable: > > http://www.pasteall.org/39514/c > > The macro automatically loops over all existing node trees with a > single inner code block, so you don't have to repeat the same code > over and over. If necessary it can be filtered easily by checking the > node tree type. A minor overhead for looping over unused node trees > would be added, but that should be nowhere near significant. > > Using it for the example above boils it down to: > > http://www.pasteall.org/39516/c > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
