;;;-*-Mode:LISP; Package:(PCL (LISP WALKER)); Base:10; Syntax:Common-lisp -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1985, 1986, 1987 Xerox Corporation.  All rights reserved.
;;;
;;; Use and copying of this software and preparation of derivative works
;;; based upon this software are permitted.  Any distribution of this
;;; software or derivative works must comply with all applicable United
;;; States export control laws.
;;; 
;;; This software is made available AS IS, and Xerox Corporation makes no
;;; warranty about the software, its performance or its conformity to any
;;; specification.
;;; 
;;; Any person obtaining a copy of this software is requested to send their
;;; name and post office or electronic mail address to:
;;;   CommonLoops Coordinator
;;;   Xerox Artifical Intelligence Systems
;;;   2400 Hanover St.
;;;   Palo Alto, CA 94303
;;; (or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa)
;;;
;;; Suggestions, comments and requests for improvements are also welcome.
;;; *************************************************************************
;;;

(in-package 'pcl :use '(lisp walker))

;;;
;;; Some CommonLisps have more symbols in the Lisp package than the ones that
;;; are explicitly specified in CLtL.  This causes trouble. Any Lisp that has
;;; extra symbols in the Lisp package should shadow those symbols in the PCL
;;; package.
;;;
#+TI
(shadow '(string-append once-only destructuring-bind
	  memq assq delq neq true false
	  without-interrupts
	  defmethod)
	'pcl)

#+GCLisp
(shadow '(string-append memq assq delq neq make-instance))

#+Symbolics
(shadowing-import '(zl:arglist zwei:indentation) (find-package 'pcl))


;;;						
;;; These come from pages 2-3 and 2-4 of the CLOS specification.  These
;;; symbols are automatically exported by PCL.  See *other-exports* for
;;; other symbols you might want to use.
;;; 
  
(export '(defclass
	  make-instance
	  defmethod
	  defmethod-setf
	  defgeneric-options
	  defgeneric-options-setf
	  call-next-method
	  slot-value
	  with-slots
	  change-class
	  class-changed
	  
	  add-method
	  class-named
	  get-method
	  get-setf-generic-function
	  remove-method
	  
	  define-method-combination
	  make-method-call
	  method-qualifiers
	  method-combination-error
	  invalid-method-error
	  
	  class-of
	  print-object)

	(find-package 'pcl))





(defvar *other-exports* ' (standard-class
			   standard-generic-function
			   standard-method

			   
			   print-instance
			   make
			   initialize

			   class-prototype
			   class
			   object

			   essential-class
			   
			   class-name
			   class-precedence-list
			   class-local-supers
			   class-local-slots
			   class-direct-subclasses
			   class-direct-methods
			   class-slots

			   essential-method
			   
			   method-arglist
			   method-argument-specifiers			
			   method-function
			   
			   method-equal
			   
			   slotd-name
			   slot-missing
			   
			   define-meta-class
			   %allocate-instance
			   %instance-ref
			   %instancep
			   %instance-meta-class

			   allocate-instance
			   optimize-slot-value
			   optimize-setf-of-slot-value
			   add-named-class
			   class-for-redefinition
			   add-class
			   supers-changed
			   slots-changed
			   check-super-metaclass-compatibility
			   make-slotd
			   compute-class-precedence-list
			   walk-method-body
			   walk-method-body-form
			   add-named-method
			   add-method
			   remove-named-method
			   remove-method
			   find-method
			   find-method-internal
			   no-matching-method	


			   walker::variable-lexical-p  
			   ))