Storing History for Reprocessing a Wave

I have been working with an image analysis program that stores and displays incremental processing steps and automatically redoes the entire downstream cascade of processes when a user goes back and changes something at a given point in the previous processing. I am wondering how this might be done within Igor Pro.

My first thought is to store information in the wave note in XML format. For example, a call from within My Package to a function

RemoveABaseline(how,region,[extrapolate]) variable how, region, extraplote

with parameters set within the function to be equivalent to how = "linear", region = "within cursors", and extrapolate= "outside" might produce the following in the wave note

<operation><log date="date" time="time" /> <package>My Package</package> <function>RemoveABaseline</function> <parameters><how>linear</how><region>within cursors</region></parameters> <optional><extrapolate>outside</extrapolate></optional> <notes>baseline removed between points 23 and 45 and extrapolated outside range</notes> </operation>

Supposedly, given a standard template, a history aware function could readily store, retrieve, and change its appropriate wavenote information. All then that would be needed is a meta-history processing function to re-run the wave operations. For example, in this case, the RemoveABaseline(...) function could have an equivalent RXML_RemoveABaseline(strhow,strregion,[strextrapolate]) that would be called by the meta-processor.

What do folks think?
Knowing that replying to my own note is perhaps not kosher, but ...

I decided to produce a way to have the format of the template open for users to develop. See the information starting at version 0.2 of XMLNoteTools found here.

J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH