DIRECTORY BasicTime; CodeTimerConcrete: CEDAR DEFINITIONS = BEGIN Table: TYPE = REF TableObj; TableObj: TYPE = RECORD [ name: ATOM, -- the name of table processes: LIST OF ProcessPair -- [a pseudo-interval which is the "current" interval when no real interval is being executed, the most recently entered interval that has not yet been exited] ]; ProcessPair: TYPE = REF ProcessPairObj; ProcessPairObj: TYPE = RECORD [ outer, current: IntervalInContext, process: PROCESS ]; IntervalInContext: TYPE = REF IntervalInContextObj; IntervalInContextObj: TYPE = RECORD [ name: ATOM, -- name of the interval to which this IntervalInContext belongs starts, stops, prematureStops: CARD ¬ 0, prematureStopName: ATOM ¬ NIL, startTime: BasicTime.Pulses ¬ 0, totalTime: BasicTime.Pulses ¬ 0, maxTime: BasicTime.Pulses ¬ 0, maxIndex: CARD ¬ 0, minTime: BasicTime.Pulses ¬ LAST[LONG CARDINAL], children: LIST OF IntervalInContext, -- intervals that were started when this interval was table.current parent: IntervalInContext ¬ NIL ]; END. Ζ CodeTimerConcrete.mesa Copyright Σ 1988, 1992 by Xerox Corporation. All rights reserved. Bier, February 3, 1992 2:47 pm PST Contents: The real definitions of the types Table and Interval. Κ¦•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ6™BKšœ"™"Kšœ@™@K™—šΟk ˜ Kšœ ˜ —K˜Kšœžœž œž˜,K˜Kšœžœžœ ˜šœ žœžœ˜KšœžœΟc˜ Kšœ žœžœ ŸŸ˜ΎK˜K˜—Kšœ žœžœ˜'šœžœžœ˜Kšœ"˜"Kšœ ž˜K˜K˜—Kšœžœžœ˜3šœžœžœ˜%KšœžœŸ?˜KKšœžœ˜(Kšœžœžœ˜K˜ K˜ K˜Kšœ žœ˜Kšœžœžœžœ˜0Kšœ žœžœŸC˜hKšœž˜K˜—K˜Kšžœ˜K˜—…—r