<<>> <> <> <> <> <<>> DIRECTORY PFSNames USING [PATH], Rope USING [ROPE]; <<>> <<>> PFSPrefixMap: CEDAR DEFINITIONS ~ BEGIN <> PATH: TYPE = PFSNames.PATH; <> Entry: TYPE ~ RECORD [ prefix: PATH, translation: PATH ]; EntryList: TYPE ~ LIST OF Entry; PrefixTableEntry: TYPE ~ RECORD [ prefix: PATH, translation: PATH, -- the complete translation. fsName: Rope.ROPE, -- the rope part of the first component of the complete translation nameOnFS: PATH, -- translation with empty server part replacedPrefix: PATH, -- components in source name replaced ... suppliedPrefixLen: CARDINAL ¬ 0 -- number of components in translation (and nameOnFS) which replaced them ]; PrefixTableList: TYPE ~ LIST OF PrefixTableEntry; <<>> <> <> Translate: PROC [name: PATH, pTable: PrefixTableList ¬ NIL] RETURNS [PATH]; <> <<>> TranslateAndGetHints: PROC [name: PATH, pTable: PrefixTableList ¬ NIL] RETURNS [PrefixTableEntry]; <> <<>> Insert: PROC [prefix: PATH, translation: PATH, pTable: PrefixTableList ¬ NIL] RETURNS [PrefixTableList]; <> InsertIntoNewPTable: PROC [prefix: PATH, translation: PATH] RETURNS[newPTable: PrefixTableList]; <> <<>> Delete: PROC [name: PATH, pTable: PrefixTableList ¬ NIL] RETURNS [existing: PATH, newPTable: PrefixTableList]; <> Lookup: PROC [prefix: PATH, pTable: PrefixTableList ¬ NIL] RETURNS [PATH]; <> GetMap: PROC [pTable: PrefixTableList ¬ NIL] RETURNS [EntryList]; <> SetMap: PROC [map: EntryList]; <> <<>> SetMapFromPTable: PROC [pTable: PrefixTableList ¬ NIL]; <> <<>> FromMapToPTable: PROC [map: EntryList ¬ NIL] RETURNS[PrefixTableList]; <> END.