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
];
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;