-- PilotLoadStateOps.mesa
-- Last Modified by McJones,  April 23, 1980  5:04 PM 
-- Last Modified by Paul Rovner,  May 6, 1982 12:19 pm 

DIRECTORY
  BcdOps: FROM "BcdOps" USING [BcdBase],
  PilotLoadStateFormat: FROM "PilotLoadStateFormat" USING [
    ConfigIndex, ModuleInfo, NullConfig],
  PrincOps: FROM "PrincOps" USING [GFTIndex];

PilotLoadStateOps: DEFINITIONS =

  BEGIN OPEN PrincOps, PilotLoadStateFormat;

  ConfigIndex: TYPE = PilotLoadStateFormat.ConfigIndex;
    NullConfig: ConfigIndex = PilotLoadStateFormat.NullConfig;

  MapConfigToReal: PROC[cgfi: GFTIndex, config: ConfigIndex]
    RETURNS [rgfi: GFTIndex];
  MapRealToConfig: PROC[rgfi: GFTIndex]
    RETURNS [cgfi: GFTIndex, config: ConfigIndex];
  EnterModule: PROC[rgfi: GFTIndex, module: ModuleInfo];
  GetModule: PROC[rgfi: GFTIndex] RETURNS [module: ModuleInfo];

  Map: TYPE = DESCRIPTOR FOR ARRAY OF GFTIndex;

  GetMap: PROC[config: ConfigIndex] RETURNS [map: Map];
  ReleaseMap: PROC[map: Map];

  InputLoadState: PROC RETURNS [nbcds: ConfigIndex];
  ReleaseLoadState: PROC;
  UpdateLoadState: PROC[config: ConfigIndex, bcd: BcdOps.BcdBase];
  RemoveConfig: PROC[map: Map, config: ConfigIndex];

  LoadStateInvalid: ERROR;
  LoadStateFull: ERROR;

  AcquireBcd: PROC[config: ConfigIndex] RETURNS [bcd: BcdOps.BcdBase];
  ReleaseBcd: PROC[bcd: BcdOps.BcdBase];
  BcdUnresolved: PROC[bcd: ConfigIndex] RETURNS [BOOLEAN];
  BcdExports: PROC[bcd: ConfigIndex] RETURNS [BOOLEAN];
  BcdExportsTypes: PROC[bcd: ConfigIndex] RETURNS [BOOLEAN];

  EnumerationDirection: TYPE = {recentfirst, recentlast};

  EnumerateModules: PROC[
    proc: PROC[rgfi: GFTIndex, module: ModuleInfo] RETURNS [BOOLEAN]]
    RETURNS [GFTIndex];
  EnumerateBcds: PROC[dir: EnumerationDirection,
    proc: PROC[ConfigIndex] RETURNS [BOOLEAN]]
    RETURNS [config: ConfigIndex];

  SetLoadState: PROC[newState: LONG POINTER];

END.