<<>> <> <> <> DIRECTORY Vector; QuadTree: CEDAR DEFINITIONS = BEGIN BoundingBox: TYPE = RECORD[lowerLeft, upperRight: Vector.VEC]; InternalVEC: TYPE = RECORD[x, y: CARDINAL]; InternalBoundingBox: TYPE = RECORD[lowerLeft, upperRight: InternalVEC]; QT: TYPE = REF QTRec; QTRec: TYPE; QTItem: TYPE = REF QTItemRec; QTItemRec: TYPE = RECORD [ size: InternalBoundingBox, data: REF ANY ]; Create: PROC [universe: BoundingBox] RETURNS [tree: QT]; <> Insert: PROC [tree: QT, itemSize: BoundingBox, itemData: REF ANY, locked: BOOL ¬ FALSE]; <> PerItemProc: TYPE = PROC [item: QTItem] RETURNS [quit: BOOLEAN ¬ FALSE]; <> Enumerate: PROC [tree: QT, region: BoundingBox, PerItem: PerItemProc, quanta: CARD ¬ LAST[CARD], locked: BOOL ¬ FALSE]; <> Destroy: PROC [tree: QT, PerItem: PerItemProc ¬ NIL]; <> <<>> <<>> <<. . . Locking . . .>> <<>> <> END.