<> <> <> DIRECTORY BasicTime: TYPE USING [GMT], IO: TYPE USING [STREAM], Rope: TYPE USING [ROPE], SMProj: TYPE USING [Proj], SMTree: TYPE Tree USING [Link], SMTreeOps: TYPE TreeOps USING [TM]; SMLDriver: CEDAR DEFINITIONS~{ OPEN Tree~~SMTree, TreeOps~~SMTreeOps; <> LS: TYPE~REF LoaderState; LoaderState: TYPE; <> Create: PROC[z: ZONE, tm: TreeOps.TM, out: IO.STREAM] RETURNS[LS]; Loaded: PROC[ls: LS] RETURNS[BOOL]; LoadAndBind: PROC[ls: LS, root: Tree.Link, wDir: Rope.ROPE, replace: BOOL] RETURNS[errors: BOOL]; Started: PROC[ls: LS] RETURNS[BOOL]; StartAll: PROC[ls: LS, root: Tree.Link]; Unload: PROC[ls: LS, root: Tree.Link, unloadTheBcd: BOOL]; LoadInfo: TYPE~REF LoadInfoRecord; LoadInfoRecord: TYPE; LoadedModule: PROC[info: LoadInfo] RETURNS[BOOL]; <> Bind: PROC[ name: Rope.ROPE, stamp: BasicTime.GMT, root: Tree.Link, z: ZONE, tm: TreeOps.TM, out: IO.STREAM, wDir: Rope.ROPE] RETURNS[errors: BOOL]; BindInfo: TYPE~REF BindInfoRecord; BindInfoRecord: TYPE; <> <> <> <> <> <> LoadMod: TYPE~REF LoadModRecord; LoadModRecord: TYPE~RECORD[ proj: SMProj.Proj_NIL, bindInfo: BindInfo_NIL, loadInfo: LoadInfo_NIL, mustReplace: BOOL_FALSE]; -- => this module must be replaced in the load state }.