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. Θ PFSPrefixMap.mesa Copyright Σ 1989, 1991 by Xerox Corporation. All rights reserved. Carl Hauser, June 8, 1989 5:38:45 pm PDT Willie-s, August 21, 1991 11:12 am PDT Copied Types Types Procedures these take an optional pTable argument; if not supplied, the default pTable is used Returns name with the translation corresponding to the longest prefix of name appearing in the map substituted for that prefix. TranslationWithHints.translation = Translate[name]; Other fields could be computed by the client but are more easily computed in this impl (because they can be cached). Adds a translation to the map for prefix. Replace any existing translation. To start a new PrefixTableList. Removes any translation in the map for prefix. Returns the existing translation (or NIL if none). Returns the translation of prefix (exact match required); NIL if none; Returns the entire map. Sets the entire map. Returns the entire map from pTable. alternate forms Κ•NewlineDelimiter –(cedarcode) style™šœ™Icodešœ Οeœ7™BK™(K™&K™—šΟk ˜ Kšœ žœžœ˜Kšœžœžœ˜—J™K™KšΠln œžœž ˜šœž˜K˜—™ Kšžœžœ žœ˜K˜—™šœžœžœ˜Kšœžœ˜ Kšœ ž˜Kšœ˜K˜—Kšœ žœžœžœ˜ K˜šœžœžœ˜!Kšœžœ˜ Kšœ žœΟc˜/Kšœ žœ D˜WKšœ žœ %˜5Kšœžœ )˜?Kšœžœ I˜iKšœ˜K˜—šœžœžœžœ˜1K˜——K™™ K™SK˜š Οn œžœžœžœžœžœ˜KKšœœ=œ2™K™—š ‘œžœžœžœžœ˜bKšœ©™©K™—š ‘œžœ žœžœžœžœ˜hKšœL™L—K˜š ‘œžœ žœžœžœ˜`Kšœ™K™—š ‘œžœžœžœžœ žœ˜nKšœ'œ4™a—K˜š ‘œžœ žœžœžœžœ˜JKšœ:žœ ™F—K˜š‘œžœžœžœ ˜AK™—K˜š‘œžœ˜™K™——š‘œžœžœ˜7™#K™——š‘œžœžœžœ˜FK™—K˜—Kšžœ˜—…—Δ ‘