-- Copyright 1993-1998, by the Cecil Project -- Department of Computer Science and Engineering, University of Washington -- See the LICENSE file for license information. -- a simple identity table that tracks which collections are currently being -- iterated through using *_allowing_updates. concrete object allowing_updates isa identity_assoc_table[any, int]; method begin_allowing_updates(t@:allowing_updates, table:any):void { t!table := t.fetch(table, { 0 }).succ; } method done_allowing_updates(t@:allowing_updates, table:any):void { let count:int := (t!table).pred; if(count = 0, { t.remove_key(table); }, { t!table := count; }); } method updates_allowed(t@:allowing_updates, table:any):bool { t.includes_key(table) }