(FILECREATED " 3-Sep-86 13:56:53" {ERIS}<LISPCORE>PKG>CMLSYMBOL.;1 2727   

      changes to:  (FUNCTIONS CL:COPY-SYMBOL CL:GENSYM CL:GENTEMP)
                   (VARS CMLSYMBOLCOMS)

      previous date: "27-Aug-86 15:58:05" {ERIS}<LISPCORE>LIBRARY>CMLSYMBOL.;27)


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

(PRETTYCOMPRINT CMLSYMBOLCOMS)

(RPAQQ CMLSYMBOLCOMS ((* ;; "Latter part of the symbol functions.  The rest are in LLSYMBOL")
                      (OPTIMIZERS GET GETF SYMBOL-PLIST)
                      (SETFS GET SYMBOL-PLIST SYMBOL-VALUE SYMBOL-FUNCTION)
                      (PROP FILETYPE CMLSYMBOL)))



(* ;; "Latter part of the symbol functions.  The rest are in LLSYMBOL")

(DEFOPTIMIZER GET (SYMBOL INDICATOR &REST TAIL) (BQUOTE (GETF (SYMBOL-PLIST (\, SYMBOL))
                                                              (\, INDICATOR)
                                                              (\,@ TAIL))))

(DEFOPTIMIZER GETF (PLACE INDICATOR &OPTIONAL DEFAULT) (COND
                                                          (DEFAULT (QUOTE IGNOREMACRO))
                                                          (T (BQUOTE (LISTGET (\, PLACE)
                                                                            (\, INDICATOR))))))

(DEFOPTIMIZER SYMBOL-PLIST (SYMBOL) (BQUOTE (GETPROPLIST (\, SYMBOL))))

(DEFINE-SETF-METHOD GET (SYMBOL PROP &OPTIONAL DEFAULT) "Get turns into %%put. Don't put in the default unless it really is supplied and 
  non-nil, so that we can transform into the get instruction whenever possible."
   (LET ((SYMBOL-TEMP (GENSYM))
         (PROP-TEMP (GENSYM))
         (DEF-TEMP (GENSYM))
         (NEWVAL (GENSYM)))
        (VALUES (BQUOTE ((\, SYMBOL-TEMP)
                         (\, PROP-TEMP)
                         (\,@ (COND
                                 (DEFAULT (BQUOTE ((\, DEF-TEMP))))))))
               (BQUOTE ((\, SYMBOL)
                        (\, PROP)
                        (\,@ (COND
                                (DEFAULT (BQUOTE ((\, DEFAULT))))))))
               (LIST NEWVAL)
               (BQUOTE (PUTPROP (\, SYMBOL-TEMP)
                              (\, PROP-TEMP)
                              (\, NEWVAL)))
               (BQUOTE (GET (\, SYMBOL-TEMP)
                            (\, PROP-TEMP)
                            (\,@ (COND
                                    (DEFAULT (BQUOTE ((\, DEF-TEMP)))))))))))

(DEFSETF SYMBOL-PLIST SETPROPLIST)

(DEFSETF SYMBOL-VALUE SET)

(DEFSETF SYMBOL-FUNCTION SETF-SYMBOL-FUNCTION)


(PUTPROPS CMLSYMBOL FILETYPE COMPILE-FILE)
(PUTPROPS CMLSYMBOL COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL)))
STOP