<> <> <> <> <> <> <> <<>> DIRECTORY BcdDefs USING [BcdBase, ModuleIndex, MTIndex, NullModule], PrincOps USING [GlobalFrameHandle, EPIndex, ControlLink], SafeStorage USING [nullType, Type]; LoadState: DEFINITIONS = BEGIN <> Handle: TYPE = REF Object; Object: TYPE; Access: TYPE = {shared, exclusive}; ConfigID: TYPE[1]; nullConfig: READONLY ConfigID; ModuleIndex: TYPE = BcdDefs.ModuleIndex; nullModule: ModuleIndex = BcdDefs.NullModule; <> BcdBase: TYPE = BcdDefs.BcdBase; Type: TYPE = SafeStorage.Type; nullType: Type = SafeStorage.nullType; GlobalFrameHandle: TYPE = PrincOps.GlobalFrameHandle; CopiesList: TYPE = LIST OF GlobalFrameHandle; <> <> local: READONLY Handle; <> Acquire: PROC [loadState: Handle, access: Access _ shared]; <> Release: PROC [loadState: Handle, commit: BOOL _ TRUE]; <> <<>> <> <> <<>> ConfigInfo: PROC [loadState: Handle, config: ConfigID] RETURNS [bcd: BcdBase, ref: REF ANY]; GetChangeCount: PROC [loadState: LoadState.Handle] RETURNS [INT]; ModuleInfo: PROC [loadState: Handle, config: ConfigID, module: ModuleIndex] RETURNS [ gfh: GlobalFrameHandle, mti: BcdDefs.MTIndex, type: Type, copies: CopiesList -- NIL if no copies exist ]; GlobalFrameToModule: PROC [loadState: Handle, gfh: GlobalFrameHandle] RETURNS [config: ConfigID, module: ModuleIndex]; GlobalFrameToType: PROC [loadState: Handle, gfh: GlobalFrameHandle] RETURNS [type: Type] = INLINE { config: ConfigID; module: ModuleIndex; [config, module] _ GlobalFrameToModule[loadState, gfh]; RETURN[ModuleInfo[loadState, config, module].type] }; ModuleToGlobalFrame: PROC [loadState: Handle, config: ConfigID, module: ModuleIndex] RETURNS [gfh: GlobalFrameHandle] = INLINE { RETURN[ModuleInfo[loadState, config, module].gfh] }; BuildProcDescUsingModule: PROC [ loadState: Handle, config: ConfigID, module: ModuleIndex, ep: PrincOps.EPIndex] RETURNS [PrincOps.ControlLink]; <> BuildProcDescUsingGlobalFrame: PROC [ loadState: Handle, gfh: GlobalFrameHandle, ep: NAT] RETURNS [PrincOps.ControlLink]; <> <> <> LoadStateFull: ERROR; <> NewConfig: PROC [loadState: Handle, bcd: BcdBase, ref: REF ANY] RETURNS [ConfigID]; <> SetGlobalFrame: PROC [ loadState: Handle, config: ConfigID, module: ModuleIndex, gfh: GlobalFrameHandle]; <> SetType: PROC [loadState: Handle, gfh: GlobalFrameHandle, type: Type]; <> CopyNew: PROC [loadState: Handle, old: PROGRAM] RETURNS [new: PROGRAM]; <> UnNew: UNSAFE PROC [loadState: Handle, program: PROGRAM]; <> SelfDestruct: UNSAFE PROC; <> <<>> <> <> EnumerationOrder: TYPE = {newestFirst, oldestFirst}; EnumerateConfigs: PROC [ loadState: Handle, order: EnumerationOrder, proc: PROC [ConfigID] RETURNS [--stop:--BOOL]] RETURNS [config: ConfigID]; <> EnumerateModulesInConfig: PROC [ loadState: Handle, config: ConfigID, proc: PROC [ModuleIndex] RETURNS [--stop:--BOOL]] RETURNS [module: ModuleIndex, gfh: GlobalFrameHandle]; <> EnumerateAllModules: PROC [ loadState: Handle, order: EnumerationOrder, proc: PROC [ConfigID, ModuleIndex] RETURNS [--stop:--BOOL]] RETURNS [config: ConfigID, module: ModuleIndex]; <> END.