0.pre8.19:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 31 Mar 2003 12:19:25 +0000 (12:19 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 31 Mar 2003 12:19:25 +0000 (12:19 +0000)
Export those classes which are present in our implementation of
the MOP from SB-MOP
... also document absence of METAOBJECT and disjointness of
STANDARD-OBJECT and FUNCALLABLE-STANDARD-OBJECT

doc/beyond-ansi.sgml
package-data-list.lisp-expr
tests/mop.impure.lisp
version.lisp-expr

index 1990336..b1c0a39 100644 (file)
@@ -118,12 +118,21 @@ whose instances can be used as Lisp streams (e.g. passed as the
 first argument to <function>format</>).</para>
 
 <para>&SBCL; supports a MetaObject Protocol which is intended to be
-compatible with &AMOP;; exceptions to this (as distinct from current
-bugs<!-- Such as the distinction between CL:FIND-CLASS and
-SB-PCL::FIND-CLASS :-( -->) are that
-<function>compute-effective-method</> only returns one value, not
-two<!-- FIXME: anything else? What about extensions? (e.g. COMPUTE-SLOTS
-behaviour) -->.</para>
+compatible with &AMOP;; present exceptions to this (as distinct from
+current bugs) are:
+<itemizedlist>
+  <listitem><para>the abstract <classname>metaobject</> class is not
+    present in the class hierarchy;</para></listitem>
+  <listitem><para>the <classname>standard-object</> and
+    <classname>funcallable-standard-object</> classes are
+    disjoint;</para></listitem>
+  <listitem><para><function>compute-effective-method</> only returns
+    one value, not two;</para></listitem>
+  <listitem><para>the system-supplied <property>:around</> method for
+    <function>compute-slots</> specialized on
+    <classname>funcallable-standard-class</> does not respect the
+    requested order from a user-supplied primary method.
+</itemizedlist>
 
 </sect2>
 
index 853a3f1..2d865d3 100644 (file)
@@ -1409,13 +1409,15 @@ is a good idea, but see SB-SYS re. blurring of boundaries."
     :doc
     "public: the MetaObject Protocol interface, as defined by
 The Art of the Metaobject Protocol, by Kiczales, des Rivieres and Bobrow:
-ISBN 0-262-61074-4."
-    :use ("SB!PCL")
+ISBN 0-262-61074-4, with exceptions as noted in the User Manual."
+    :use ("CL" "SB!PCL")
     :reexport ("ADD-DEPENDENT"
               "ADD-DIRECT-METHOD"
               "ADD-DIRECT-SUBCLASS"
               "ADD-METHOD"
               "ALLOCATE-INSTANCE"
+              "BUILT-IN-CLASS"
+              "CLASS"
               "CLASS-DEFAULT-INITARGS"
               "CLASS-DIRECT-DEFAULT-INITARGS"
               "CLASS-DIRECT-SLOTS"
@@ -1434,18 +1436,26 @@ ISBN 0-262-61074-4."
               "COMPUTE-EFFECTIVE-METHOD"
               "COMPUTE-EFFECTIVE-SLOT-DEFINITION"
               "COMPUTE-SLOTS"
+              "DIRECT-SLOT-DEFINITION"
               "DIRECT-SLOT-DEFINITION-CLASS"
+              "EFFECTIVE-SLOT-DEFINITION"
               "EFFECTIVE-SLOT-DEFINITION-CLASS"
               "ENSURE-CLASS"
               "ENSURE-CLASS-USING-CLASS"
               "ENSURE-GENERIC-FUNCTION"
               "ENSURE-GENERIC-FUNCTION-USING-CLASS"
+              "EQL-SPECIALIZER"
               "EQL-SPECIALIZER-OBJECT"
               "EXTRACT-LAMBDA-LIST"
               "EXTRACT-SPECIALIZER-NAMES"
               "FINALIZE-INHERITANCE"
               "FIND-METHOD-COMBINATION"
+              "FORWARD-REFERENCED-CLASS"
+              "FUNCALLABLE-STANDARD-CLASS"
               "FUNCALLABLE-STANDARD-INSTANCE-ACCESS"
+              "FUNCALLABLE-STANDARD-OBJECT"
+              "FUNCTION"
+              "GENERIC-FUNCTION"
               "GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER"
               "GENERIC-FUNCTION-DECLARATIONS"
               "GENERIC-FUNCTION-LAMBDA-LIST"
@@ -1457,6 +1467,10 @@ ISBN 0-262-61074-4."
               "MAKE-METHOD-LAMBDA"
               "MAKE-INSTANCE"
               "MAP-DEPENDENTS"
+              ;; KLUDGE: See the User Manual
+              ;; "METAOBJECT"
+              "METHOD"
+              "METHOD-COMBINATION"
               "METHOD-FUNCTION"
               "METHOD-GENERIC-FUNCTION"
               "METHOD-LAMBDA-LIST"
@@ -1470,6 +1484,7 @@ ISBN 0-262-61074-4."
               "REMOVE-METHOD"
               "SET-FUNCALLABLE-INSTANCE-FUNCTION"
               "SLOT-BOUNDP-USING-CLASS"
+              "SLOT-DEFINITION"
               "SLOT-DEFINITION-ALLOCATION"
               "SLOT-DEFINITION-INITARGS"
               "SLOT-DEFINITION-INITFORM"
@@ -1481,9 +1496,21 @@ ISBN 0-262-61074-4."
               "SLOT-DEFINITION-TYPE"
               "SLOT-MAKUNBOUND-USING-CLASS"
               "SLOT-VALUE-USING-CLASS"
+              "SPECIALIZER"
               "SPECIALIZER-DIRECT-GENERIC-FUNCTIONS"
               "SPECIALIZER-DIRECT-METHODS"
+              "STANDARD-ACCESSOR-METHOD"
+              "STANDARD-CLASS"
+              "STANDARD-DIRECT-SLOT-DEFINITION"
+              "STANDARD-EFFECTIVE-SLOT-DEFINITION"
+              "STANDARD-GENERIC-FUNCTION"
               "STANDARD-INSTANCE-ACCESS"
+              "STANDARD-METHOD"
+              "STANDARD-OBJECT"
+              "STANDARD-READER-METHOD"
+              "STANDARD-SLOT-DEFINITION"
+              "STANDARD-WRITER-METHOD"
+              "T"
               "UPDATE-DEPENDENT"
               "VALIDATE-SUPERCLASS"
               "WRITER-METHOD-CLASS"))
@@ -1496,6 +1523,9 @@ extensions, but even they are not guaranteed to be present in
 later versions of SBCL, and the other stuff in here is
 definitely not guaranteed to be present in later versions of SBCL."
     :use ("CL" "SB!INT" "SB!EXT" "SB!WALKER" "SB!KERNEL")
+    ;; FIXME: After a little while, these reexports can probably go
+    ;; away, as they're superseded by the use of SB-MOP as the
+    ;; publically-accessible package.
     :reexport ("ADD-METHOD" "ALLOCATE-INSTANCE"
               "CLASS-NAME" "COMPUTE-APPLICABLE-METHODS"
                "ENSURE-GENERIC-FUNCTION" "MAKE-INSTANCE"
@@ -1519,17 +1549,23 @@ definitely not guaranteed to be present in later versions of SBCL."
              "COMPUTE-EFFECTIVE-METHOD"
              "COMPUTE-EFFECTIVE-SLOT-DEFINITION"
              "COMPUTE-SLOTS"
+            "DIRECT-SLOT-DEFINITION"
              "DIRECT-SLOT-DEFINITION-CLASS"
+            "EFFECTIVE-SLOT-DEFINITION"
              "EFFECTIVE-SLOT-DEFINITION-CLASS"
              "ENSURE-CLASS"
              "ENSURE-CLASS-USING-CLASS"
              "ENSURE-GENERIC-FUNCTION-USING-CLASS"
+            "EQL-SPECIALIZER"
              "EQL-SPECIALIZER-OBJECT"
              "EXTRACT-LAMBDA-LIST"
              "EXTRACT-SPECIALIZER-NAMES"
              "FINALIZE-INHERITANCE"
              "FIND-METHOD-COMBINATION"
+            "FORWARD-REFERENCED-CLASS"
+            "FUNCALLABLE-STANDARD-CLASS"
              "FUNCALLABLE-STANDARD-INSTANCE-ACCESS"
+            "FUNCALLABLE-STANDARD-OBJECT"
              "GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER"
              "GENERIC-FUNCTION-DECLARATIONS"
              "GENERIC-FUNCTION-LAMBDA-LIST"
@@ -1551,6 +1587,7 @@ definitely not guaranteed to be present in later versions of SBCL."
              "REMOVE-DIRECT-SUBCLASS"
              "SET-FUNCALLABLE-INSTANCE-FUNCTION"
              "SLOT-BOUNDP-USING-CLASS"
+            "SLOT-DEFINITION"
              "SLOT-DEFINITION-ALLOCATION"
              "SLOT-DEFINITION-INITARGS"
              "SLOT-DEFINITION-INITFORM"
@@ -1562,9 +1599,16 @@ definitely not guaranteed to be present in later versions of SBCL."
              "SLOT-DEFINITION-TYPE"
              "SLOT-MAKUNBOUND-USING-CLASS"
              "SLOT-VALUE-USING-CLASS"
+            "SPECIALIZER"
              "SPECIALIZER-DIRECT-GENERIC-FUNCTIONS"
              "SPECIALIZER-DIRECT-METHODS"
+            "STANDARD-ACCESSOR-METHOD"
+            "STANDARD-DIRECT-SLOT-DEFINITION"
+            "STANDARD-EFFECTIVE-SLOT-DEFINITION"
              "STANDARD-INSTANCE-ACCESS"
+            "STANDARD-READER-METHOD"
+            "STANDARD-SLOT-DEFINITION"
+            "STANDARD-WRITER-METHOD"
              "UPDATE-DEPENDENT"
              "VALIDATE-SUPERCLASS"
              "WRITER-METHOD-CLASS"))
index e446bff..b70ca1a 100644 (file)
@@ -89,7 +89,7 @@
 ;;; that it is at least possible to define classes with that as a
 ;;; metaclass.
 (defclass gf-class (standard-generic-function) ()
-  (:metaclass sb-pcl::funcallable-standard-class))
+  (:metaclass funcallable-standard-class))
 (defgeneric g (a b c)
   (:generic-function-class gf-class))
 \f
 ;;; of all built-in-classes is of the relevant type)
 (assert (null (class-prototype (find-class 'null))))
 \f
-;;; simple consistency checks for the SB-PCL (perhaps AKA SB-MOP)
-;;; package: all of the functionality specified in AMOP is in
-;;; functions:
-(assert (null (loop for x being each external-symbol in "SB-PCL"
-                   unless (fboundp x) collect x)))
-;;; and all generic functions in SB-PCL have at least one specified
+;;; simple consistency checks for the SB-MOP package: all of the
+;;; functionality specified in AMOP is in functions and classes:
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+                   unless (or (fboundp x) (find-class x)) collect x)))
+;;; and all generic functions in SB-MOP have at least one specified
 ;;; method, except for UPDATE-DEPENDENT
-(assert (null (loop for x being each external-symbol in "SB-PCL"
-                   unless (or (eq x 'update-dependent)
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+                   unless (or (not (fboundp x))
+                              (eq x 'update-dependent)
                               (not (typep (fdefinition x) 'generic-function))
                               (> (length (generic-function-methods
                                           (fdefinition x)))
index 8c2cf77..8ffbf43 100644 (file)
@@ -18,4 +18,4 @@
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre8.18"
+"0.pre8.19"