DIRECTORY BasicTime, Commander, IO, List, RedBlackTree, Rope, TimeStamp; MakeDo: CEDAR DEFINITIONS = BEGIN Warning: SIGNAL [message: ROPE]; Error: ERROR [message: ROPE]; ROPE: TYPE = Rope.ROPE; RopeList: TYPE = LIST OF ROPE; Stamp: TYPE = TimeStamp.Stamp; Table: TYPE = RedBlackTree.Table; PropList: TYPE = List.AList; Ensure: PROC [ch: Commander.Handle, what, otherModifiable: RopeList, guessBoundary, dontDo, assumeAllInconsistent: BOOL] RETURNS [nFailed, nSucceeded, nSteps: NAT, failedSteps: CommandList, cmds: ROPE]; Explain: PROC [ch: Commander.Handle, what: RopeList]; currentCommanderHandle: Commander.Handle; GetNode: PROC [name: ROPE] RETURNS [node: Node]; NodeList: TYPE = LIST OF Node; Node: TYPE = REF NodeRep; NodeRep: TYPE; PublicPartsOfNode: PROC [n: Node] RETURNS [name: ROPE, producer: Command, derivedCmds, consumers: CommandList, props: PropList]; SetProps: PROC [node: Node, props: PropList]; SetLatest: PROC [node: Node, latest: BasicTime.GMT]; Needed: PROC [node: Node] RETURNS [BOOL]; Exists: PROC [n: Node, u: UpdateTimeProc _ NIL] RETURNS [exists: BOOL]; Latest: PROC [n: Node, u: UpdateTimeProc _ NIL] RETURNS [t: BasicTime.GMT]; CommandList: TYPE = LIST OF Command; Command: TYPE = REF CommandRep; CommandRep: TYPE; PublicPartsOfCommand: PROC [c: Command] RETURNS [cmd: ROPE, makes, from: NodeList, foundData: REF ANY, needsToBeDone, failed: BOOL]; Finder: TYPE = RECORD [finderProc: FinderProc, finderData: REF ANY _ NIL]; FinderProc: TYPE = PROC [resultName: ROPE, finderData: REF ANY] RETURNS [found: BOOLEAN, sought: Node, makes, from, why: NodeList, cmd: ROPE, class: CommandClass, foundData: REF ANY]; CommandClass: TYPE = REF CommandClassRep; CommandClassRep: TYPE = RECORD [ NotCurrent: NotCurrentProc, Rederive: RederiveProc, UpdateTime: UpdateTimeProc, Explain: ExplainProc, classData: REF ANY _ NIL]; AddFinder: PROC [finder: Finder, end: End]; End: TYPE = {front, back}; NotCurrentProc: TYPE = PROC [c: Command] RETURNS [notCurrent: BOOLEAN]; RederiveProc: TYPE = PROC [c: Command] RETURNS [from: NodeList, cmd: ROPE]; UpdateTimeProc: TYPE = PROC [n: Node]; ExplainProc: TYPE = PROC [c: Command, to: IO.STREAM]; FileTime: UpdateTimeProc; Log: PROC [fmt: ROPE, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; END. ZMakeDo.Mesa Last Edited by: Spreitzer, April 8, 1985 4:23:45 pm PST Carl Hauser, April 11, 1985 3:34:27 pm PST Ensure that given derived files are up-to-date; recursively explores sources. IF dontDo, THEN don't actually execute the commands to bring things up-to-date, only return them in cmds ELSE cmds is returned empty. Explain why given files rederived or not. The current command; NIL if none. = {exists _ Latest[n, u] # BasicTime.nullGMT} = { IF n.timeValid THEN RETURN [n.latest]; (IF u = NIL THEN n.producer.class.UpdateTime ELSE u)[n]; IF NOT n.timeValid THEN ERROR; RETURN [n.latest]}; Κβ– "cedar" style˜Icode™ ™7K™*—K˜KšΟk œœ&˜HK˜KšΠbxœœ œ˜K˜Kš˜K˜KšΠblœœ œ˜ K˜KšŸœœ œ˜K˜Kšœœœ˜Kš œ œœœœ˜Kšœœ˜Kšœœ˜!Kšœ œ˜K˜š Οnœœgœœœ"œ˜ΚK™MKšœ…™…—K˜š œœ(˜5K™)—K˜šœ)˜)K™!—K˜Kš œœœœ˜0K˜Kšœ œœœ˜Kšœœœœ˜(K˜Kš œœ œœK˜€Kš œœ˜-Kš  œœ œ˜4Kš œœœœ˜)K˜š  œœœœ œ˜GKšœ-™-—K˜š  œœœœœ˜Kšœ™Kšœ œœ ™&Kš œœœœœ™8Kšœœ œœ™Kšœ ™——K˜Kšœ œœœ ˜$Kšœ œœœ˜1K˜Kš œœœœ$œœœ˜„K˜Kš œœœ&œœœ˜JK˜Kš  œœœœœœœ œ1œ"œœ˜·K˜Kšœœœ˜)šœœœ˜ Kšœ˜Kšœ˜K˜Kšœ˜Kšœ œœœ˜—K˜Kš  œœ˜+Kšœœ˜K˜Kš  œœœœœ˜GKš   œœœœœ˜KKš œœœ ˜&Kš   œœœœœ˜5K˜Kšœ˜K˜Kš œœœœ˜?K˜Kšœ˜—…—ΰ