;;; Linearization functions.
+(export 'clos-cpl)
(defun clos-cpl (class)
"Compute the class precedence list of CLASS using CLOS linearization rules.
(superclasses class))
:pick #'clos-tiebreaker)))
+(export 'dylan-cpl)
(defun dylan-cpl (class)
"Compute the class precedence list of CLASS using Dylan linearization
rules.
(mapcar #'sod-class-precedence-list direct-supers))
:pick #'clos-tiebreaker)))
+(export 'c3-cpl)
(defun c3-cpl (class)
"Compute the class precedence list of CLASS using C3 linearization rules.
(declare (ignore so-far))
(c3-tiebreaker candidates cpls)))))
+(export 'flavors-cpl)
(defun flavors-cpl (class)
"Compute the class precedence list of CLASS using Flavors linearization
rules.
(walk class)
(nreverse done))))
+(export 'python-cpl)
(defun python-cpl (class)
"Compute the class precedence list of CLASS using the documented Python 2.2
linearization rules.
(walk class)
(delete-duplicates (nreverse done)))))
+(export 'l*loops-cpl)
(defun l*loops-cpl (class)
"Compute the class precedence list of CLASS using L*LOOPS linearization
rules.
;;;--------------------------------------------------------------------------
;;; Protocol definition.
+(export 'compute-cpl)
(defgeneric compute-cpl (class)
(:documentation
"Returns the class precedence list for CLASS."))
+(export 'compute-chains)
(defgeneric compute-chains (class)
(:documentation
"Compute the layout chains for CLASS.
If the chains are ill-formed (i.e., not distinct) then an error is
signalled."))
+(export 'check-sod-class)
(defgeneric check-sod-class (class)
(:documentation
"Check the CLASS for validity.
Returns true if all is well; false (and signals errors) if anything was
wrong."))
+(export 'finalize-sod-class)
(defgeneric finalize-sod-class (class)
(:documentation
"Computes all of the gory details about a class.
;;;--------------------------------------------------------------------------
;;; Special-purpose slot objects.
-(export 'sod-class-slot)
+(export '(sod-class-slot
+ sod-slot-initializer-function sod-slot-prepare-function))
(defclass sod-class-slot (sod-slot)
((initializer-function :initarg :initializer-function
:type (or symbol function)
;;;--------------------------------------------------------------------------
;;; Classes and protocol.
-(export 'aggregating-message)
+(export '(aggregating-message message-combination))
(defclass aggregating-message (simple-message)
((combination :initarg :combination :type keyword
:reader message-combination)
;;;--------------------------------------------------------------------------
;;; Direct method classes.
-(export 'basic-direct-method)
+(export '(basic-direct-method sod-method-role))
(defclass basic-direct-method (sod-method)
((role :initarg :role :type symbol :reader sod-method-role)
(function-type :type c-function-type :reader sod-method-function-type))
;;;--------------------------------------------------------------------------
;;; Effective method classes.
-(export 'basic-effective-method)
+(export '(basic-effective-method
+ effective-method-around-methods effective-method-before-methods
+ effective-method-after-methods))
(defclass basic-effective-method (effective-method)
((around-methods :initarg :around-methods :initform nil
:type list :reader effective-method-around-methods)