(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "XCL")(IL:FILECREATED "16-May-90 21:23:08" IL:{DSK}<usr>local>lde>lispcore>sources>READ-PRINT-PROFILE.;2 12400        IL:changes IL:to%:  (IL:VARS IL:READ-PRINT-PROFILECOMS)      IL:previous IL:date%: "13-Nov-86 11:37:11" IL:{DSK}<usr>local>lde>lispcore>sources>READ-PRINT-PROFILE.;1)(IL:* ; "Copyright (c) 1986, 1990 by Venue & Xerox Corporation.  All rights reserved.")(IL:PRETTYCOMPRINT IL:READ-PRINT-PROFILECOMS)(IL:RPAQQ IL:READ-PRINT-PROFILECOMS          ((IL:P (EXPORT '(MAKE-READ-PRINT-PROFILE COPY-READ-PRINT-PROFILE READ-PRINT-PROFILE-P                                  READ-PRINT-PROFILE-READTABLE READ-PRINT-PROFILE-READ-BASE                                  READ-PRINT-PROFILE-READ-SUPPRESS READ-PRINT-PROFILE-PACKAGE                                  READ-PRINT-PROFILE-READ-DEFAULT-FLOAT-FORMAT                                  READ-PRINT-PROFILE-PRINT-ESCAPE READ-PRINT-PROFILE-PRINT-PRETTY                                  READ-PRINT-PROFILE-PRINT-CIRCLE READ-PRINT-PROFILE-PRINT-BASE                                  READ-PRINT-PROFILE-PRINT-RADIX READ-PRINT-PROFILE-PRINT-CASE                                  READ-PRINT-PROFILE-PRINT-GENSYM READ-PRINT-PROFILE-PRINT-LEVEL                                  READ-PRINT-PROFILE-PRINT-LENGTH READ-PRINT-PROFILE-PRINT-ARRAY                                  READ-PRINT-PROFILE-PRINT-STRUCTURE RESTORE-READ-PRINT-PROFILE                                  SAVE-READ-PRINT-PROFILE WITH-READ-PRINT-PROFILE                                  *DEFAULT-READ-PRINT-PROFILE* FIND-READ-PRINT-PROFILE                                  LIST-ALL-READ-PRINT-PROFILE-NAMES)                        "XCL"))           (IL:STRUCTURES READ-PRINT-PROFILE)           (IL:FUNCTIONS MAKE-READ-PRINT-PROFILE RESTORE-READ-PRINT-PROFILE SAVE-READ-PRINT-PROFILE                   WITH-READ-PRINT-PROFILE FIND-READ-PRINT-PROFILE SETF-FIND-READ-PRINT-PROFILE                   LIST-ALL-READ-PRINT-PROFILE-NAMES)           (IL:SETFS FIND-READ-PRINT-PROFILE)           (IL:VARIABLES *READ-PRINT-PROFILES* *DEFAULT-READ-PRINT-PROFILE*)           (IL:PROP (IL:MAKEFILE-ENVIRONMENT IL:FILETYPE)                  IL:READ-PRINT-PROFILE)))(EXPORT '(MAKE-READ-PRINT-PROFILE COPY-READ-PRINT-PROFILE READ-PRINT-PROFILE-P                 READ-PRINT-PROFILE-READTABLE READ-PRINT-PROFILE-READ-BASE                 READ-PRINT-PROFILE-READ-SUPPRESS READ-PRINT-PROFILE-PACKAGE                 READ-PRINT-PROFILE-READ-DEFAULT-FLOAT-FORMAT READ-PRINT-PROFILE-PRINT-ESCAPE                 READ-PRINT-PROFILE-PRINT-PRETTY READ-PRINT-PROFILE-PRINT-CIRCLE                 READ-PRINT-PROFILE-PRINT-BASE READ-PRINT-PROFILE-PRINT-RADIX                 READ-PRINT-PROFILE-PRINT-CASE READ-PRINT-PROFILE-PRINT-GENSYM                 READ-PRINT-PROFILE-PRINT-LEVEL READ-PRINT-PROFILE-PRINT-LENGTH                 READ-PRINT-PROFILE-PRINT-ARRAY READ-PRINT-PROFILE-PRINT-STRUCTURE                 RESTORE-READ-PRINT-PROFILE SAVE-READ-PRINT-PROFILE WITH-READ-PRINT-PROFILE                 *DEFAULT-READ-PRINT-PROFILE* FIND-READ-PRINT-PROFILE                 LIST-ALL-READ-PRINT-PROFILE-NAMES)       "XCL")(DEFSTRUCT (READ-PRINT-PROFILE (:CONSTRUCTOR INTERNAL-MAKE-READ-PRINT-PROFILE))(IL:* IL:;;; "Holds complete collection of read / print affecting globals.")   READTABLE   READ-BASE   READ-SUPPRESS   PACKAGE   READ-DEFAULT-FLOAT-FORMAT   PRINT-ESCAPE   PRINT-PRETTY   PRINT-CIRCLE   PRINT-BASE   PRINT-RADIX   PRINT-CASE   PRINT-GENSYM   PRINT-LEVEL   PRINT-LENGTH   PRINT-ARRAY   PRINT-STRUCTURE)(DEFUN MAKE-READ-PRINT-PROFILE (&KEY (READTABLE *READTABLE*)                                         (READ-BASE *READ-BASE*)                                         (READ-SUPPRESS *READ-SUPPRESS*)                                         (PACKAGE *PACKAGE*)                                         (READ-DEFAULT-FLOAT-FORMAT *READ-DEFAULT-FLOAT-FORMAT*)                                         (PRINT-ESCAPE *PRINT-ESCAPE*)                                         (PRINT-PRETTY *PRINT-PRETTY*)                                         (PRINT-CIRCLE *PRINT-CIRCLE*)                                         (PRINT-BASE *PRINT-BASE*)                                         (PRINT-RADIX *PRINT-RADIX*)                                         (PRINT-CASE *PRINT-CASE*)                                         (PRINT-GENSYM *PRINT-GENSYM*)                                         (PRINT-LEVEL *PRINT-LEVEL*)                                         (PRINT-LENGTH *PRINT-LENGTH*))(IL:* IL:;;; "Create and return a profile with default contents the current bindings of the read print special variables.")   (INTERNAL-MAKE-READ-PRINT-PROFILE :READTABLE READTABLE :READ-BASE READ-BASE :READ-SUPPRESS           READ-SUPPRESS :PACKAGE PACKAGE :READ-DEFAULT-FLOAT-FORMAT READ-DEFAULT-FLOAT-FORMAT           :PRINT-ESCAPE PRINT-ESCAPE :PRINT-PRETTY PRINT-PRETTY :PRINT-CIRCLE PRINT-CIRCLE           :PRINT-BASE PRINT-BASE :PRINT-RADIX PRINT-RADIX :PRINT-CASE PRINT-CASE :PRINT-GENSYM           PRINT-GENSYM :PRINT-LEVEL PRINT-LEVEL :PRINT-LENGTH PRINT-LENGTH))(DEFUN RESTORE-READ-PRINT-PROFILE (PROFILE)   "Restore values of special io bindings from profile.  Sets current bindings.  Returns T."   (SETF *READTABLE* (READ-PRINT-PROFILE-READTABLE PROFILE))   (SETF *READ-BASE* (READ-PRINT-PROFILE-READ-BASE PROFILE))   (SETF *READ-SUPPRESS* (READ-PRINT-PROFILE-READ-SUPPRESS PROFILE))   (SETF *PACKAGE* (READ-PRINT-PROFILE-PACKAGE PROFILE))   (SETF *READ-DEFAULT-FLOAT-FORMAT* (READ-PRINT-PROFILE-READ-DEFAULT-FLOAT-FORMAT PROFILE))   (SETF *PRINT-ESCAPE* (READ-PRINT-PROFILE-PRINT-ESCAPE PROFILE))   (SETF *PRINT-PRETTY* (READ-PRINT-PROFILE-PRINT-PRETTY PROFILE))   (SETF *PRINT-CIRCLE* (READ-PRINT-PROFILE-PRINT-CIRCLE PROFILE))   (SETF *PRINT-BASE* (READ-PRINT-PROFILE-PRINT-BASE PROFILE))   (SETF *PRINT-RADIX* (READ-PRINT-PROFILE-PRINT-RADIX PROFILE))   (SETF *PRINT-CASE* (READ-PRINT-PROFILE-PRINT-CASE PROFILE))   (SETF *PRINT-GENSYM* (READ-PRINT-PROFILE-PRINT-GENSYM PROFILE))   (SETF *PRINT-LEVEL* (READ-PRINT-PROFILE-PRINT-LEVEL PROFILE))   (SETF *PRINT-LENGTH* (READ-PRINT-PROFILE-PRINT-LENGTH PROFILE))   (SETF *PRINT-ARRAY* (READ-PRINT-PROFILE-PRINT-ARRAY PROFILE))   (SETF *PRINT-STRUCTURE* (READ-PRINT-PROFILE-PRINT-STRUCTURE PROFILE))   T)(DEFUN SAVE-READ-PRINT-PROFILE (PROFILE)   "Capture bindings of special io variables.  Returns profile."   (SETF (READ-PRINT-PROFILE-READTABLE PROFILE)         *READTABLE*)   (SETF (READ-PRINT-PROFILE-READ-BASE PROFILE)         *READ-BASE*)   (SETF (READ-PRINT-PROFILE-READ-SUPPRESS PROFILE)         *READ-SUPPRESS*)   (SETF (READ-PRINT-PROFILE-PACKAGE PROFILE)         *PACKAGE*)   (SETF (READ-PRINT-PROFILE-READ-DEFAULT-FLOAT-FORMAT PROFILE)         *READ-DEFAULT-FLOAT-FORMAT*)   (SETF (READ-PRINT-PROFILE-PRINT-ESCAPE PROFILE)         *PRINT-ESCAPE*)   (SETF (READ-PRINT-PROFILE-PRINT-PRETTY PROFILE)         *PRINT-PRETTY*)   (SETF (READ-PRINT-PROFILE-PRINT-CIRCLE PROFILE)         *PRINT-CIRCLE*)   (SETF (READ-PRINT-PROFILE-PRINT-BASE PROFILE)         *PRINT-BASE*)   (SETF (READ-PRINT-PROFILE-PRINT-RADIX PROFILE)         *PRINT-RADIX*)   (SETF (READ-PRINT-PROFILE-PRINT-CASE PROFILE)         *PRINT-CASE*)   (SETF (READ-PRINT-PROFILE-PRINT-GENSYM PROFILE)         *PRINT-GENSYM*)   (SETF (READ-PRINT-PROFILE-PRINT-LEVEL PROFILE)         *PRINT-LEVEL*)   (SETF (READ-PRINT-PROFILE-PRINT-LENGTH PROFILE)         *PRINT-LENGTH*)   (SETF (READ-PRINT-PROFILE-PRINT-ARRAY PROFILE)         *PRINT-ARRAY*)   (SETF (READ-PRINT-PROFILE-PRINT-STRUCTURE PROFILE)         *PRINT-STRUCTURE*)   PROFILE)(DEFMACRO WITH-READ-PRINT-PROFILE (PROFILE-FORM &BODY FORMS)   "Bind all the special IO variables to the values in the profile and execute the body forms."   `(LET ((PROFILE ,PROFILE-FORM))         (LET ((*READTABLE* (READ-PRINT-PROFILE-READTABLE PROFILE))               (*READ-BASE* (READ-PRINT-PROFILE-READ-BASE PROFILE))               (*READ-SUPPRESS* (READ-PRINT-PROFILE-READ-SUPPRESS PROFILE))               (*PACKAGE* (READ-PRINT-PROFILE-PACKAGE PROFILE))               (*READ-DEFAULT-FLOAT-FORMAT* (READ-PRINT-PROFILE-READ-DEFAULT-FLOAT-FORMAT PROFILE))               (*PRINT-ESCAPE* (READ-PRINT-PROFILE-PRINT-ESCAPE PROFILE))               (*PRINT-PRETTY* (READ-PRINT-PROFILE-PRINT-PRETTY PROFILE))               (*PRINT-CIRCLE* (READ-PRINT-PROFILE-PRINT-CIRCLE PROFILE))               (*PRINT-BASE* (READ-PRINT-PROFILE-PRINT-BASE PROFILE))               (*PRINT-RADIX* (READ-PRINT-PROFILE-PRINT-RADIX PROFILE))               (*PRINT-CASE* (READ-PRINT-PROFILE-PRINT-CASE PROFILE))               (*PRINT-GENSYM* (READ-PRINT-PROFILE-PRINT-GENSYM PROFILE))               (*PRINT-LEVEL* (READ-PRINT-PROFILE-PRINT-LEVEL PROFILE))               (*PRINT-LENGTH* (READ-PRINT-PROFILE-PRINT-LENGTH PROFILE))               (*PRINT-ARRAY* (READ-PRINT-PROFILE-PRINT-ARRAY PROFILE))               (*PRINT-STRUCTURE* (READ-PRINT-PROFILE-PRINT-STRUCTURE PROFILE)))              ,@FORMS)))(DEFUN FIND-READ-PRINT-PROFILE (NAME)   (GETHASH (STRING-UPCASE NAME)          *READ-PRINT-PROFILES*))(DEFUN SETF-FIND-READ-PRINT-PROFILE (NAME READ-PRINT-PROFILE)   (CHECK-TYPE READ-PRINT-PROFILE READ-PRINT-PROFILE)   (SETF (GETHASH (STRING-UPCASE NAME)                *READ-PRINT-PROFILES*)         READ-PRINT-PROFILE))(DEFUN LIST-ALL-READ-PRINT-PROFILE-NAMES ()   (LET ((NAMES NIL))        (MAPHASH #'(LAMBDA (NAME VALUE)                          (PUSH NAME NAMES))               *READ-PRINT-PROFILES*)        NAMES))(DEFSETF FIND-READ-PRINT-PROFILE SETF-FIND-READ-PRINT-PROFILE)(DEFPARAMETER *READ-PRINT-PROFILES*   (LET ((TABLE (MAKE-HASH-TABLE :TEST 'EQUAL))         (LISP-TABLE (MAKE-READ-PRINT-PROFILE :READTABLE (IL:FIND-READTABLE "LISP")                            :READ-BASE 10 :READ-SUPPRESS NIL :PACKAGE (FIND-PACKAGE "USER")                            :READ-DEFAULT-FLOAT-FORMAT                            'SINGLE-FLOAT :PRINT-ESCAPE T :PRINT-PRETTY NIL :PRINT-CIRCLE NIL                             :PRINT-BASE 10 :PRINT-RADIX NIL :PRINT-CASE :UPCASE :PRINT-GENSYM T                             :PRINT-LEVEL NIL :PRINT-LENGTH NIL :PRINT-ARRAY NIL :PRINT-STRUCTURE NIL)                )         (XCL-TABLE (MAKE-READ-PRINT-PROFILE :READTABLE (IL:FIND-READTABLE "XCL")                           :READ-BASE 10 :READ-SUPPRESS NIL :PACKAGE (FIND-PACKAGE "XCL-USER")                           :READ-DEFAULT-FLOAT-FORMAT                           'SINGLE-FLOAT :PRINT-ESCAPE T :PRINT-PRETTY NIL :PRINT-CIRCLE NIL                            :PRINT-BASE 10 :PRINT-RADIX NIL :PRINT-CASE :UPCASE :PRINT-GENSYM T                            :PRINT-LEVEL NIL :PRINT-LENGTH NIL :PRINT-ARRAY NIL :PRINT-STRUCTURE NIL))         (INTERLISP-TABLE (MAKE-READ-PRINT-PROFILE :READTABLE (IL:FIND-READTABLE "INTERLISP")                                 :READ-BASE 10 :READ-SUPPRESS NIL :PACKAGE (FIND-PACKAGE "INTERLISP")                                 :READ-DEFAULT-FLOAT-FORMAT                                 'SINGLE-FLOAT :PRINT-ESCAPE T :PRINT-PRETTY NIL :PRINT-CIRCLE NIL                                  :PRINT-BASE 10 :PRINT-RADIX NIL :PRINT-CASE :UPCASE :PRINT-GENSYM T                                 :PRINT-LEVEL NIL :PRINT-LENGTH NIL :PRINT-ARRAY NIL :PRINT-STRUCTURE                                 NIL)))        (SETF (GETHASH "LISP" TABLE)              LISP-TABLE)        (SETF (GETHASH "XCL" TABLE)              XCL-TABLE)        (SETF (GETHASH "INTERLISP" TABLE)              INTERLISP-TABLE)        TABLE)   "Where read-print-modes live.")(DEFPARAMETER *DEFAULT-READ-PRINT-PROFILE* (FIND-READ-PRINT-PROFILE "INTERLISP")                                                                                "The default read & print state to be used when not explicitly set.")(IL:PUTPROPS IL:READ-PRINT-PROFILE IL:MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE                                                                           "XCL"))(IL:PUTPROPS IL:READ-PRINT-PROFILE IL:FILETYPE IL:COMPILE-FILE)(IL:PUTPROPS IL:READ-PRINT-PROFILE IL:COPYRIGHT ("Venue & Xerox Corporation" 1986 1990))(IL:DECLARE%: IL:DONTCOPY  (IL:FILEMAP (NIL)))IL:STOP