(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")(FILECREATED "15-Sep-87 11:26:06" |{MCS:MCS:STANFORD}<LANE>HASHBUFFER.;6| 6916         changes to%:  (VARS HASHBUFFERCOMS)      previous date%: " 3-Sep-87 17:06:23" |{MCS:MCS:STANFORD}<LANE>HASHBUFFER.;5|)(* "Copyright (c) 1985, 1986, 1987 by Stanford University.  All rights reserved.")(PRETTYCOMPRINT HASHBUFFERCOMS)(RPAQQ HASHBUFFERCOMS ((FNS CREATEHASHBUFFER OPENHASHBUFFER CLOSEHASHBUFFER GETHASHBUFFER                             PUTHASHBUFFER)                       (INITVARS (EMPTYHASHENTRYMARKER '**EMPTYHASHENTRY**))                       (GLOBALVARS EMPTYHASHENTRYMARKER)                       (FNS HASHARRAY.TO.HASHFILE HASHFILE.TO.HASHARRAY)                       (DECLARE%: DONTCOPY (RECORDS HASHBUFFER))                       (FILES HASH)))(DEFINEQ(CREATEHASHBUFFER  [LAMBDA (FILE VALUETYPE ITEMLENGTH %#ENTRIES OVERFLOW HASHBITSFN EQUIVFN)                                                             (* cdl " 1-May-87 16:08")    (DECLARE (GLOBALVARS HASHFILEDEFAULTSIZE))    (PROG [(HASHBUFFER (create HASHBUFFER                              HASHFILE _ (CREATEHASHFILE FILE VALUETYPE ITEMLENGTH %#ENTRIES)                              HASHARRAY _ (HASHARRAY (OR %#ENTRIES HASHFILEDEFAULTSIZE)                                                 OVERFLOW HASHBITSFN EQUIVFN]          (replace (HASHBUFFER ACCESS) of HASHBUFFER with (GETFILEINFO (with HashFile                                                                             (with HASHBUFFER                                                                                    HASHBUFFER                                                                                    HASHFILE)                                                                             Stream)                                                                 'ACCESS))          (RETURN HASHBUFFER])(OPENHASHBUFFER  [LAMBDA (FILE ACCESS MINKEYS OVERFLOW HASHBITSFN EQUIVFN)  (* cdl " 1-May-87 16:10")    (PROG [(HASHBUFFER (create HASHBUFFER                              HASHFILE _ (OPENHASHFILE FILE ACCESS]          (replace (HASHBUFFER HASHARRAY) of HASHBUFFER             with (HASHARRAY (OR MINKEYS (with HashFile (with HASHBUFFER HASHBUFFER HASHFILE)                                               %#Entries))                         OVERFLOW HASHBITSFN EQUIVFN))          (replace (HASHBUFFER ACCESS) of HASHBUFFER with (GETFILEINFO (with HashFile                                                                             (with HASHBUFFER                                                                                    HASHBUFFER                                                                                    HASHFILE)                                                                             Stream)                                                                 'ACCESS))          (RETURN HASHBUFFER])(CLOSEHASHBUFFER  [LAMBDA (HASHBUFFER FILEONLY?)                             (* cdl " 1-May-87 16:21")    (with HASHBUFFER HASHBUFFER (PROG1 (HASHFILEPROP HASHFILE 'NAME)                                       (CLOSEHASHFILE HASHFILE)                                       (if (NOT FILEONLY?)                                           then (SETQ HASHARRAY NIL])(GETHASHBUFFER  [LAMBDA (KEY HASHBUFFER)                                   (* cdl "24-Oct-85 08:37")    (PROG (VALUE)          (with HASHBUFFER HASHBUFFER (if (EQ EMPTYHASHENTRYMARKER (SETQ VALUE (GETHASH KEY HASHARRAY                                                                                      )))                                          then (RETURN)                                        elseif VALUE                                          then (RETURN VALUE)                                        elseif (SETQ VALUE (GETHASHFILE KEY HASHFILE))                                          then (PUTHASH KEY VALUE HASHARRAY)                                               (RETURN VALUE)                                        else (PUTHASH KEY EMPTYHASHENTRYMARKER HASHARRAY])(PUTHASHBUFFER  [LAMBDA (KEY VALUE HASHBUFFER)                             (* cdl "24-Oct-85 08:26")    (with HASHBUFFER HASHBUFFER (if (NEQ ACCESS 'INPUT)                                    then (PUTHASHFILE KEY VALUE HASHFILE))          (PUTHASH KEY VALUE HASHARRAY]))(RPAQ? EMPTYHASHENTRYMARKER '**EMPTYHASHENTRY**)(DECLARE%: DOEVAL@COMPILE DONTCOPY(GLOBALVARS EMPTYHASHENTRYMARKER))(DEFINEQ(HASHARRAY.TO.HASHFILE  [LAMBDA (HASHARRAY HASHFILE TESTFN)                        (* ; "Edited  3-Sep-87 17:05 by cdl")    (DECLARE (SPECVARS HASHARRAY HASHFILE TESTFN))    (LET (REOPEN)         (DECLARE (SPECVARS REOPEN))         [if (HASHFILEP HASHFILE)             then (SETQ REOPEN T)           else (SETQ HASHFILE (CREATEHASHFILE HASHFILE NIL NIL (HARRAYPROP HASHARRAY 'NUMKEYS]         [RESETLST [RESETSAVE NIL `(CLOSEHASHFILE ,HASHFILE ,REOPEN]                (MAPHASH HASHARRAY (FUNCTION (LAMBDA (VALUE KEY)                                               (if (OR (NULL TESTFN)                                                       (APPLY* TESTFN KEY VALUE HASHARRAY HASHFILE))                                                   then (PUTHASHFILE KEY VALUE HASHFILE]         (if REOPEN             then HASHFILE           else (with HashFile HASHFILE File])(HASHFILE.TO.HASHARRAY  [LAMBDA (HASHFILE HASHARRAY TESTFN)                        (* ; "Edited  3-Sep-87 17:05 by cdl")    (DECLARE (SPECVARS HASHFILE HASHARRAY TESTFN))    (LET (REOPEN)         (DECLARE (SPECVARS REOPEN))         [if (HASHFILEP HASHFILE)             then (SETQ REOPEN T)           else (SETQ HASHFILE (OPENHASHFILE HASHFILE 'INPUT]         [if (NULL HASHARRAY)             then (SETQ HASHARRAY (with HashFile HASHFILE (HASHARRAY %#Entries]         [RESETLST [RESETSAVE NIL `(CLOSEHASHFILE ,HASHFILE ,REOPEN]                (MAPHASHFILE HASHFILE (FUNCTION (LAMBDA (KEY VALUE)                                                  (if (OR (NULL TESTFN)                                                          (APPLY* TESTFN KEY VALUE HASHFILE HASHARRAY                                                                 ))                                                      then (PUTHASH KEY VALUE HASHARRAY]         HASHARRAY]))(DECLARE%: DONTCOPY (DECLARE%: EVAL@COMPILE(RECORD HASHBUFFER (HASHARRAY HASHFILE ACCESS))))(FILESLOAD HASH)(PUTPROPS HASHBUFFER COPYRIGHT ("Stanford University" 1985 1986 1987))(DECLARE%: DONTCOPY  (FILEMAP (NIL (848 4618 (CREATEHASHBUFFER 858 . 1987) (OPENHASHBUFFER 1989 . 3081) (CLOSEHASHBUFFER 3083 . 3472) (GETHASHBUFFER 3474 . 4317) (PUTHASHBUFFER 4319 . 4616)) (4745 6703 (HASHARRAY.TO.HASHFILE 4755 . 5690) (HASHFILE.TO.HASHARRAY 5692 . 6701)))))STOP