<<>> <> <> <> <> DIRECTORY CirioNubAccess USING[FileEntry, Handle, PCInfo], DotOAccess USING[DotOCookie, EmbeddedDotO], MobAccess USING[MobCookie], MobDotOAccess USING[JointMobDotOInfo], PFSNames USING [PATH, Version], Rope USING[ROPE], RopeSequence USING [RopePart], SystemInterface USING[FileSet]; SymbolFinding: CEDAR DEFINITIONS = BEGIN PATH: TYPE ~ PFSNames.PATH; DotODesc: TYPE = REF DotODescBody; DotODescBody: TYPE = RECORD[ fileInfo: CirioNubAccess.FileEntry, frameInfo: CirioNubAccess.PCInfo]; FoundSymbols: TYPE = RECORD[ dotO: DotOAccess.DotOCookie, embeddedDotO: DotOAccess.EmbeddedDotO, mob: MobAccess.MobCookie, jmdi: MobDotOAccess.JointMobDotOInfo]; SymbolInfo: TYPE = REF SymbolInfoBody; SymbolInfoBody: TYPE; CreateSymbolInfo: PROC[SystemInterface.FileSet] RETURNS[SymbolInfo]; <> <<>> AddMobSearchPath: PROC[si: SymbolInfo, path: PFSNames.PATH]; <> <<(also invokes FlushSymbolFileCache)>> FlushSymbolFileCache: PROC[si: SymbolInfo]; <> FindSymbols: PROC[serverName: Rope.ROPE, nub: CirioNubAccess.Handle, desc: DotODesc, absPC: CARD, si: SymbolInfo, searchDirectories: LIST OF PFSNames.PATH] RETURNS[FoundSymbols]; <> < [NIL, NIL, NIL]>> < [dotO, NIL, NIL]>> < [dotO, mob, jmdi]>> << If a mob and corresponding jmdi are returned, then the version stamp has been checked in memory.>> <<>> <<>> <> <> <> <> <> <> <> <> <> <> FactoredUnixFileName: TYPE = RECORD[ cirioPrefix: PATH, -- This rope is the Cirio-tool local equivalent of the volume,name1 part of a Unix file name (plus ending "/"). The concatenation [cirioPrefix cirioRemainingFileName] is the local equivalent of the original Unix file name and can be looked up from inside the Cirio tool. cirioRemainingFileName: PATH, -- This rope is basically the concatenation of [remainingPath, ..., version]. volume: PATH, name1: PATH, remainingPath: PATH, machineDependentSubdir: PATH, stem: RopeSequence.RopePart, secondaryExtension: RopeSequence.RopePart, extension: RopeSequence.RopePart, version: PFSNames.Version ]; FactorUnixFileName: PROC[unixFileName: PATH] RETURNS[FactoredUnixFileName]; <> <> <> ShowReport: SIGNAL[msgText: Rope.ROPE]; <<>> END..