(FILECREATED " 7-NOV-77 15:22:31" <LISPUSERS>MSDATABASESIZE.;1 1940   


     changes to:  MSDATABASESIZE MSDATABASESIZE1 MSDATABASESIZECOMS 
DBINITCOMS

     previous date: "29-SEP-77 11:05:58" <IDL>MSDATABASESIZE.;9)


(PRETTYCOMPRINT MSDATABASESIZECOMS)

(RPAQQ MSDATABASESIZECOMS ((FNS MSDATABASESIZE MSDATABASESIZE1)
			   (BLOCKS (MSDATABASESIZE MSDATABASESIZE 
						   MSDATABASESIZE1))
			   (VARS DBINITCOMS)))
(DEFINEQ

(MSDATABASESIZE
  (LAMBDA (FACTOR)                      (* lmm " 7-NOV-77 15:17")

          (* Produces a list that represents the storage currently tied 
	  up in masterscope databases to which MSDATABASEINIT can be set
	  in order to preallocate sufficient storage.
	  If FACTOR is not NIL, it is an the current size of each data 
	  base is multiplied by it to avoid immediate rehashing.)


    (DECLARE (SPECVARS FACTOR))
    (OR FACTOR (SETQ FACTOR 1.0))
    (MSDATABASESIZE1 (OR MSDATABASELST MSDATABASEINIT))))

(MSDATABASESIZE1
  (LAMBDA (X)                           (* lmm " 7-NOV-77 15:17")
    (COND
      ((NLISTP X)
	(COND
	  ((SWPARRAYP X)
	    (FIX (FTIMES FACTOR (SHASHSIZE X))))
	  (T X)))
      ((ARRAYP (CAR X))
	(PROG ((CNT 0))
	      (DECLARE (SPECVARS CNT))
	      (MAPHASH X (FUNCTION (LAMBDA (VAL KEY)
			   (SETN CNT (IPLUS CNT (if (LISTP VAL)
						    then (LENGTH VAL)
						  else 1))))))
	      (RETURN (FIX (FTIMES FACTOR CNT)))))
      (T (CONS (MSDATABASESIZE1 (CAR X))
	       (MSDATABASESIZE1 (CDR X)))))))
)
[DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(BLOCK: MSDATABASESIZE MSDATABASESIZE MSDATABASESIZE1)
]

(RPAQQ DBINITCOMS ((P * (LIST (LIST (QUOTE MSDATABASEINIT)
				    (MSDATABASESIZE 1.25))))
		   (P (OR (GETD (QUOTE SHASHARRAY))
			  (LOAD (QUOTE <LISPUSERS>SWAPHASH.COM)
				T))
		      (SETQ SWAPPEDTABLES T))))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (444 1581 (MSDATABASESIZE 456 . 1018) (MSDATABASESIZE1 
1022 . 1578)))))
STOP
