<> <> <> <> <> DIRECTORY CD, CDBasics, Core, CoreGeometry, SinixIntervals; SinixD2Intervals: CEDAR DEFINITIONS = BEGIN Rect: TYPE = CD.Rect; universe: Rect = CDBasics.universe; empty: Rect = CDBasics.empty; Table: TYPE = REF TableRec; TableRec: TYPE = MONITORED RECORD [ range: Rect, -- given at creation time, it retains the range of all rects. Clients should not change this field. leafBuckets: PRIVATE NAT, -- private field to detect when ReHashing is necessary. data: PRIVATE REF TableData ]; TableData: PRIVATE TYPE = RECORD [c: SEQUENCE hashSize: NAT OF SinixIntervals.Table]; Create: PROC [range: Rect, logHashSize: NAT _ 2] RETURNS [Table]; <> Insert: PROC [table: Table, instance: CoreGeometry.Instance, wire: Core.Wire]; <> <> <> <> Enumerate: PROC [table: Table, action: PROC [CoreGeometry.Instance, Core.Wire], rect: Rect _ universe]; <> <> <> <> <> DeleteOutside: PROC [table: Table, rect: Rect]; <> <> <> <> <> END.