<> <> <> <<>> DIRECTORY IMSTester; IMSTesterImpl: CEDAR PROGRAM IMPORTS EXPORTS IMSTester = BEGIN OPEN IMSTester; slotForceMap: PUBLIC SlotMap _ NEW[SlotMapRec[LAST[Slot]+1]]; slotAcquireMap: PUBLIC SlotMap _ NEW[SlotMapRec[LAST[Slot]+1]]; forceBuffer: PUBLIC ForceBuffer _ NEW[ForceBufferRec[LAST[Sequence]+1]]; inhibitBuffer: PUBLIC ForceBuffer _ NEW[ForceBufferRec[LAST[Sequence]+1]]; acquireBuffer: PUBLIC AcquireBuffer _ NEW[AcquireBufferRec[LAST[Sequence]+1]]; SlotList: TYPE = LIST OF Slot; forceCards: SlotList _ LIST[1,2,3]; acquireCards: SlotList _ LIST[4,5,6]; Init: PROC = { InitMap[cards: forceCards, map: slotForceMap, lastBuffer: LAST[ForceCard]]; InitMap[cards: acquireCards, map: slotAcquireMap, lastBuffer: LAST[AcquireCard]]; FOR buffer: Sequence IN Sequence DO forceBuffer[buffer] _ NEW[ForceDataRec]; inhibitBuffer[buffer] _ NEW[ForceDataRec]; acquireBuffer[buffer] _ NEW[AcquireDataRec]; ENDLOOP; }; InitMap: PROC [cards: SlotList, map: SlotMap, lastBuffer: NAT] = { buffer: NAT _ 0; FOR slots: SlotList _ cards, slots.rest UNTIL slots=NIL DO IF buffer>lastBuffer THEN ERROR; map[slots.first] _ buffer; buffer _ buffer + 1; ENDLOOP; }; Init[]; END.