[categories] [index] [all (553)] [latest]
/call { exch begin load exec end } def
/undoManager 10 dict def
undoManager begin
/MAX 3 def
/ringBuffer MAX array def
/head 0 def
/print { ringBuffer == } def
/do {
ringBuffer head 3 -1 roll put
/head head 1 add MAX mod def
} def
/reset { /ringBuffer MAX array def } def
/undo {
/head head 0 eq { MAX 1 sub } { head 1 sub } ifelse def
ringBuffer head get % result
ringBuffer head null put
} def
end
3 undoManager /do call
4 undoManager /do call
5 undoManager /do call
6 undoManager /do call
undoManager /print call
[6 4 5]
undoManager /undo call ==
6
undoManager /print call
[null 4 5]