Simplify (and robustify) regular PACKing
[sbcl.git] / src / pcl / generic-functions.lisp
index 8cb3e01..0b633a6 100644 (file)
@@ -14,6 +14,8 @@
 
 (defgeneric classp (object))
 
+(defgeneric condition-class-p (object))
+
 (defgeneric eql-specializer-p (object))
 
 (defgeneric exact-class-specializer-p (object))
@@ -24,8 +26,6 @@
 
 (defgeneric generic-function-p (object))
 
-(defgeneric legal-lambda-list-p (object x))
-
 (defgeneric method-combination-p (object))
 
 (defgeneric method-p (object))
 
 (defgeneric class-incompatible-superclass-list (pcl-class))
 
-(defgeneric class-initialize-info (slot-class))
-
 (defgeneric class-name (class))
 
 (defgeneric class-precedence-list (pcl-class))
 
-(defgeneric class-predicate-name (class))
-
 (defgeneric class-wrapper (pcl-class))
 
 (defgeneric definition-source (definition-source-mixin))
 
 (defgeneric eql-specializer-object (eql-specializer))
 
+(defgeneric generic-function-declarations (standard-generic-function))
+
 (defgeneric generic-function-method-class (standard-generic-function))
 
 (defgeneric generic-function-method-combination (standard-generic-function))
 
 (defgeneric method-combination-options (standard-method-combination))
 
-(defgeneric method-combination-type (standard-method-combination))
-
-(defgeneric method-fast-function (standard-method))
+(defgeneric method-combination-type-name (standard-method-combination))
 
 (defgeneric method-generic-function (standard-method))
 
 
 (defgeneric short-combination-operator (short-method-combination))
 
-(defgeneric slot-definition-boundp-function (effective-slot-definition))
-
 (defgeneric slot-definition-class (slot-definition))
 
 (defgeneric slot-definition-defstruct-accessor-symbol
 
 (defgeneric slot-definition-name (slot-definition))
 
-(defgeneric slot-definition-reader-function (effective-slot-definition))
+(defgeneric slot-definition-info (effective-slot-definition))
 
 (defgeneric slot-definition-readers (slot-definition))
 
 (defgeneric slot-definition-type (slot-definition))
 
-(defgeneric slot-definition-writer-function (effective-slot-definition))
-
 (defgeneric slot-definition-writers (slot-definition))
 
 (defgeneric specializer-object (class-eq-specializer))
 
 (defgeneric (setf class-incompatible-superclass-list) (new-value pcl-class))
 
-(defgeneric (setf class-initialize-info) (new-value slot-class))
-
 (defgeneric (setf class-name) (new-value class))
 
 (defgeneric (setf class-slots) (new-value slot-class))
 
 (defgeneric (setf generic-function-method-class) (new-value
-                                                 standard-generic-function))
+                                                  standard-generic-function))
 
 (defgeneric (setf generic-function-method-combination)
   (new-value standard-generic-function))
 
+(defgeneric (setf generic-function-declarations) (new-value
+                                                  standard-generic-function))
+
 (defgeneric (setf generic-function-methods) (new-value
-                                            standard-generic-function))
+                                             standard-generic-function))
 
 (defgeneric (setf generic-function-name) (new-value standard-generic-function))
 
 (defgeneric (setf object-plist) (new-value plist-mixin))
 
 (defgeneric (setf slot-definition-allocation) (new-value
-                                              standard-slot-definition))
-
-(defgeneric (setf slot-definition-boundp-function)
-  (new-value effective-slot-definition))
+                                               standard-slot-definition))
 
 (defgeneric (setf slot-definition-class) (new-value slot-definition))
 
 
 (defgeneric (setf slot-definition-name) (new-value slot-definition))
 
-(defgeneric (setf slot-definition-reader-function) (new-value
-                                                   effective-slot-definition))
+(defgeneric (setf slot-definition-info) (new-value effective-slot-definition))
 
 (defgeneric (setf slot-definition-readers) (new-value slot-definition))
 
 \f
 ;;;; 1 argument
 
-(defgeneric accessor-method-class (method))
-
 (defgeneric accessor-method-slot-name (m))
 
 (defgeneric class-default-initargs (class))
 
 (defgeneric function-keywords (method))
 
+(defgeneric function-keyword-parameters (method))
+
+(defgeneric generic-function-argument-precedence-order (gf))
+
 (defgeneric generic-function-lambda-list (gf))
 
 (defgeneric generic-function-pretty-arglist (generic-function))
 
 (defgeneric method-lambda-list (m))
 
-(defgeneric method-pretty-arglist (method))
-
 (defgeneric method-qualifiers (m))
 
 (defgeneric method-specializers (m))
 
 (defgeneric add-method (generic-function method))
 
-(defgeneric change-class (instance new-class-name))
+(defgeneric (setf class-slot-cells) (new-value class))
 
 (defgeneric class-slot-value (class slot-name))
 
 (defgeneric compute-applicable-methods-using-classes
   (generic-function classes))
 
-(defgeneric compute-effective-slot-definition (class dslotds))
-
 (defgeneric compute-effective-slot-definition-initargs (class direct-slotds))
 
-(defgeneric default-initargs (class supplied-initargs))
-
 (defgeneric describe-object (object stream))
 
-(defgeneric direct-slot-definition-class (class initargs))
-
-(defgeneric effective-slot-definition-class (class initargs))
-
-(defgeneric inform-type-system-about-class (class name))
+(defgeneric direct-slot-definition-class (class &rest initargs))
 
-(defgeneric legal-documentation-p (object x))
-
-(defgeneric legal-method-function-p (object x))
-
-(defgeneric legal-qualifier-p (object x))
-
-(defgeneric legal-qualifiers-p (object x))
-
-(defgeneric legal-slot-name-p (object x))
-
-(defgeneric legal-specializer-p (object x))
-
-(defgeneric legal-specializers-p (object x))
+(defgeneric effective-slot-definition-class (class &rest initargs))
 
 (defgeneric make-boundp-method-function (class slot-name))
 
 
 (defgeneric map-dependents (metaobject function))
 
+(defgeneric parse-specializer-using-class (generic-function specializer-name))
+
 (defgeneric remove-boundp-method (class generic-function))
 
 (defgeneric remove-dependent (metaobject dependent))
 ;;; This controls DESCRIBE-OBJECT (SLOT-OBJECT STREAM) behavior.
 (defgeneric slots-to-inspect (class object))
 
-(defgeneric update-gf-dfun (class gf))
+(defgeneric unparse-specializer-using-class (generic-function specializer))
 
-(defgeneric validate-superclass (fsc class))
+(defgeneric validate-superclass (class superclass))
 
 (defgeneric (setf documentation) (new-value slotd doc-type)
   (:argument-precedence-order doc-type slotd new-value))
 \f
 ;;;; 3 arguments
 
-(defgeneric add-boundp-method (class generic-function slot-name))
-
-(defgeneric add-reader-method (class generic-function slot-name))
-
-(defgeneric add-writer-method (class generic-function slot-name))
-
 (defgeneric (setf class-slot-value) (nv class slot-name))
 
+;;; CMUCL comment (from Gerd Moellmann/Pierre Mai, 2002-10-19):
+;;;
+;;; According to AMOP, COMPUTE-EFFECTIVE-METHOD should return two
+;;; values.  Alas, the second value is only vaguely described in AMOP,
+;;; and, when asked on 2002-10-18, Gregor Kiczales said he couldn't
+;;; remember what the second value was supposed to be.  So, PCL's
+;;; COMPUTE-EFFECTIVE-METHOD returns one value as do Allegro and
+;;; Lispworks.
 (defgeneric compute-effective-method (generic-function
-                                     combin
-                                     applicable-methods))
+                                      combin
+                                      applicable-methods))
+
+(defgeneric compute-effective-slot-definition (class name dslotds))
 
 (defgeneric compute-slot-accessor-info (slotd type gf))
 
 (defgeneric find-method-combination (generic-function type options))
 
+(defgeneric invalid-qualifiers (generic-function combin method))
+
 (defgeneric (setf slot-accessor-function) (function slotd type))
 
 (defgeneric (setf slot-accessor-std-p) (value slotd type))
 \f
 ;;;; 4 arguments
 
-(defgeneric make-method-lambda (proto-generic-function
-                               proto-method
-                               lambda-expression
-                               environment))
+(defgeneric make-method-lambda
+    (proto-generic-function proto-method lambda-expression environment))
+
+(defgeneric make-method-specializers-form
+    (proto-generic-function proto-method specializer-names environment))
 
 (defgeneric (setf slot-value-using-class) (new-value class object slotd))
 \f
 ;;;; 5 arguments
 
-(defgeneric make-method-initargs-form (proto-generic-function
-                                      proto-method
-                                      lambda-expression
-                                      lambda-list
-                                      environment))
+;;; FIXME: This is currently unused -- where should we call it? Or should we just
+;;; delete it.
+(defgeneric add-boundp-method (class generic-function slot-name slot-documentation source-location))
+
+(defgeneric add-reader-method (class generic-function slot-name slot-documentation source-location))
+
+(defgeneric add-writer-method (class generic-function slot-name slot-documentation source-location))
+
+(defgeneric make-method-initargs-form
+    (proto-generic-function proto-method lambda-expression lambda-list
+     environment))
 \f
 ;;;; optional arguments
 
 (defgeneric get-method (generic-function
-                       qualifiers
-                       specializers
-                       &optional (errorp t)))
+                        qualifiers
+                        specializers
+                        &optional errorp))
 
 (defgeneric find-method (generic-function
-                        qualifiers
-                        specializers
-                        &optional (errorp t)))
-
-(defgeneric remove-named-method (generic-function-name
-                                argument-specifiers
-                                &optional extra))
+                         qualifiers
+                         specializers
+                         &optional errorp))
 
 (defgeneric slot-missing (class
-                         instance
-                         slot-name
-                         operation
-                         &optional new-value))
+                          instance
+                          slot-name
+                          operation
+                          &optional new-value))
 \f
 ;;;; &KEY arguments
 
+;;; FIXME: make the declared &KEY arguments here agree with those that
+;;; AMOP specifies.
 (defgeneric allocate-instance (class &rest initargs))
 
-(defgeneric ensure-class-using-class (name
-                                     class
-                                     &rest args
-                                     &key &allow-other-keys))
+(defgeneric ensure-class-using-class (class
+                                      name
+                                      &rest args
+                                      &key &allow-other-keys))
 
 (defgeneric ensure-generic-function-using-class (generic-function
-                                                fun-name
-                                                &key &allow-other-keys))
+                                                 fun-name
+                                                 &key &allow-other-keys))
+
+(defgeneric initialize-instance (instance &rest initargs &key &allow-other-keys))
 
-(defgeneric initialize-instance (gf &key &allow-other-keys))
+(defgeneric make-instance (class &rest initargs &key &allow-other-keys))
 
-(defgeneric make-instance (class &rest initargs))
+(defgeneric change-class (instance new-class-name &rest initargs &key &allow-other-keys))
 
 (defgeneric no-applicable-method (generic-function &rest args))
 
+(defgeneric no-next-method (generic-function method &rest args))
+
+(defgeneric no-primary-method (generic-function &rest args))
+
 (defgeneric reader-method-class (class direct-slot &rest initargs))
 
-(defgeneric reinitialize-instance (gf &rest args &key &allow-other-keys))
+(defgeneric reinitialize-instance (instance &rest initargs &key &allow-other-keys))
 
-(defgeneric shared-initialize (generic-function
-                              slot-names
-                              &key &allow-other-keys))
+(defgeneric shared-initialize (instance slot-names &rest initargs
+                               &key &allow-other-keys))
 
 (defgeneric update-dependent (metaobject dependent &rest initargs))
 
 (defgeneric update-instance-for-different-class (previous
-                                                current
-                                                &rest initargs))
+                                                 current
+                                                 &rest initargs))
 
 (defgeneric update-instance-for-redefined-class (instance
-                                                added-slots
-                                                discarded-slots
-                                                property-list
-                                                &rest initargs))
+                                                 added-slots
+                                                 discarded-slots
+                                                 property-list
+                                                 &rest initargs))
 
 (defgeneric writer-method-class (class direct-slot &rest initargs))