(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "26-Jan-90 10:12:33" {DSK}/users/welch/migration/IL-LOOPS.;8 28689  

      changes to%:  (FUNCTIONS IL-CONVERT::CONVERT-ONE-CLASS IL-CONVERT::GetValue IL-CONVERT::_Super)

      previous date%: "25-Jan-90 14:14:46" {DSK}/users/welch/migration/IL-LOOPS.;6)


(* "
Copyright (c) 1989, 1990 by Savoir, Inc..  All rights reserved.
")

(PRETTYCOMPRINT IL-LOOPSCOMS)

(RPAQQ IL-LOOPSCOMS 
       ((FUNCTIONS IL-CONVERT::@ IL-CONVERT::_ IL-CONVERT::$ IL-CONVERT::_! IL-CONVERT::_Super 
               IL-CONVERT::_Super? IL-CONVERT::ACTIVE-VALUE-SLOT-SPEC 
               IL-CONVERT::AVSENDSELF-ACCESSOR-WRITER IL-CONVERT::CONVERT-CLASSES 
               IL-CONVERT::CONVERT-METHODS IL-CONVERT::CONVERT-ONE-CLASS 
               IL-CONVERT::CONVERT-ONE-METHOD IL-CONVERT::Class 
               IL-CONVERT::EVERYFETCH-ACCESSOR-WRITER IL-CONVERT::EXPLICIT-FN-ACTIVE-VALUE-SLOT-SPEC
               IL-CONVERT::FFGETFROMIV-ACCESSOR-WRITER IL-CONVERT::FFSENDSELF-ACCESSOR-WRITER 
               IL-CONVERT::FIRSTFETCH-ACCESSOR-WRITER IL-CONVERT::GETFROMIV-ACCESSOR-WRITER 
               IL-CONVERT::GetValue)
        (PROP IL-CONVERT::CONVERT-COM CLASSES METHODS)
        (PROP IL-CONVERT::ACCESSOR-WRITER EveryFetch FFGetFromIV FFSendSelf FirstFetch GetFromIV 
              AVSendSelf)))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::@ (&REST IL-CONVERT::ARGS)
                                          (LET [(IL-CONVERT::EXPANSION (Parse@ IL-CONVERT::ARGS
                                                                              'IV]
                                               (OR (AND IL-CONVERT::EXPANSION (IL-CONVERT:CONVERT
                                                                               IL-CONVERT::EXPANSION)
                                                        )
                                                   (PROGN (CL:WARN "Unrecognizable @ form")
                                                          IL-CONVERT::*CURRENT-EXPRESSION*))))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::_ (IL-CONVERT::INST IL-CONVERT::METH &REST IL-CONVERT::ARGS)
                                          `(,IL-CONVERT::METH ,(IL-CONVERT:CONVERT IL-CONVERT::INST)
                                                  ,.(IL-CONVERT::MAPCONVERT IL-CONVERT::ARGS)))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::$ (IL-CONVERT::NAME)
                                          (LET ((IL-CONVERT::REC ($! IL-CONVERT::NAME)))
                                               (CL:IF (Class? IL-CONVERT::REC)
                                                   `[,(IL-CONVERT::MAKE-FAKE-SYMBOL "FIND-CLASS")
                                                     ',(IL-CONVERT:CONVERT IL-CONVERT::NAME]
                                                   (PROGN (CL:WARN 
                                                              "$ form doesn't refer to a known class"
                                                                 )
                                                          IL-CONVERT::*CURRENT-EXPRESSION*))))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::_! (IL-CONVERT::INST IL-CONVERT::METH &REST IL-CONVERT::ARGS)
                                           `(CL:FUNCALL ,(IL-CONVERT:CONVERT IL-CONVERT::METH)
                                                   ,(IL-CONVERT:CONVERT IL-CONVERT::INST)
                                                   ,.(IL-CONVERT::MAPCONVERT IL-CONVERT::ARGS)))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::_Super (&OPTIONAL IL-CONVERT::OBJ IL-CONVERT::SEL &REST 
                                                      IL-CONVERT::ARGS)
                                               (DECLARE (IGNORE IL-CONVERT::OBJ IL-CONVERT::SEL))
                                               (CONS (IL-CONVERT::MAKE-FAKE-SYMBOL "CALL-NEXT-METHOD"
                                                            )
                                                     (IL-CONVERT::MAPCONVERT IL-CONVERT::ARGS)))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::_Super? (IL-CONVERT::OBJ IL-CONVERT::SEL &REST 
                                                       IL-CONVERT::ARGS)
                                                (DECLARE (IGNORE IL-CONVERT::OBJ IL-CONVERT::SEL)
                                                       )
                                                `[AND (,(IL-CONVERT::MAKE-FAKE-SYMBOL "NEXT-METHOD-P"
                                                               ))
                                                      (,(IL-CONVERT::MAKE-FAKE-SYMBOL 
                                                               "CALL-NEXT-METHOD")
                                                       ,.(IL-CONVERT::MAPCONVERT IL-CONVERT::ARGS])

(CL:DEFUN IL-CONVERT::ACTIVE-VALUE-SLOT-SPEC (IL-CONVERT::NAME IL-CONVERT::DOC IL-CONVERT::OBJ 
                                                        IL-CONVERT::CLASS-NAME)
   (DECLARE (CL:DECLARATION CL:VALUES)
          (CL:VALUES IL-CONVERT::SLOT-SPEC &REST IL-CONVERT::AUX-DEFS))
   (CASE IL-CONVERT::*GETVALUE-TRANSLATION*
       (:SLOT-VALUE (LET ((IL-CONVERT::*CURRENT-EXPRESSION* IL-CONVERT::OBJ))
                         (CL:WARN "Active value in SLOT-VALUE GetValue mode")
                         IL-CONVERT::OBJ))
       (:ACCESSOR (CASE (ClassName IL-CONVERT::OBJ)
                      (ExplicitFnActiveValue (IL-CONVERT::EXPLICIT-FN-ACTIVE-VALUE-SLOT-SPEC 
                                                    IL-CONVERT::NAME IL-CONVERT::DOC IL-CONVERT::OBJ
                                                    IL-CONVERT::CLASS-NAME))
                      (CL:OTHERWISE 
                         [LET* ((IL-CONVERT::GM (GetIt (Class IL-CONVERT::OBJ)
                                                       'GetWrappedValue NIL 'METHOD))
                                [IL-CONVERT::GMCLASS (CL:SECOND (GETDEF IL-CONVERT::GM 'METHODS]
                                (IL-CONVERT::PM (GetIt (Class IL-CONVERT::OBJ)
                                                       'PutWrappedValue NIL 'METHOD))
                                (IL-CONVERT::PMCLASS (CL:SECOND (GETDEF IL-CONVERT::PM 'METHODS]
                         (LET ((IL-CONVERT::*CURRENT-EXPRESSION* IL-CONVERT::OBJ))
                              (CL:WARN "Unconvertable ~a in defclass" (ClassName IL-CONVERT::OBJ)))
                         IL-CONVERT::OBJ)))
       (:ACTIVE-VALUE (LET ((IL-CONVERT::*CURRENT-EXPRESSION* IL-CONVERT::OBJ))
                           (CL:WARN "Active value emulator not written yet")
                           IL-CONVERT::OBJ))))

(CL:DEFUN IL-CONVERT::AVSENDSELF-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                            IL-CONVERT::LOCALSTATE)
   [IL-CONVERT:CONVERT `(_ ,IL-CONVERT::SELFVAR ,IL-CONVERT::LOCALSTATE)])

(CL:DEFUN IL-CONVERT::CONVERT-CLASSES (IL-CONVERT::CS)
   (IL-CONVERT::MAP-INTO-CONTEXT 'IL-CONVERT::CONVERT-ONE-CLASS IL-CONVERT::CS))

(CL:DEFUN IL-CONVERT::CONVERT-METHODS (IL-CONVERT::MS)
   (CONS 'PROGN (IL-CONVERT::MAP-INTO-CONTEXT 'IL-CONVERT::CONVERT-ONE-METHOD IL-CONVERT::MS)))

(CL:DEFUN IL-CONVERT::CONVERT-ONE-CLASS (IL-CONVERT::C)
   ""
   [LET*
    ((IL-CONVERT::SRC (_ [OR ($! IL-CONVERT::C)
                             (LET ((IL-CONVERT::*CURRENT-EXPRESSION* IL-CONVERT::C))
                                  (CL:WARN "Class not found")
                                  (CL:RETURN-FROM IL-CONVERT::CONVERT-ONE-CLASS
                                         (LIST '* ';; (CL:FORMAT NIL "Class ~a not found." 
                                                             IL-CONVERT::C]
                         MakeFileSource))
     (IL-CONVERT::CLASSNAME (IL-CONVERT:CONVERT (CL:SECOND IL-CONVERT::SRC)))
     (IL-CONVERT::*CURRENT-DEFINITION* IL-CONVERT::CLASSNAME)
     (IL-CONVERT::*CURRENT-DEFINITION-TYPE* "Class")
     (IL-CONVERT::*CURRENT-FUNCTION-CALLS* (LIST IL-CONVERT::CLASSNAME))
     (IL-CONVERT::*CURRENT-FREE-REFERENCES* (LIST IL-CONVERT::CLASSNAME))
     (IL-CONVERT::ATTRIBUTES (CDDR IL-CONVERT::SRC))
     (IL-CONVERT::META (CDR (CL:ASSOC 'MetaClass IL-CONVERT::ATTRIBUTES)))
     (IL-CONVERT::SUPERS (CDR (CL:ASSOC 'Supers IL-CONVERT::ATTRIBUTES)))
     (IL-CONVERT::CVS (CDR (CL:ASSOC 'ClassVariables IL-CONVERT::ATTRIBUTES)))
     (IL-CONVERT::IVS (CDR (CL:ASSOC 'InstanceVariables IL-CONVERT::ATTRIBUTES)))
     IL-CONVERT::PROPS-ALIST IL-CONVERT::AUX-DEFS)
    (CL:LABELS
     ([IL-CONVERT::LOOPS-CONVERT (IL-CONVERT::X)
             (COND
                [(Class? IL-CONVERT::X)
                 `(IL-CONVERT::FIND-CLASS ',(IL-CONVERT:CONVERT (_ IL-CONVERT::X ClassName)]
                ((AnnotatedValue? IL-CONVERT::X)
                 (IL-CONVERT::AV-CONVERT IL-CONVERT::X))
                ((CL:CONSP IL-CONVERT::X)
                 (CL:MAPCAR #'IL-CONVERT::LOOPS-CONVERT IL-CONVERT::X))
                ((Instance? IL-CONVERT::X)
                 (LET ((IL-CONVERT::*CURRENT-EXPRESSION* IL-CONVERT::X))
                      (CL:WARN "Unconvertable LOOPS object in defclass"))
                 IL-CONVERT::X)
                (T (IL-CONVERT:CONVERT IL-CONVERT::X]
      (IL-CONVERT::AV-CONVERT (IL-CONVERT::NAME IL-CONVERT::DOC IL-CONVERT::OBJ)
             (CL:SETQ IL-CONVERT::OBJ (fetch annotatedValue of IL-CONVERT::OBJ))
             (LET [(CL:VALUES (CL:MULTIPLE-VALUE-LIST (IL-CONVERT::ACTIVE-VALUE-SLOT-SPEC 
                                                             IL-CONVERT::NAME IL-CONVERT::DOC 
                                                             IL-CONVERT::OBJ IL-CONVERT::CLASSNAME]
                  (CL:SETQ IL-CONVERT::AUX-DEFS (NCONC IL-CONVERT::AUX-DEFS (CDR CL:VALUES)))
                  (CAR CL:VALUES)))
      (IL-CONVERT::PROCESS-IV
       (IL-CONVERT::SPEC &OPTIONAL IL-CONVERT::ALLOC &AUX IL-CONVERT::DOC)
       (LET* [(IL-CONVERT::NAME (IL-CONVERT:CONVERT (CL:FIRST IL-CONVERT::SPEC)))
              (IL-CONVERT::OBJ (CL:SECOND IL-CONVERT::SPEC))
              (IL-CONVERT::DOC (CL:GETF (CDDR IL-CONVERT::SPEC)
                                      'doc))
              [IL-CONVERT::CONVERSION (CL:IF (type? annotatedValue IL-CONVERT::OBJ)
                                          (IL-CONVERT::AV-CONVERT IL-CONVERT::NAME IL-CONVERT::DOC 
                                                 IL-CONVERT::OBJ)
                                          `[,IL-CONVERT::NAME
                                            ,@[AND (CDR IL-CONVERT::SPEC)
                                                   `(:INITFORM ,(IL-CONVERT::LOOPS-CONVERT 
                                                                       IL-CONVERT::OBJ]
                                            :INITARG
                                            ,(CL:INTERN (STRING (CL:FIRST IL-CONVERT::SPEC))
                                                    *KEYWORD-PACKAGE*)
                                            ,@[AND IL-CONVERT::ALLOC `(:ALLOCATION 
                                                                             ,IL-CONVERT::ALLOC]
                                            ,@(AND IL-CONVERT::DOC `(:DOCUMENTATION ,IL-CONVERT::DOC])
                     ]
              (IL-CONVERT::PROPS (CL:COPY-LIST (CL:IF IL-CONVERT::DOC
                                                   (AND (CDDR (CDDR IL-CONVERT::SPEC))
                                                        (CDDR IL-CONVERT::SPEC))
                                                   (CDDR IL-CONVERT::SPEC))]

             (* ;; "The following (when not quoted) fails to compile, for some reason:")

             '(CL:REMF IL-CONVERT::PROPS 'doc)
             (CL:WHEN IL-CONVERT::PROPS
                 (CL:PUSH (CONS IL-CONVERT::NAME IL-CONVERT::PROPS)
                        IL-CONVERT::PROPS-ALIST))
             IL-CONVERT::CONVERSION)))
     (LET [(IL-CONVERT::FORM `(,(IL-CONVERT::MAKE-FAKE-SYMBOL "DEFCLASS")
                               ,IL-CONVERT::CLASSNAME
                               ,(IL-CONVERT::MAPCONVERT IL-CONVERT::SUPERS)
                               [,@(CL:REMOVE-IF 'NULL (CL:MAPCAR #'IL-CONVERT::PROCESS-IV 
                                                             IL-CONVERT::IVS))
                                ,@(CL:REMOVE-IF 'NULL (for IL-CONVERT::CV in IL-CONVERT::CVS
                                                         collect (IL-CONVERT::PROCESS-IV 
                                                                            IL-CONVERT::CV :CLASS)))
                                ,@(AND (OR IL-CONVERT::PROPS-ALIST IL-CONVERT::*ALWAYS-INCLUDE-PROPS*
                                           )
                                       `(IL-CONVERT::.PROPS-ALIST. :INITFORM '
                                                                              ,
                                                                              IL-CONVERT::PROPS-ALIST
                                               ]
                               ,@(CL:UNLESS (EQ (CAR IL-CONVERT::META)
                                                'Class)
                                     [LET [(IL-CONVERT::*CURRENT-EXPRESSION* (IL-CONVERT:CONVERT
                                                                              (CAR IL-CONVERT::META]
                                          (CL:WARN "Metaclass might be incorrect")
                                          `(:METACLASS ,IL-CONVERT::*CURRENT-EXPRESSION*])]
          (CL:IF IL-CONVERT::AUX-DEFS
              `(PROGN ,IL-CONVERT::FORM ,.IL-CONVERT::AUX-DEFS)
              IL-CONVERT::FORM)])

(CL:DEFUN IL-CONVERT::CONVERT-ONE-METHOD (IL-CONVERT::M)
   (LET* ((IL-CONVERT::METHOD-BODY (\DEFINE-TYPE-GETDEF IL-CONVERT::M 'METHOD-FNS))
          [IL-CONVERT::METHOD-CLASS (CL:FIRST (CL:FIRST (CL:SECOND IL-CONVERT::METHOD-BODY]
          [IL-CONVERT::METHOD-SELECTOR (CL:SECOND (CL:FIRST (CL:SECOND IL-CONVERT::METHOD-BODY]
          (IL-CONVERT::METHOD-ARGS (CDR (CL:SECOND IL-CONVERT::METHOD-BODY)))
          (IL-CONVERT::METHOD-FNBODY (CDDR IL-CONVERT::METHOD-BODY))
          (IL-CONVERT::*CURRENT-DEFINITION* IL-CONVERT::M)
          (IL-CONVERT::*CURRENT-DEFINITION-TYPE* "Function")
          (IL-CONVERT::*CURRENT-FUNCTION-CALLS* (LIST IL-CONVERT::M))
          (IL-CONVERT::*CURRENT-FREE-REFERENCES* (LIST IL-CONVERT::M))
          (IL-CONVERT::*SELF-VARIABLE* (CL:FIRST IL-CONVERT::METHOD-ARGS)))
         (DECLARE (CL:SPECIAL IL-CONVERT::*SELF-VARIABLE*))
         (CL:VALUES [CL:MULTIPLE-VALUE-BIND (IL-CONVERT::NEW-VARLST IL-CONVERT::VARNAMES)
                           (IL-CONVERT::EXPAND-VARLIST IL-CONVERT::METHOD-ARGS)
                           [LET ((IL-CONVERT::*LOCALS* (CL:COPY-LIST IL-CONVERT::VARNAMES)))
                                (CL:WHEN (AND (CDR IL-CONVERT::NEW-VARLST)
                                              IL-CONVERT::*PARAMETERS-ALWAYS-OPTIONAL*)
                                    (CL:PUSH '&OPTIONAL (CDR IL-CONVERT::NEW-VARLST)))]
                           `(,(IL-CONVERT::MAKE-FAKE-SYMBOL 'IL-CONVERT::DEFMETHOD)
                             ,IL-CONVERT::METHOD-SELECTOR
                             [(,(CL:FIRST IL-CONVERT::NEW-VARLST)
                               ,IL-CONVERT::METHOD-CLASS)
                              ,@(CDR IL-CONVERT::NEW-VARLST)
                              ,@(AND IL-CONVERT::*ADD-REST-ARG* '(&REST IL-CONVERT::$EXTRA-ARGS$]
                             ,.(IL-CONVERT::MAPCONVERT IL-CONVERT::METHOD-FNBODY]
                (CL:NREVERSE IL-CONVERT::*CURRENT-FUNCTION-CALLS*)
                (CL:NREVERSE IL-CONVERT::*CURRENT-FREE-REFERENCES*))))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::Class (IL-CONVERT::X)
                                              `(,(IL-CONVERT::MAKE-FAKE-SYMBOL 'IL-CONVERT::CLASS-OF)
                                                ,(IL-CONVERT:CONVERT IL-CONVERT::X)))

(CL:DEFUN IL-CONVERT::EVERYFETCH-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                            IL-CONVERT::LOCALSTATE)
   (CL:IF (OR (CL:SYMBOLP IL-CONVERT::LOCALSTATE)
              (IL-CONVERT::FAKE-SYMBOL-P IL-CONVERT::LOCALSTATE))
       `(CL:FUNCALL ,(IL-CONVERT:CONVERT IL-CONVERT::LOCALSTATE))
       (IL-CONVERT:CONVERT IL-CONVERT::LOCALSTATE)))

(CL:DEFUN IL-CONVERT::EXPLICIT-FN-ACTIVE-VALUE-SLOT-SPEC (IL-CONVERT::NAME IL-CONVERT::DOC 
                                                                    IL-CONVERT::OBJ 
                                                                    IL-CONVERT::CLASS-NAME)

   (* ;; "Old-style AVs done here.  ")

   (LET* ((IL-CONVERT::LS (@ IL-CONVERT::OBJ localState))
          (IL-CONVERT::GF (@ IL-CONVERT::OBJ getFn))
          (IL-CONVERT::PF (@ IL-CONVERT::OBJ putFn))
          (IL-CONVERT::CODEWRITER (GET IL-CONVERT::GF 'IL-CONVERT::ACCESSOR-WRITER))
          IL-CONVERT::DEFS)

         (* ;; " Write the accessor...")

         (CL:UNLESS IL-CONVERT::CODEWRITER
             (LET ((IL-CONVERT::*CURRENT-EXPRESSION* (LIST IL-CONVERT::NAME :INITFORM IL-CONVERT::OBJ
                                                           )))
                  (CL:WARN "No accessor-writer for ~a" IL-CONVERT::GF)
                  (CL:RETURN-FROM IL-CONVERT::EXPLICIT-FN-ACTIVE-VALUE-SLOT-SPEC 
                         IL-CONVERT::*CURRENT-EXPRESSION*)))
         (LET* [(CL:NAMESTRING (CL:IF (IL-CONVERT::FAKE-SYMBOL-P IL-CONVERT::NAME)
                                   (IL-CONVERT::FAKE-SYMBOL-NAME IL-CONVERT::NAME)
                                   (STRING IL-CONVERT::NAME)))
                [IL-CONVERT::VARNAME (AND (CL:CONSP IL-CONVERT::CODEWRITER)
                                          (CDR IL-CONVERT::CODEWRITER)
                                          (IL-CONVERT::MAKE-FAKE-SYMBOL (CL:CONCATENATE 'STRING 
                                                                               "!CACHE-FOR-" 
                                                                               CL:NAMESTRING]
                (IL-CONVERT::CODE (CL:FUNCALL (CL:IF (CL:CONSP IL-CONVERT::CODEWRITER)
                                                  (CAR IL-CONVERT::CODEWRITER)
                                                  IL-CONVERT::CODEWRITER)
                                         IL-CONVERT::VARNAME
                                         'self IL-CONVERT::LS))
                (IL-CONVERT::ACCESSOR (IL-CONVERT::MAKE-FAKE-SYMBOL (CL:CONCATENATE 'STRING 
                                                                           "!ACCESSOR-FOR-" 
                                                                           CL:NAMESTRING]
               (CL:PUSH `(,(IL-CONVERT::MAKE-FAKE-SYMBOL "DEFMETHOD")
                          ,IL-CONVERT::ACCESSOR
                          ((,(IL-CONVERT::MAKE-FAKE-SYMBOL "SELF")
                            ,IL-CONVERT::CLASS-NAME))
                          ,IL-CONVERT::CODE)
                      IL-CONVERT::DEFS)

               (* ;; "Look at putfn...")

               (CL:UNLESS (CL:MEMBER IL-CONVERT::PF '(ReplaceMe NoUpdatePermitted))
                   (LET [(IL-CONVERT::CODEWRITER (GET IL-CONVERT::PF 'IL-CONVERT::ACCESSOR-WRITER]
                        (CL:UNLESS IL-CONVERT::CODEWRITER
                            (LET ((IL-CONVERT::*CURRENT-EXPRESSION* (LIST IL-CONVERT::NAME :INITFORM
                                                                          IL-CONVERT::OBJ)))
                                 (CL:WARN "No accessor-writer for ~a" IL-CONVERT::PF)
                                 (CL:RETURN-FROM IL-CONVERT::EXPLICIT-FN-ACTIVE-VALUE-SLOT-SPEC 
                                        IL-CONVERT::*CURRENT-EXPRESSION*)))
                        (LET ((IL-CONVERT::CODE (CL:FUNCALL IL-CONVERT::CODEWRITER 
                                                       IL-CONVERT::VARNAME 'self IL-CONVERT::LS)))
                             (CL:PUSH `(,(IL-CONVERT::MAKE-FAKE-SYMBOL "DEFMETHOD")
                                        (CL:SETF ,IL-CONVERT::ACCESSOR)
                                        ((self ,IL-CONVERT::CLASS-NAME))
                                        ,IL-CONVERT::CODE)
                                    IL-CONVERT::DEFS))))

               (* ;; "Make slot spec...")

               (CL:APPLY 'CL:VALUES                          (* ; "values-list* y'might say")
                      [AND IL-CONVERT::VARNAME
                           `(,IL-CONVERT::VARNAME ,@(AND (EQ IL-CONVERT::PF 'ReplaceMe)
                                                         `(:WRITER (CL:SETF ,IL-CONVERT::ACCESSOR]
                      IL-CONVERT::DEFS))))

(CL:DEFUN IL-CONVERT::FFGETFROMIV-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                             IL-CONVERT::LOCALSTATE)
   `(CL:IF (IL-CONVERT::SLOT-BOUNDP ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        [CL:SETF (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
               (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::LOCALSTATE]))

(CL:DEFUN IL-CONVERT::FFSENDSELF-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                            IL-CONVERT::LOCALSTATE)
   `(CL:IF (IL-CONVERT::SLOT-BOUNDP ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        [CL:SETF (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
               ,(IL-CONVERT:CONVERT `(_ ,IL-CONVERT::SELFVAR ,IL-CONVERT::LOCALSTATE)]))

(CL:DEFUN IL-CONVERT::FIRSTFETCH-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                            IL-CONVERT::LOCALSTATE)
   `(CL:IF (IL-CONVERT::SLOT-BOUNDP ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
        (CL:SETF (IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::VARNAME)
               ,(CL:IF (OR (CL:SYMBOLP IL-CONVERT::LOCALSTATE)
                           (IL-CONVERT::FAKE-SYMBOL-P IL-CONVERT::LOCALSTATE))
                    `(CL:FUNCALL ,IL-CONVERT::LOCALSTATE)
                    IL-CONVERT::LOCALSTATE))))

(CL:DEFUN IL-CONVERT::GETFROMIV-ACCESSOR-WRITER (IL-CONVERT::VARNAME IL-CONVERT::SELFVAR 
                                                           IL-CONVERT::LOCALSTATE)
   `(IL-CONVERT::SLOT-VALUE ,IL-CONVERT::SELFVAR ',IL-CONVERT::LOCALSTATE))

(IL-CONVERT::IL-DEFCONV IL-CONVERT::GetValue (IL-CONVERT::INST &OPTIONAL IL-CONVERT::VAR 
                                                        IL-CONVERT::PROP)
                                                 [COND
                                                    (IL-CONVERT::PROP (LIST (
                                                                         IL-CONVERT::MAKE-FAKE-SYMBOL
                                                                             "SLOT-PROP-VALUE")
                                                                            (IL-CONVERT:CONVERT
                                                                             IL-CONVERT::INST)
                                                                            (IL-CONVERT:CONVERT
                                                                             IL-CONVERT::VAR)
                                                                            (IL-CONVERT:CONVERT
                                                                             IL-CONVERT::PROP)))
                                                    [IL-CONVERT::VAR
                                                     (CL:ECASE IL-CONVERT::*GETVALUE-TRANSLATION*
                                                         (:SLOT-VALUE (LIST 
                                                                     IL-CONVERT::*SLOT-VALUE-FAKESYM*
                                                                            (IL-CONVERT:CONVERT
                                                                             IL-CONVERT::INST)
                                                                            (IL-CONVERT:CONVERT
                                                                             IL-CONVERT::VAR)))
                                                         (:ACCESSOR 
                                                            (CL:IF (AND (CL:CONSP IL-CONVERT::VAR)
                                                                        (EQ (CAR IL-CONVERT::VAR)
                                                                            'QUOTE))
                                                                (LIST
                                                                 [IL-CONVERT::MAKE-FAKE-SYMBOL
                                                                  (CL:CONCATENATE
                                                                   'STRING "access-"
                                                                   (LET [(IL-CONVERT::NEWNAME
                                                                          (IL-CONVERT:CONVERT
                                                                           (CL:SECOND IL-CONVERT::VAR
                                                                                  ]
                                                                        (CL:IF (
                                                                            IL-CONVERT::FAKE-SYMBOL-P
                                                                                IL-CONVERT::NEWNAME)
                                                                            (
                                                                         IL-CONVERT::FAKE-SYMBOL-NAME
                                                                             IL-CONVERT::NEWNAME)
                                                                            (CL:SYMBOL-NAME 
                                                                                  IL-CONVERT::NEWNAME
                                                                                   ))]
                                                                 (IL-CONVERT:CONVERT IL-CONVERT::INST
                                                                        ))
                                                                (PROGN (CL:WARN 
                                                        "Unquoted IV spec in :ACCESSOR GetValue mode"
                                                                              )
                                                                       
                                                                     IL-CONVERT::*CURRENT-EXPRESSION*
                                                                       )))
                                                         (:ACTIVE-VALUE (IL-CONVERT::MAKE-FAKE-SYMBOL
                                                                         "ACTIVE-VALUE"
                                                                         (IL-CONVERT:CONVERT 
                                                                                IL-CONVERT::INST)
                                                                         (IL-CONVERT:CONVERT 
                                                                                IL-CONVERT::VAR))))]
                                                    (T (IL-CONVERT:CONVERT `(GetValue self
                                                                                   ,IL-CONVERT::INST])

(PUTPROPS CLASSES IL-CONVERT::CONVERT-COM IL-CONVERT::CONVERT-CLASSES)

(PUTPROPS METHODS IL-CONVERT::CONVERT-COM IL-CONVERT::CONVERT-METHODS)

(PUTPROPS EveryFetch IL-CONVERT::ACCESSOR-WRITER IL-CONVERT::EVERYFETCH-ACCESSOR-WRITER)

(PUTPROPS FFGetFromIV IL-CONVERT::ACCESSOR-WRITER (IL-CONVERT::FFGETFROMIV-ACCESSOR-WRITER . T))

(PUTPROPS FFSendSelf IL-CONVERT::ACCESSOR-WRITER (IL-CONVERT::FFSENDSELF-ACCESSOR-WRITER . T))

(PUTPROPS FirstFetch IL-CONVERT::ACCESSOR-WRITER (IL-CONVERT::FIRSTFETCH-ACCESSOR-WRITER . T))

(PUTPROPS GetFromIV IL-CONVERT::ACCESSOR-WRITER (IL-CONVERT::FFGETFROMIV-ACCESSOR-WRITER))

(PUTPROPS AVSendSelf IL-CONVERT::ACCESSOR-WRITER IL-CONVERT::AVSENDSELF-ACCESSOR-WRITER)
(PUTPROPS IL-LOOPS COPYRIGHT ("Savoir, Inc." 1989 1990))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL)))
STOP
