<> <> <> <<>> DIRECTORY DragOpsCross USING [Word, OnesWord, ZerosWord], IO; <<>> DM: CEDAR DEFINITIONS = BEGIN Word: TYPE = DragOpsCross.Word; ZerosWord: Word = DragOpsCross.ZerosWord; OnesWord: Word = DragOpsCross.OnesWord; ActionProc: TYPE = PROC [component: Component]; Action: TYPE = {Reset, PhA, EvPhA, PhB, EvPhB}; Component: TYPE = REF ComponentRec; ComponentRec: TYPE = RECORD [ action: ARRAY Action OF ActionProc, history: LIST OF HistoryElement, componentType: ATOM, subComponents: ComponentList, specific: REF ANY ]; ComponentList: TYPE = LIST OF Component; HistoryElement: TYPE = REF HistoryElementRec; HistoryElementRec: TYPE = RECORD [ phase: Action, data: REF ANY ]; Apply: PUBLIC PROC [component: DM.Component, action: DM.Action]; ListApply: PUBLIC PROC [componentList: DM.ComponentList, action: DM.Action]; ConsHistory: PUBLIC PROC [phase: Action, data: REF ANY, history: LIST OF HistoryElement] RETURNS [newHistory: LIST OF HistoryElement]; PrintHistory: PUBLIC PROC [c: DM.Component, out: IO.STREAM]; END. <<>> <<>>