<> <> <> <> DIRECTORY Pipal, PipalInt; PipalInstanceTable: CEDAR DEFINITIONS = BEGIN Value: TYPE = REF; Table: TYPE = REF TableRec; TableRec: PRIVATE TYPE = MONITORED RECORD [ rect: PipalInt.Rectangle, -- given at creation time, it retains the bbox of all rects. Clients should not change this field. leafBuckets: NAT, -- private field to detect when ReHashing is necessary. data: REF TableData ]; TableData: PRIVATE TYPE = RECORD [SEQUENCE size: NAT OF LIST OF InstanceValue]; InstanceValue: PRIVATE TYPE = RECORD [trans: PipalInt.Transformation, object: Pipal.Object, value: Value]; Create: PROC [rect: PipalInt.Rectangle, logSize: NAT _ 2] RETURNS [Table]; <> Insert: PROC [table: Table, trans: PipalInt.Transformation, object: Pipal.Object, value: Value]; <> <> <> <> Enumerate: PROC [table: Table, action: PROC [PipalInt.Transformation, Pipal.Object, Value], rect: PipalInt.Rectangle _ PipalInt.fullRectangle]; <> <> <> DeleteOutside: PROC [table: Table, rect: PipalInt.Rectangle _ PipalInt.emptyRectangle]; <> <> <> <> END.