<<>> <> <> <> <<>> <> <<>> DIRECTORY Druid, IO, BasicTime, BreakWorldArchitecture, Rope, SameBreakWorld, VTables; DruidTool: CEDAR DEFINITIONS ~ { Handle: TYPE ~ REF HandleRep ¬ nullHandle; HandleRep: TYPE ~ MONITORED RECORD [ vTable: VTables.VTable, sameBreakWorld: SameBreakWorld.Handle ¬ SameBreakWorld.nullHandle, feedbackStream: IO.STREAM ¬ NIL, rows: CARD, rowData: RowData ¬ nullRowData, changed: BOOLEAN ¬ FALSE, timeCondition: CONDITION, samplePulses: BasicTime.Pulses, summaryStream: IO.STREAM ¬ NIL, summaryTime: BasicTime.GMT ¬ BasicTime.nullGMT, title: Rope.ROPE ¬ NIL ]; nullHandle: Handle ~ NIL; RowData: TYPE ~ REF RowDataRep ¬ nullRowData; RowDataRep: TYPE ~ RECORD [ next: RowData ¬ nullRowData, count: CARD ¬ 0, text: Rope.ROPE ¬ NIL, feedbackStream: IO.STREAM ¬ NIL, details: SELECT kind: RowKind FROM counter => [ megalith: Druid.Megalith ¬ Druid.nullMegalith, file: Rope.ROPE ¬ NIL, label: Rope.ROPE ¬ NIL, position: CARD ¬ 0, correspondingPosition: CARD ¬ 0 ], subtotal => [ active: BOOLEAN ¬ TRUE ], ENDCASE ]; RowKind: TYPE ~ { counter, subtotal }; CounterRow: TYPE ~ REF CounterRowRep ¬ nullCounterRow; CounterRowRep: TYPE ~ RowDataRep.counter; nullCounterRow: CounterRow ~ NIL; SubtotalRow: TYPE ~ REF SubtotalRowRep ¬ nullSubtotalRow; SubtotalRowRep: TYPE ~ RowDataRep.subtotal; nullSubtotalRow: SubtotalRow ~ NIL; nullRowData: RowData ~ NIL; }.