(FILECREATED " 3-Sep-86 15:35:29" {PHYLUM}<LANNING>FILECACHE>FILECACHE-DECLS.;2 5683   

      changes to:  (VARS FILECACHE-DECLSCOMS)

      previous date: "30-Jul-86 13:52:04" {PHYLUM}<LANNING>FILECACHE>FILECACHE-DECLS.;1)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT FILECACHE-DECLSCOMS)

(RPAQQ FILECACHE-DECLSCOMS ((* * Compile time declarations for the FileCache package)
	(GLOBALVARS *FILE-CACHE-MESSAGE-STREAM* DON'T.CACHE.FILES FCACHE.DEAD.HOSTS 
		    FCACHE.GENERIC.DEVICE.TYPES FCACHE.VERSION.DATE FCACHE.VERSION.NUMBER 
		    PRIVATE.FILES \ABORT.WINDOW.BOTTOM \ABORT.WINDOW.HEIGHT \ABORT.WINDOW.LEFT 
		    \ABORT.WINDOW.LOCK \ABORT.WINDOW.WIDTH \BEFORELOGINFNS 
		    \FCACHE.CACHE.CHANGED.EVENT \FCACHE.CACHELOCK \FCACHE.CACHING.FILES 
		    \FCACHE.DELETED.ENTRIES \FCACHE.DEVICE \FCACHE.DIR.READTABLE \FCACHE.DUMPLOCK 
		    \FCACHE.GENERIC.DEVICES \FCACHE.LIST \FCACHE.LIST.CHANGED? 
		    \FCACHE.LISTING.VERSION.NUMBER \FCACHE.LOCALDEVICE \FCACHE.LOGFILE 
		    \FCACHE.MESSAGE.WINDOW.LOCK \FCACHE.PROMPT.WINDOW 
		    \FCACHE.PROMPT.WINDOW.MONITORLOCK \FCACHE.PROPERTIES \FREE.ABORT.WINDOWS)
	(RECORDS CACHEDEVINFO CACHENTRY CACHEDEVICE)
	(MACROS KLUDGE VersionlessFileName)
	(MACROS \FCACHE.PROPERTY \FCACHE.PROPERTY.PUT \FCACHE.LOCALDEVICE)
	(I.S.OPRS INUNSORTEDFILES)))
(* * Compile time declarations for the FileCache package)

(DECLARE: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS *FILE-CACHE-MESSAGE-STREAM* DON'T.CACHE.FILES FCACHE.DEAD.HOSTS 
	    FCACHE.GENERIC.DEVICE.TYPES FCACHE.VERSION.DATE FCACHE.VERSION.NUMBER PRIVATE.FILES 
	    \ABORT.WINDOW.BOTTOM \ABORT.WINDOW.HEIGHT \ABORT.WINDOW.LEFT \ABORT.WINDOW.LOCK 
	    \ABORT.WINDOW.WIDTH \BEFORELOGINFNS \FCACHE.CACHE.CHANGED.EVENT \FCACHE.CACHELOCK 
	    \FCACHE.CACHING.FILES \FCACHE.DELETED.ENTRIES \FCACHE.DEVICE \FCACHE.DIR.READTABLE 
	    \FCACHE.DUMPLOCK \FCACHE.GENERIC.DEVICES \FCACHE.LIST \FCACHE.LIST.CHANGED? 
	    \FCACHE.LISTING.VERSION.NUMBER \FCACHE.LOCALDEVICE \FCACHE.LOGFILE 
	    \FCACHE.MESSAGE.WINDOW.LOCK \FCACHE.PROMPT.WINDOW \FCACHE.PROMPT.WINDOW.MONITORLOCK 
	    \FCACHE.PROPERTIES \FREE.ABORT.WINDOWS)
)
[DECLARE: EVAL@COMPILE 

(RECORD CACHEDEVINFO (REALDEVICENAME                       (* The name of the real device)
				       CACHEDEV              (* The cache device for this remote device)
				       )
		       [ACCESSFNS ((REALDEVICE (\GETREALDEVICEFROMHOSTNAME (fetch 
										   REALDEVICENAME
										  of DATUM)
									       NIL
									       (fetch CACHEDEV
										  of DATUM]
		       (SYSTEM))

(DATATYPE CACHENTRY (REMOTEFILENAME LOCALFILENAME MATCHFILENAME (CACHEISDIRTY FLAG)
                                                             (* True if OPENFILE specified version)
				      (FILEXISTED FLAG)      (* Did the file exist when we started to write it 
							     out?)
				      (CACHEFILELENGTH INTEGER)
                                                             (* in pages. Not valid while open for write)
				      CACHEFILEPROPS         (* prop list of real file from opening)
				      (CACHEFILEDATE INTEGER)
                                                             (* ICREATIONDATE of remote file)
				      (CACHEBEINGWRITTEN FLAG)
                                                             (* True while writeout in progress)
				      CACHETIMECLOSED        (* The time the cache file was last closed)
				      CACHELOCK              (* A monitor lock for access to the cache)
				      (TIMELASTVERIFIED INTEGER)
                                                             (* When was this entry last verified?)
				      )
		      CACHELOCK ←(CREATE.MONITORLOCK (QUOTE CACHELOCK))
		      TIMELASTVERIFIED ← 0 (SYSTEM))

(ACCESSFNS CACHEDEVICE ((CACHEDEVINFO (\FCACHE.DEVINFO DATUM)
					(\FCACHE.PUT.DEVINFO DATUM NEWVALUE)))
			 (SUBRECORD CACHEDEVINFO)
			 (SYSTEM))
]
(/DECLAREDATATYPE (QUOTE CACHENTRY)
		  (QUOTE (POINTER POINTER POINTER FLAG FLAG FIXP POINTER FIXP FLAG POINTER POINTER 
				  FIXP))
		  (QUOTE ((CACHENTRY 0 POINTER)
			  (CACHENTRY 2 POINTER)
			  (CACHENTRY 4 POINTER)
			  (CACHENTRY 4 (FLAGBITS . 0))
			  (CACHENTRY 4 (FLAGBITS . 16))
			  (CACHENTRY 6 FIXP)
			  (CACHENTRY 8 POINTER)
			  (CACHENTRY 10 FIXP)
			  (CACHENTRY 8 (FLAGBITS . 0))
			  (CACHENTRY 12 POINTER)
			  (CACHENTRY 14 POINTER)
			  (CACHENTRY 16 FIXP)))
		  (QUOTE 18))
(DECLARE: EVAL@COMPILE 
(DEFMACRO KLUDGE (&REST FORMS)
	  (* * Just like PROGN, but lets us use MASTERSCOPE to find this kludge)
	  (BQUOTE (PROGN ., FORMS)))
[PUTPROPS VersionlessFileName MACRO (OPENLAMBDA (fileName)
						(SUBATOM fileName 1
							 (SUB1 (OR (STRPOS ";" fileName)
								   (ADD1 (NCHARS fileName]
)
(DECLARE: EVAL@COMPILE 
(PUTPROPS \FCACHE.PROPERTY MACRO (OPENLAMBDA (X)
					     (LISTGET \FCACHE.PROPERTIES X)))
(PUTPROPS \FCACHE.PROPERTY.PUT MACRO (OPENLAMBDA (NAME VALUE)
						 (LISTPUT \FCACHE.PROPERTIES NAME VALUE)))
[PUTPROPS \FCACHE.LOCALDEVICE MACRO (OPENLAMBDA NIL (OR \FCACHE.LOCALDEVICE
							(SETQ \FCACHE.LOCALDEVICE
							      (\GETDEVICEFROMNAME
								(\FCACHE.PROPERTY (QUOTE PREFIX))
								T]
)
(DECLARE: EVAL@COMPILE 
(I.S.OPR (QUOTE INUNSORTEDFILES)
	 NIL
	 [QUOTE (SUBST (GENSYM)
		       (QUOTE GENVAR)
		       (QUOTE (BIND GENVAR ← (\GENERATEFILES BODY)
				    EACHTIME
				    (PROGN (OR (SETQ I.V. (\GENERATENEXTFILE GENVAR))
					       (GO $$OUT))
					   (IF (LISTP I.V.)
					       THEN
					       (SETQ I.V. (CONCATCODES I.V.]
	 T)
)
(PUTPROPS FILECACHE-DECLS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL)))
STOP