(FILECREATED "15-Jan-86 17:44:30" {ERIS}<LISPCORE>CML>LAB>CMLPACKAGE.;5 13441 changes to: (MACROS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE DO-ALL-SYMBOLS DO-EXTERNAL-SYMBOLS DO-SYMBOLS PKG::LISTIFY PKG::PACKAGIFY) (VARS CMLPACKAGECOMS) (FNS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE MAKE-PACKAGE PKG::INITIALIZE PKG::FIND-FREE-PACKAGE-INDEX EXPORT FIND-ALL-SYMBOLS FIND-PACKAGE FIND-SYMBOL IMPORT IN-PACKAGE INTERN LIST-ALL-PACKAGES RENAME-PACKAGE SHADOW SHADOWING-IMPORT UNEXPORT UNINTERN UNUSE-PACKAGE USE-PACKAGE) (RECORDS SYMBOL) previous date: " 2-Dec-85 16:07:11" {ERIS}<LISPCORE>CML>LAB>CMLPACKAGE.;2) (* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT CMLPACKAGECOMS) (RPAQQ CMLPACKAGECOMS [(FILES CMLHASH CMLSYMBOL CMLMVS) (* * Should be in CMLSYMBOL but needs internal rep) (MACROS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE) (FNS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE) (* * External interface) (MACROS DO-ALL-SYMBOLS DO-EXTERNAL-SYMBOLS DO-SYMBOLS) (FNS EXPORT FIND-ALL-SYMBOLS FIND-PACKAGE FIND-SYMBOL IMPORT IN-PACKAGE INTERN LIST-ALL-PACKAGES MAKE-PACKAGE RENAME-PACKAGE SHADOW SHADOWING-IMPORT UNEXPORT UNINTERN UNUSE-PACKAGE USE-PACKAGE) (* * And the FNS: PACKAGE-NAME PACKAGE-NICKNAMES PACKAGE-SHADOWING-SYMBOLS PACKAGE-USE-LIST PACKAGE-USED-BY-LIST) (* * Internal interface) (RECORDS PACKAGE SYMBOL) (INITVARS (PKG::ALL-PACKAGES NIL) (PKG::KEYWORD-PACKAGE NIL) (PKG::INDEX-TO-PACKAGE-VECTOR NIL) (PKG::PACKAGE-TO-INDEX-HASHTABLE NIL)) (MACROS PKG::LISTIFY PKG::PACKAGIFY) (FNS PKG::INITIALIZE PKG::FIND-INHERITED-SYMBOL PKG::STRINGIFY PKG::FIND-FREE-PACKAGE-INDEX ADD-NICKNAMES) (P (PKG::INITIALIZE)) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA USE-PACKAGE UNUSE-PACKAGE UNINTERN UNEXPORT SHADOWING-IMPORT SHADOW RENAME-PACKAGE MAKE-PACKAGE INTERN IN-PACKAGE IMPORT FIND-SYMBOL EXPORT]) (FILESLOAD CMLHASH CMLSYMBOL CMLMVS) (* * Should be in CMLSYMBOL but needs internal rep) (DECLARE: EVAL@COMPILE [PUTPROPS SYMBOL-PACKAGE DMACRO ((obj) (AREF PKG::INDEX-TO-PACKAGE-VECTOR (ffetch (SYMBOL PACKAGE) of obj] [PUTPROPS SETF-SYMBOL-PACKAGE DMACRO ((obj value) (freplace (SYMBOL PACKAGE) of obj with (CL:GETHASH PKG::PACKAGE-TO-INDEX-HASHTABLE value] ) (DEFINEQ (SYMBOL-PACKAGE (CL:LAMBDA (SYMBOL) (* raf "14-Jan-86 13:27") (AREF PKG::INDEX-TO-PACKAGE-VECTOR (ffetch (SYMBOL PACKAGE) of SYMBOL)))) (SETF-SYMBOL-PACKAGE (CL:LAMBDA (SYMBOL PACKAGE) (* raf "14-Jan-86 13:23") (freplace (SYMBOL PACKAGE) of SYMBOL with (CL:GETHASH PKG::PACKAGE-TO-INDEX-HASHTABLE PACKAGE)))) ) (* * External interface) (DECLARE: EVAL@COMPILE (DEFMACRO DO-ALL-SYMBOLS (&BODY FORM) NIL) (DEFMACRO DO-EXTERNAL-SYMBOLS (&BODY FORM) NIL) (DEFMACRO DO-SYMBOLS (&BODY FORM) NIL) ) (DEFINEQ (EXPORT (CL:LAMBDA (SYMBOLS &OPTIONAL PACKAGE) NIL)) (FIND-ALL-SYMBOLS (CL:LAMBDA (STRING-OR-SYMBOL) NIL)) (FIND-PACKAGE (CL:LAMBDA (NAME) (* raf "17-Nov-85 02:20") (CL:GETHASH (PKG::STRINGIFY NAME) PKG::ALL-PACKAGES NIL))) (FIND-SYMBOL [CL:LAMBDA (STRING &OPTIONAL (PACKAGE *PACKAGE*)) (* raf "19-Nov-85 17:00") (LET (SYMBOL) (COND ((SETQ SYMBOL (CL:GETHASH STRING (PACKAGE-INTERNALS-HASHTABLE PACKAGE))) (VALUES SYMBOL :INTERNAL)) ((SETQ SYMBOL (CL:GETHASH STRING (PACKAGE-EXTERNALS-HASHTABLE PACKAGE))) (VALUES SYMBOL :EXTERNAL)) (T (PKG::FIND-INHERITED-SYMBOL STRING (PACKAGE-USE-LIST PACKAGE]) (IMPORT (CL:LAMBDA (SYMBOLS &OPTIONAL PACKAGE) NIL)) (IN-PACKAGE (CL:LAMBDA (PACKAGE-NAME &KEY NICKNAMES USE) (* raf "17-Nov-85 02:44") (SETF *PACKAGE* (OR (FIND-PACKAGE PACKAGE-NAME) (MAKE-PACKAGE PACKAGE-NAME))) (ADD-NICKNAMES NICKNAMES *PACKAGE*) (USE-PACKAGE USE *PACKAGE*))) (INTERN [CL:LAMBDA (STRING &OPTIONAL (PACKAGE *PACKAGE*)) (* raf "19-Nov-85 16:53") "Put symbol in package. Special case for KEYWORD package (always :EXTERNAL, always self-eval)" (MULTIPLE-VALUE-BIND (SYMBOL TYPE) (FIND-SYMBOL STRING PACKAGE) (CL:IF SYMBOL (VALUES SYMBOL TYPE) (CL:IF (EQ PACKAGE PKG::KEYWORD-PACKAGE) (MULTIPLE-VALUE-PROG1 (VALUES (SETQ SYMBOL (CL:PUTHASH STRING ( PACKAGE-EXTERNALS-HASHTABLE PACKAGE) (MAKE-SYMBOL :NAME STRING :PACKAGE PACKAGE))) :EXTERNAL) (SET SYMBOL SYMBOL)) (VALUES (CL:PUTHASH STRING (PACKAGE-INTERNALS-HASHTABLE PACKAGE) (MAKE-SYMBOL :NAME STRING :PACKAGE PACKAGE)) :INTERNAL]) (LIST-ALL-PACKAGES (CL:LAMBDA NIL (* raf "17-Nov-85 02:35") (LET ((ALL NIL)) (CL:MAPHASH (FUNCTION [LAMBDA (NAME PACKAGE) (CL:PUSH PACKAGE ALL]) PKG::ALL-PACKAGES) ALL))) (MAKE-PACKAGE (CL:LAMBDA (PACKAGE-NAME &KEY NICKNAMES (USE "LISP")) (* raf "14-Jan-86 18:44") (LET ([NEW-PACKAGE (INTERNAL-MAKE-PACKAGE :NAME PACKAGE-NAME :NICKNAMES NIL :USE-LIST NIL :USED-BY-LIST NIL :SHADOWING-SYMBOLS NIL :HASHTABLE (MAKE-HASH-TABLE :SIZE 20 :TEST (QUOTE EQUAL)) :EXTERNALS (MAKE-HASH-TABLE :SIZE 5 :TEST (QUOTE EQUAL] (PACKAGE-INDEX (PKG::FIND-FREE-PACKAGE-INDEX))) (SETF (CL:GETHASH PACKAGE-NAME PKG::ALL-PACKAGES) NEW-PACKAGE) (SETF (CL:GETHASH PKG::PACKAGE-TO-INDEX-HASHTABLE NEW-PACKAGE) PACKAGE-INDEX) (SETF (AREF PKG::INDEX-TO-PACKAGE-VECTOR PACKAGE-INDEX) NEW-PACKAGE) (ADD-NICKNAMES NICKNAMES NEW-PACKAGE) (USE-PACKAGE USE NEW-PACKAGE) NEW-PACKAGE))) (RENAME-PACKAGE (CL:LAMBDA (PACKAGE NEW-NAME &OPTIONAL NEW-NICKNAMES) (* raf "17-Nov-85 03:01") (REMHASH (PACKAGE-NAME PACKAGE) PKG::ALL-PACKAGES) (CL:MAPCAR (FUNCTION [LAMBDA (N) (REMHASH N PKG:ALL-PACKAGES]) (PACKAGE-NICKNAMES PACKAGE)) (SETF (PACKAGE-NAME PACKAGE) (PKG::STRINGIFY NEW-NAME)) (ADD-NICKNAMES NEW-NICKNAMES PACKAGE))) (SHADOW (CL:LAMBDA (SYMBOLS &OPTIONAL PACKAGE) NIL)) (SHADOWING-IMPORT (CL:LAMBDA (SYMBOLS &OPTIONAL PACKAGE) NIL)) (UNEXPORT (CL:LAMBDA (SYMBOLS &OPTIONAL PACKAGE) NIL)) (UNINTERN [CL:LAMBDA (SYMBOL &OPTIONAL (PACKAGE *PACKAGE*)) (* raf "19-Nov-85 17:08") (LET (SYMBOL HASHTABLE (STRING (SYMBOL-NAME SYMBOL))) (COND ([OR [SETQ SYMBOL (CL:GETHASH STRING (SETQ HASHTABLE (PACKAGE-INTERNALS-HASHTABLE PACKAGE] (SETQ SYMBOL (CL:GETHASH STRING (SETQ HASHTABLE (PACKAGE-EXTERNALS-HASHTABLE PACKAGE] (REMHASH STRING HASHTABLE) (SETF (PACKAGE-SHADOWING-SYMBOLS PACKAGE) (REMOVE SYMBOL (PACKAGE-SHADOWING-SYMBOLS PACKAGE))) (CL:IF (EQ PACKAGE (SYMBOL-PACKAGE SYMBOL)) (SETF (SYMBOL-PACKAGE SYMBOL) NIL)) T) (T NIL]) (UNUSE-PACKAGE (CL:LAMBDA (PACKAGES-TO-UNUSE &OPTIONAL PACKAGE) NIL)) (USE-PACKAGE (CL:LAMBDA (PACKAGES-TO-USE &OPTIONAL (PACKAGE *PACKAGE*)) (* raf "13-Jan-86 22:03") (CL:MAPCAR [FUNCTION (LAMBDA (X) (SETQ X (PKG::PACKAGIFY X)) (CL:PUSH X (PACKAGE-USE-LIST PACKAGE)) (CL:PUSH PACKAGE (PACKAGE-USED-BY-LIST X] (PKG::LISTIFY PACKAGES-TO-USE)))) ) (* * And the FNS: PACKAGE-NAME PACKAGE-NICKNAMES PACKAGE-SHADOWING-SYMBOLS PACKAGE-USE-LIST PACKAGE-USED-BY-LIST) (* * Internal interface) [DECLARE: EVAL@COMPILE (DEFSTRUCT (PACKAGE (:CONSTRUCTOR INTERNAL-MAKE-PACKAGE) (:PRINT-FUNCTION NIL)) NAME NICKNAMES INTERNALS-HASHTABLE USE-LIST USED-BY-LIST SHADOWING-SYMBOLS EXTERNALS-HASHTABLE) (ACCESSFNS SYMBOL ((DEFINITIONCELL (\DEFCELL DATUM)) (PROPCELL (\PROPCELL DATUM)) (VCELL (\VALCELL DATUM)) (PNAMECELL (\PNAMECELL DATUM))) (* * VCELL can also be accessed directly from a value index via the record VALINDEX (as in \SETGLOBALVAL.UFN) - Similarly, PNAMEINDEX accesses PNAMECELL for use by \MKATOM and UNCOPYATOM) (TYPE? (LITATOM DATUM)) (BLOCKRECORD PROPCELL ((NIL BITS 1) (GENSYMP FLAG) (FATPNAMEP FLAG) (NIL BITS 5) (PROPLIST POINTER))) (BLOCKRECORD PNAMECELL ((PACKAGE BITS 8) (PNAMESTR POINTER)))) ] (/DECLAREDATATYPE (QUOTE PACKAGE) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((PACKAGE 0 POINTER) (PACKAGE 2 POINTER) (PACKAGE 4 POINTER) (PACKAGE 6 POINTER) (PACKAGE 8 POINTER) (PACKAGE 10 POINTER) (PACKAGE 12 POINTER))) (QUOTE 14)) (RPAQ? PKG::ALL-PACKAGES NIL) (RPAQ? PKG::KEYWORD-PACKAGE NIL) (RPAQ? PKG::INDEX-TO-PACKAGE-VECTOR NIL) (RPAQ? PKG::PACKAGE-TO-INDEX-HASHTABLE NIL) (DECLARE: EVAL@COMPILE [DEFMACRO PKG::LISTIFY (X) (BQUOTE (CL:IF (LISTP (\, X)) (\, X) (LIST (\, X] [DEFMACRO PKG::PACKAGIFY (X) (BQUOTE (CL:IF (PACKAGE-P (\, X)) (\, X) (FIND-PACKAGE (\, X] ) (DEFINEQ (PKG::INITIALIZE (CL:LAMBDA NIL (* raf "14-Jan-86 18:44") (SETF PKG::ALL-PACKAGES (MAKE-HASH-TABLE :SIZE 512 :TEST (QUOTE EQUAL))) (SETF PKG::INDEX-TO-PACKAGE-VECTOR (MAKE-ARRAY 256 :INITIAL-ELEMENT NIL)) (SETF PKG::PACKAGE-TO-INDEX-HASHTABLE (MAKE-HASH-TABLE :SIZE 512 :TEST (QUOTE EQL))) (MAKE-PACKAGE "LISP") (SETF PKG::KEYWORD-PACKAGE (MAKE-PACKAGE "KEYWORD")) (MAKE-PACKAGE "SYSTEM") (SETF *PACKAGE* (MAKE-PACKAGE "USER" :USE "LISP")))) (PKG::FIND-INHERITED-SYMBOL [CL:LAMBDA (STRING PACKAGES) (* raf "19-Nov-85 16:12") (CL:DO* ((PACKAGE PACKAGES (CDR PACKAGES)) (SYMBOL (CL:GETHASH STRING (PACKAGE-EXTERNALS-HASHTABLE PACKAGE) NIL) (CL:GETHASH STRING (PACKAGE-EXTERNALS-HASHTABLE PACKAGE) NIL))) ((OR SYMBOL (NULL PACKAGE)) (CL:IF SYMBOL (VALUES SYMBOL :EXTERNAL) NIL]) (PKG::STRINGIFY (CL:LAMBDA (OBJECT) (* raf "10-Oct-85 18:24") (CL:IF (STRINGP OBJECT) OBJECT (SYMBOL-NAME OBJECT)))) (PKG::FIND-FREE-PACKAGE-INDEX [CL:LAMBDA NIL (CL:DO ((I 1 (INCR I))) ((= I MAX-NUMBER-PACKAGES) (ERROR "Package space full" NIL)) (CL:IF (NULL (AREF PKG::INDEX-TO-PACKAGE-VECTOR I)) (RETURN I]) (ADD-NICKNAMES (CL:LAMBDA (NICKNAMES PACKAGE) (* raf "17-Nov-85 02:56") (CL:MAPCAR [FUNCTION (LAMBDA (X) (SETF X (PKG::STRINGIFY X)) (SETF (CL:GETHASH X PKG::ALL-PACKAGES) PACKAGE) (CL:PUSH X (PACKAGE-NICKNAMES PACKAGE] NICKNAMES))) ) (PKG::INITIALIZE) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA USE-PACKAGE UNUSE-PACKAGE UNINTERN UNEXPORT SHADOWING-IMPORT SHADOW RENAME-PACKAGE MAKE-PACKAGE INTERN IN-PACKAGE IMPORT FIND-SYMBOL EXPORT) ) (PRETTYCOMPRINT CMLPACKAGECOMS) (RPAQQ CMLPACKAGECOMS [(FILES CMLHASH CMLSYMBOL CMLMVS) (* * Should be in CMLSYMBOL but needs internal rep) (MACROS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE) (FNS SYMBOL-PACKAGE SETF-SYMBOL-PACKAGE) (* * External interface) (MACROS DO-ALL-SYMBOLS DO-EXTERNAL-SYMBOLS DO-SYMBOLS) (FNS EXPORT FIND-ALL-SYMBOLS FIND-PACKAGE FIND-SYMBOL IMPORT IN-PACKAGE INTERN LIST-ALL-PACKAGES MAKE-PACKAGE RENAME-PACKAGE SHADOW SHADOWING-IMPORT UNEXPORT UNINTERN UNUSE-PACKAGE USE-PACKAGE) (* * And the FNS: PACKAGE-NAME PACKAGE-NICKNAMES PACKAGE-SHADOWING-SYMBOLS PACKAGE-USE-LIST PACKAGE-USED-BY-LIST) (* * Internal interface) (RECORDS PACKAGE SYMBOL) (INITVARS (PKG::ALL-PACKAGES NIL) (PKG::KEYWORD-PACKAGE NIL) (PKG::INDEX-TO-PACKAGE-VECTOR NIL) (PKG::PACKAGE-TO-INDEX-HASHTABLE NIL)) (MACROS PKG::LISTIFY PKG::PACKAGIFY) (FNS PKG::INITIALIZE PKG::FIND-INHERITED-SYMBOL PKG::STRINGIFY PKG::FIND-FREE-PACKAGE-INDEX ADD-NICKNAMES) (P (PKG::INITIALIZE)) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA USE-PACKAGE UNUSE-PACKAGE UNINTERN UNEXPORT SHADOWING-IMPORT SHADOW RENAME-PACKAGE INTERN IN-PACKAGE IMPORT FIND-SYMBOL EXPORT MAKE-PACKAGE]) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA USE-PACKAGE UNUSE-PACKAGE UNINTERN UNEXPORT SHADOWING-IMPORT SHADOW RENAME-PACKAGE INTERN IN-PACKAGE IMPORT FIND-SYMBOL EXPORT MAKE-PACKAGE) ) (PUTPROPS CMLPACKAGE COPYRIGHT ("Xerox Corporation" 1985 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (2406 2864 (SYMBOL-PACKAGE 2416 . 2616) (SETF-SYMBOL-PACKAGE 2618 . 2862)) (3061 8007 ( EXPORT 3071 . 3133) (FIND-ALL-SYMBOLS 3135 . 3198) (FIND-PACKAGE 3200 . 3383) (FIND-SYMBOL 3385 . 3849 ) (IMPORT 3851 . 3913) (IN-PACKAGE 3915 . 4202) (INTERN 4204 . 5101) (LIST-ALL-PACKAGES 5103 . 5368) ( MAKE-PACKAGE 5370 . 6222) (RENAME-PACKAGE 6224 . 6634) (SHADOW 6636 . 6698) (SHADOWING-IMPORT 6700 . 6772) (UNEXPORT 6774 . 6838) (UNINTERN 6840 . 7538) (UNUSE-PACKAGE 7540 . 7619) (USE-PACKAGE 7621 . 8005)) (9717 11494 (PKG::INITIALIZE 9727 . 10290) (PKG::FIND-INHERITED-SYMBOL 10292 . 10737) ( PKG::STRINGIFY 10739 . 10924) (PKG::FIND-FREE-PACKAGE-INDEX 10926 . 11166) (ADD-NICKNAMES 11168 . 11492))))) STOP