"> Hmm - you clearly have never written an undo before. search on google: matju undo; the first result is: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12752 which hints that I may have written one on 17 March 2001... I think I'll need a vital piece of information to understand what you mean in this paragraph."
There is a big difference in undoing changes in a object network that undoing operations on an array.
For example say that I have a network of externals connected together and I decide to delete one of them
I place the object type and location on the undo stack and then I put its connections on the stack because they have also become deleted. And here comes my first problem - I can't use pointers to the objects my deleted object was connected to because those objects may be deleted and restored (thus changing any pointers) - so I need ways of representing the network that doesn't rely on the way it is currently stored in memory.
Secondly are you going to restore the states of externals? Should a sequence object be undeleted with its internal state intact or is it ok to throw that away (a less than perfect undo but probably the only realistic choice for PD)
There are many of these problems often requiring a lot more information to be added to your current internal representation.
Its not impossible obviously however it IS a non trivial task
mark