-- RandomCodeRandomProcedures.mesa last edited by Sturgis: October 8, 1984 10:41:44 am PDT DIRECTORY IO USING[STREAM], RandomCodeRandom USING[RandomState], RandomCodeTypes USING[SeqType, TypeSet], Rope USING[ROPE]; RandomCodeRandomProcedures: CEDAR DEFINITIONS = BEGIN OPEN RandomCodeRandom, RandomCodeTypes; ProcedureBody: TYPE = REF ProcedureBodyData; ProcedureBodyData: TYPE; GenerateRandomProcedure: PROCEDURE[allowedArgs, possibleResults: SeqType, typeSet: TypeSet, randomState: RandomState] RETURNS[ProcedureBody, INT]; TypeCheckProcedure: PROCEDURE[ProcedureBody]; -- type checks all arcs of all nodes reachable from the entry node of the procedure AssignRelativeProcedureNodeAddresses: PROCEDURE[procedure: ProcedureBody] RETURNS[size: INT]; -- may have to install some extra jumps, or modify some conditional jumps TearDownProcedure: PROCEDURE[ProcedureBody]; PrintProcedureGraph: PROCEDURE[title: Rope.ROPE, procedure: ProcedureBody, on: IO.STREAM]; GenProcedureBytes: PUBLIC PROCEDURE[procedure: ProcedureBody, oneByte: PROCEDURE[[0..255]]]; END. MODULE HISTORY Initial by: Sturgis, October 8, 1984 10:42:30 am PDT, from RandomCodeInternal