DIRECTORY TiogaFile USING [LooksIndex, PropIndex, FormatIndex, numLooks, numProps, numFormats], TextLooks USING [Looks, noLooks]; PGSupport: CEDAR DEFINITIONS = BEGIN Looks: TYPE ~ TextLooks.Looks; noLooks: Looks ~ TextLooks.noLooks; PropIndex: TYPE ~ TiogaFile.PropIndex; FormatIndex: TYPE ~ TiogaFile.FormatIndex; LooksIndex: TYPE ~ TiogaFile.LooksIndex; PGF: TYPE = REF PGFBody; PGFBody: TYPE = RECORD [ propNext: NAT _ 0, -- next available PropIndex propTable: ARRAY PropIndex OF ATOM, propHashKeys: ARRAY PropHashIndex OF PropHashKey, propHashVals: ARRAY PropHashIndex OF PropHashVal, formatNext: NAT _ 0, -- next available FormatIndex formatTable: ARRAY FormatIndex OF ATOM, formatHashKeys: ARRAY FormatHashIndex OF FormatHashKey, formatHashVals: ARRAY FormatHashIndex OF FormatHashVal, looksNext: NAT _ 0, -- next available LooksIndex, looksTable: ARRAY LooksIndex OF Looks, looksHashKeys: ARRAY LooksHashIndex OF LooksHashKey, looksHashVals: ARRAY LooksHashIndex OF LooksHashVal ]; FormatHashIndex: TYPE = [0 .. formatHashSize); formatHashSize: PRIVATE NAT = IF TiogaFile.numFormats > 85 THEN 256 ELSE 128; -- Should be power of 2 FormatHashKey: PRIVATE TYPE = RECORD [formatName: ATOM _ NIL]; FormatHashVal: PRIVATE TYPE = RECORD [index: FormatIndex]; LooksHashIndex: TYPE = [0 .. looksHashSize); looksHashSize: PRIVATE NAT = IF TiogaFile.numLooks > 85 THEN 256 ELSE 128; -- Should be power of 2 LooksHashKey: PRIVATE TYPE = RECORD [looks: Looks _ noLooks]; LooksHashVal: PRIVATE TYPE = RECORD [index: LooksIndex]; PropHashIndex: TYPE = [0 .. propHashSize); propHashSize: PRIVATE NAT = IF TiogaFile.numProps > 85 THEN 256 ELSE 128; -- Should be power of 2 PropHashKey: PRIVATE TYPE = RECORD [propname: ATOM _ NIL]; PropHashVal: PRIVATE TYPE = RECORD [index: PropIndex]; CreatePGF: PROC RETURNS [PGF]; FreePGF: PROC [PGF]; -- don't return it more than once! BadIndex: ERROR; RetrieveFormatName: PROC [index: FormatIndex, pgf: PGF] RETURNS [formatName: ATOM]; EnterFormatName: PROC [formatName: ATOM, pgf: PGF] RETURNS [ok: BOOL, index: FormatIndex]; RetrieveLooks: PROC [index: LooksIndex, pgf: PGF] RETURNS [looks: Looks]; EnterLooks: PROC [looks: Looks, pgf: PGF] RETURNS [ok: BOOL, index: LooksIndex]; RetrieveProp: PROC [index: PropIndex, pgf: PGF] RETURNS [propname: ATOM]; EnterProp: PROC [propname: ATOM, pgf: PGF] RETURNS [ok: BOOL, index: PropIndex]; END. PGSupport.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. written by Paxton. January 1981 last written by Paxton. 22-May-81 10:04:43 Michael Plass, March 29, 1985 2:06:39 pm PST Rick Beach, March 27, 1985 1:12:35 pm PST Doug Wyatt, September 18, 1986 11:36:34 am PDT PGF is the file-level symbol table structure for put/get May be raised by the retrieve procs below ΚΘ˜codešœ™Kšœ Οmœ7™BKšœ ™ Kšœ*™*K™,K™)K™.—K˜šΟk ˜ Kšœ žœF˜UKšœ žœ˜!—K˜KšΠbl œžœž ˜Kšœž˜K˜K˜Kšœžœ˜Kšœ#˜#K˜Kšœ žœ˜&Kšœ žœ˜*Kšœ žœ˜(K˜šžœžœžœ ˜Kšœ8™8K™—šœ žœžœ˜Kšœ žœΟc˜.Kšœ žœ žœžœ˜#Kšœžœžœ ˜1Kšœžœžœ ˜1Kšœ žœ ˜2Kšœ žœ žœžœ˜'Kšœžœžœ˜7Kšœžœžœ˜7Kšœ žœ ˜1Kšœ žœ žœ˜&Kšœžœžœ˜4Kšœžœžœ ˜3K˜K˜—K˜Kšœžœ˜.šœžœžœ˜Kšžœžœžœ ˜G—Kš œžœžœžœžœžœ˜>Kšœžœžœžœ˜:K˜Kšœžœ˜,šœžœžœ˜Kšžœžœžœ ˜E—Kšœžœžœžœ˜=Kšœžœžœžœ˜8K˜Kšœžœ˜*šœžœžœ˜Kšžœžœžœ ˜E—Kš œ žœžœžœ žœžœ˜:Kšœ žœžœžœ˜6K˜KšΟn œžœžœžœ˜Kš‘œžœžœ "˜7K˜šœ žœ˜Kšœ)™)K™—š ‘œžœžœžœžœ˜SK˜—š ‘œžœžœžœžœžœ˜ZK˜—š‘ œžœžœžœ˜IK˜—š ‘ œžœžœžœžœ˜PK˜—š ‘ œžœžœžœ žœ˜IK˜—š ‘ œžœ žœžœžœžœ˜PK˜—K˜Kšžœ˜—…— ^Ά