DIRECTORY BcdDefs: TYPE USING [Base, BCD, VersionStamp], BcdOps: TYPE USING [NameString], File: TYPE USING [Capability, nullCapability], FileParms: TYPE USING [SymbolSpace], IFSFile: TYPE USING [FileHandle], Space: TYPE USING [Handle]; ProcBcds: DEFINITIONS = { RelCode: TYPE = {imports, exports, otherdepends, symbolsfile, canignore, defstype, sourcefile}; ProcMod: TYPE = PROC[sourcefile, smodulename: LONG STRING, bcdvers, sourcevers, creatorvers: BcdDefs.VersionStamp, isdefns, isconfig, iscodebound, istablecompiled, altoCode, boundsChecks, cedarSwitch, crossJump, linksInCode, nilChecks, sortByUsage: BOOL, symbolSpace: FileParms.SymbolSpace, rtVersionID: CARDINAL] RETURNS[uns: UNSPECIFIED]; ProcDep: TYPE = PROC[relcode: RelCode, smodulename, filename: LONG STRING, bcdvers: BcdDefs.VersionStamp, uns: UNSPECIFIED]; Innards: TYPE = POINTER TO InnardsObject; InnardsObject: TYPE = RECORD[ cap: File.Capability _ File.nullCapability, fh: IFSFile.FileHandle _ NIL, bcdheaderspace: Space.Handle, bcd: LONG POINTER TO BcdDefs.BCD _ NIL, upperLimit: CARDINAL _ NULL, -- this is # words available tb: BcdDefs.Base _ NULL, ssb: BcdOps.NameString _ NULL, evb: BcdDefs.Base _ NULL, spb: BcdDefs.Base _ NULL, fpb: BcdDefs.Base _ NULL, ctb: BcdDefs.Base _ NULL, mtb: BcdDefs.Base _ NULL, itb: BcdDefs.Base _ NULL, etb: BcdDefs.Base _ NULL, sgb: BcdDefs.Base _ NULL, ftb: BcdDefs.Base _ NULL, ntb: BcdDefs.Base _ NULL ]; PrintDepends: PROC[innards: Innards, procMod: ProcMod, procDep: ProcDep, print, calltwice, less: BOOL, bcdfilename: LONG STRING] RETURNS[success, isconfig, isdefns: BOOL, nimp, nexp, ntype: CARDINAL]; ReadInSegmentsBcd: PROC[innards: Innards]; InvalidBcd: SIGNAL; -- invalid bcd version ID InstallAddressesBcd: PROC[innards: Innards]; UnstallBcd: PROC [innards: Innards]; PrintSymbolsFile: PROC[innards: Innards, procDep: ProcDep, uns: UNSPECIFIED, print, allsyms, less: BOOL, bcdfilename: LONG STRING] RETURNS[success: BOOL, ntype: CARDINAL]; GetModuleName: PROC[innards: ProcBcds.Innards, interfacename: LONG STRING] RETURNS[success: BOOL]; IsRealTime: PROC[stamp: LONG CARDINAL] RETURNS[isrealtime: BOOL]; }. <ProcBcds.Mesa last edit 18-Mar-82 14:08:05 last edit May 23, 1983 4:40 pm, Russ Atkinson (short STRING to LONG STRING) these are procedures the user provides usually as parameters to PrintDepends ProcBcds.PrintDepends calls ProcMod and then ProcDep as many times as needed sourcefile ends in either a .config or .mesa uns is usually a DBTuples.Tuple uns is passed thru from ProcMod result the user generates uns, we call procDep with it filename normally has ".bcd" at the end this procedure takes a file name and calls the three procedure variables that are its last arguments on file "sfn" you must do an InstallAddressesBcd[] first I will call procMod. Then I will call procDep for each dependency for both Defs and Impls. if print is TRUE, it will print out the number of imports and exports if calltwice is TRUE, it will call ProcMod twice to help with clustering in the database defined in ProcBcdsImpl the way this works is that you call ReadInSegmentsBcd with innards.cap filled in with the cap of a local file or call it with the fh of a remote file uses innards.cap or innards.fh, sets innards.bcdheaderspace and .bcd raised by ReadInSegmentsBcd uses innards.bcd, set other bases uses innards.bcdheaderspace does NOT close fh innards.cap and space initted from ReadInSegmentsBcd called by DescribeBcdImpl uses heuristics ÊÞ˜šœ ™ Jšœ™JšœK™K—J˜šÏk ˜ Jšœ œœœ˜.Jšœœœ˜ Jšœœœ˜.Jšœ œœ˜$Jšœ œœ˜!Jšœœœ ˜J˜—Jšœ œ˜J˜Jšœ'™'Jšœ%™%šœ œ;˜HJ˜J˜—Jšœ5™5Jšœ™Jšœ,™,Jšœ™šÏnœœœ œ˜;J˜7J˜0JšœUœ˜ZJšœ1œ˜:Jšœ œ˜—Jšœ&™&Jšœ/™/Jšœ'™'šžœœœ* œ˜KJšœ$ œ˜1J˜J˜—Jšœ œœœ˜)šœœœ˜J˜+Jšœœ˜J˜Jš œœœœ œœ˜(Jšœ œœÏc˜9Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœ˜J˜J˜—Jšœ>™>Jšœ3™3Jšœ*™*Jšœ™JšœE™EJšœE™EJšœ=™=Jšœ™šž œœ6˜HJšœœœœ˜8šœœ˜*Jšœœ˜J˜J˜——Jšœ™J˜Jšœ5™5Jšœ7™7Jšœ'™'J˜JšœD™DJšžœœ˜*J˜Jšœ™Jšœ œŸ˜-J˜Jšœ!™!Jšžœœ˜,J˜Jšœ™Jšœ™Jšž œœ˜$J˜Jšœ4™4Jšœ™šžœœ%˜;Jš œ œœœœ˜HJšœ œ œ˜(J˜—šž œœ+ œ˜KJšœ œ˜J˜—Jšœ™Jš ž œœœœœ œ˜AJ˜J˜J˜—…—z”