<> <> <> <> <> DIRECTORY BasicLoadStateFormat USING [ConfigIndex, ModuleInfo], BcdDefs USING [BcdBase, EXPIndex, Link, MTHandle, MTIndex, MTNull], PrincOps USING [ControlLink, GFTIndex, GlobalFrameHandle, MaxNGfi], MB USING [BHandle, Handle], Rope USING [ROPE]; MBLoaderOps: CEDAR DEFINITIONS = BEGIN ConfigIndex: TYPE = BasicLoadStateFormat.ConfigIndex; ModuleInfo: TYPE = BasicLoadStateFormat.ModuleInfo; <> VirtualLinks: TYPE = LONG DESCRIPTOR FOR ARRAY OF BcdDefs.Link; RealLinksTable: TYPE = ARRAY [0..256) OF PrincOps.ControlLink; RealLinks: TYPE = REF RealLinksTable; FindFiles: PROC [loadee: MB.BHandle]; -- find code files FindCode: PROC [loadee: MB.BHandle]; -- load code into MBVM FileNotFound: SIGNAL [name: Rope.ROPE]; OpenLinkSpace: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle]; WriteLink: PROC [offset: CARDINAL, link: PrincOps.ControlLink]; ReadLink: PROC [offset: CARDINAL] RETURNS [link: PrincOps.ControlLink]; CloseLinkSpace: PROC; WriteLinks: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle, links: RealLinks]; LinkFragLength: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle] RETURNS [nLinks: CARDINAL]; GetVirtualLinks: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle] RETURNS [virtualLinks: VirtualLinks]; ProcessUnboundImports: PROC; <> InitLoaderCore: PROC [h: MB.Handle]; FinishLoaderCore: PROC; <> InitLoaderExtra: PROC [h: MB.Handle]; FinishLoaderExtra: PROC; Bind: PROC [loadee: MB.BHandle, config: ConfigIndex]; VersionMismatch: SIGNAL [interface, ref1, ref2: Rope.ROPE]; <> Binding: TYPE = REF BindingRecord; BindingRecord: TYPE = RECORD [ bias: PrincOps.GFTIndex, -- = bcd.firstdummy b: SEQUENCE n: --import gfi-- CARDINAL OF BindLink ]; BindLink: TYPE = RECORD [ whichgfi: [0..PrincOps.MaxNGfi), body: SELECT type: * FROM interface => [eti: BcdDefs.EXPIndex], module => [mti: BcdDefs.MTIndex], notbound => NULL, ENDCASE ]; InitLoadState: PROC [h: MB.Handle]; FinishLoadState: PROC; InputLoadState: PROC RETURNS [nbcds: ConfigIndex]; UpdateLoadState: PROC [config: ConfigIndex, handle: MB.BHandle]; WriteLoadState: PROC; < ) management>> EnterModule: PROC [ rgfi: PrincOps.GFTIndex, module: ModuleInfo, mti: BcdDefs.MTIndex _ BcdDefs.MTNull]; GetModule: PROC [rgfi: PrincOps.GFTIndex] RETURNS [module: ModuleInfo]; AcquireBcd: PROC [config: ConfigIndex] RETURNS [handle: MB.BHandle]; InitBinding: PROC [bcd: BcdDefs.BcdBase] RETURNS [binding: Binding]; BcdUnresolved: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN]; BcdExports: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN]; BcdExportsTypes: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN]; <> GetNextGFI: PROC [reserve: CARDINAL] RETURNS [next: PrincOps.GFTIndex]; SetGFTEntry: PROC [ frame: PrincOps.GlobalFrameHandle, gfi: PrincOps.GFTIndex, ngfi: CARDINAL]; <> EnumerationDirection: TYPE = {recentfirst, recentlast}; EnumerateModules: PROC [ proc: PROC [rgfi: PrincOps.GFTIndex, module: ModuleInfo] RETURNS [BOOLEAN]] RETURNS [PrincOps.GFTIndex]; EnumerateBcds: PROC [ dir: EnumerationDirection, proc: PROC [ConfigIndex] RETURNS [BOOLEAN]] RETURNS [config: ConfigIndex]; END.