-- Dir.Mesa, last edit 14-Feb-82 14:23:21 -- Pilot 6.0/ Mesa 7.0 -- definitions file for the disk cache of the modeller DIRECTORY CompilerOps: TYPE USING [LetterSwitches], File: TYPE USING [Capability, nullCapability], FileParms: TYPE USING [nullSymbolSpace, SymbolSpace], LowLoader: TYPE USING [LoadInfoSeq], TimeStamp: TYPE USING [Null, Stamp]; Dir: DEFINITIONS = { -- used by MDModel LOC to point to local files -- rule: -- bcd may not correspond to src -- src and bcd may not correspond to version listed in model -- DepSeq's, Capabilities always correspond to file create dates -- if not present, can't use Capabilities, DepSeq's, Create dates -- (bcdVers may have time field set independently) FileInfo: TYPE = LONG POINTER TO FileInfoRecord; FileInfoRecord: TYPE = RECORD[ isBcd: BOOL ← FALSE, -- LOC is a "Bcd", rather than normal Mesa -- bcdPresent: BOOL ← FALSE, -- T => is on local disk bcdFileName: LONG STRING ← NIL, -- for this LOC bcdVers: TimeStamp.Stamp ← TimeStamp.Null, -- version stamp, not create bcdCreate: LONG CARDINAL ← 0, -- file create time bcdDepSeq: DepSeq ← NIL, -- for the Bcd bcdCap: File.Capability ← File.nullCapability, loadInfoSeq: LowLoader.LoadInfoSeq ← NIL, -- for the loaded bcd -- srcPresent: BOOL ← FALSE, -- T => is on local disk srcFileName: LONG STRING ← NIL, -- for this LOC srcCreate: LONG CARDINAL ← 0, -- file create time srcDepSeq: DepSeq ← NIL, -- for the Bcd srcCap: File.Capability ← File.nullCapability, srcNotSaved: BOOL ← FALSE, -- used by Permanent -- moduleName: LONG STRING ← NIL, alreadyLookedFor: BOOL ← FALSE ]; -- be sure to examine LoadDB and DumpDB in DBStashImpl before -- changing this record DepSeq: TYPE = LONG POINTER TO DepSeqRecord; DepSeqRecord: TYPE = RECORD[ bcdFileName: LONG STRING ← NIL, -- ends in ".bcd" -- this is the version stamp, not the create time bcdVers: TimeStamp.Stamp ← TimeStamp.Null, srcFileName: LONG STRING ← NIL, -- ends in ".mesa" srcCreate: LONG CARDINAL ← 0, -- source file create time moduleName: LONG STRING ← NIL, CopyString: PROC[LONG STRING, UNCOUNTED ZONE ← NIL] RETURNS[LONG STRING]← NIL, -- use to allocate strings -- compiler switch /a, etc. switches: CompilerOps.LetterSwitches ← ALL[FALSE], isdefns: BOOL ← FALSE, isconfig: BOOL ← FALSE, fromsource: BOOL ← FALSE, -- T => info from source file istablecompiled: BOOL ← FALSE, symbolSpace: FileParms.SymbolSpace ← FileParms.nullSymbolSpace, size: CARDINAL ← 0, body: SEQUENCE maxsize: CARDINAL OF ADepRecord ]; ModType: TYPE = MACHINE DEPENDENT {errortype(0), imports(1), exports(2), directory(3), last(64000)}; ADepRecord: TYPE = RECORD[ relation: ModType ← errortype, moduleName: LONG STRING ← NIL, bcdFileName: LONG STRING ← NIL, bcdVers: TimeStamp.Stamp ← TimeStamp.Null -- this is the version stamp, not the create time ]; MaximumDepSize: CARDINAL = 160; -- biggest is CoPilotDorado.Config (165) -- procedures -- if src = TRUE, then see if there is a new version of source file -- else look for new version of bcd file NewVersion: PROC[fi: FileInfo, src: BOOL] RETURNS[newVersion: BOOL]; -- utilities for depseq's AddToDep: PROC[depseq: DepSeq, padeprecord: POINTER TO ADepRecord]; }.