-- Copyright (C) 1986 by Xerox Corporation. All rights reserved. -- StartState.mesa -- NFS 30-Jan-86 11:08:35 DIRECTORY CString USING [CString], MFile USING [Handle, Object], MLoader USING [Handle, Object], Stream USING [Handle]; StartState: DEFINITIONS = { Handle: TYPE = LONG POINTER TO Object; Object: TYPE; EnumerateProc: TYPE = PROCEDURE [ssh: Handle, mh: MLoader.Handle] RETURNS [continue: BOOLEAN ← TRUE]; normalOutcome: INTEGER = 0; abortOutcome: INTEGER = -1; zone: UNCOUNTED ZONE; -- StartOrRestart, Start and Restart return the value normalOutcome -- unless CRuntime.Exit or CRuntime.Abort are called. -- If CRuntime.Exit is called, then the value -- passed to Exit is returned. If CRuntime.Abort is called, -- then it returns abortOutcome. -- StartOrRestart can raise the error LoadError or the signal VersionMismatch. StartOrRestart: PROCEDURE [ file: MFile.Handle, argc: CARDINAL, argv: LONG POINTER TO CString.CString, stdin, stdout, stderr: Stream.Handle] RETURNS [outcome: INTEGER]; -- GetHandle is used to acquire a Handle to pass to Load, Start, and Restart. GetHandle: PROCEDURE [file: MFile.Handle] RETURNS [h: Handle, canRestart: BOOLEAN]; -- Load can raise the error LoadError or the signal VersionMismatch. Load: PROCEDURE [h: Handle, fh: MFile.Handle]; Start: PROCEDURE [ h: Handle, argc: CARDINAL, argv: LONG POINTER TO CString.CString, stdin, stdout, stderr: Stream.Handle] RETURNS [outcome: INTEGER]; Restart: PROCEDURE [ h: Handle, argc: CARDINAL, argv: LONG POINTER TO CString.CString, stdin, stdout, stderr: Stream.Handle] RETURNS [outcome: INTEGER]; <<Unload, UnloadFromFile, and UnloadUnstartedProgram can raise the error UnloadError.>> Unload: PROCEDURE [h: MLoader.Handle]; UnloadFromFile: PROCEDURE [file: MFile.Handle] RETURNS [instancesUnloaded: CARDINAL]; UnloadUnstartedProgram: PROCEDURE [h: Handle]; EnumerateHandles: PROCEDURE [file: MFile.Handle, proc: EnumerateProc]; GetLoadHandle: PROCEDURE [h: Handle] RETURNS [MLoader.Handle]; SetLoadHandle: PROCEDURE [h: Handle, lh: MLoader.Handle]; LoadError: ERROR [message: LONG STRING]; VersionMismatch: SIGNAL [module: LONG STRING]; UnloadError: ERROR [message: LONG STRING, instancesAlreadyUnloaded: CARDINAL]; }.