;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2003
;;;;
-;;;; $Id$
-;;;;
;;;; This file imports MOP symbols into the CLSQL-MOP package and then
;;;; re-exports into CLSQL-SYS them to hide differences in
;;;; MOP implementations.
;;;; This file was extracted from the KMRCL utilities
;;;; *************************************************************************
-(in-package #:clsql)
+(in-package #:clsql-sys)
#+lispworks
(defun intern-eql-specializer (slot)
(defmacro process-class-option (metaclass slot-name &optional required)
#+lispworks
`(defmethod clos:process-a-class-option ((class ,metaclass)
- (name (eql ,slot-name))
- value)
+ (name (eql ,slot-name))
+ value)
(when (and ,required (null value))
(error "metaclass ~A class slot ~A must have a value" (quote ,metaclass) name))
(list name `',value))
(defmacro process-slot-option (metaclass slot-name)
#+lispworks
`(defmethod clos:process-a-slot-option ((class ,metaclass)
- (option (eql ,slot-name))
- value
- already-processed-options
- slot)
+ (option (eql ,slot-name))
+ value
+ already-processed-options
+ slot)
(list* option `',value already-processed-options))
#-lispworks
(declare (ignore metaclass slot-name))
)
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defclass %slot-order-test-class ()
+ ((a)
+ (b)))
+ (finalize-inheritance (find-class '%slot-order-test-class))
+ (let ((slots (class-slots (find-class '%slot-order-test-class))))
+ (ecase (slot-definition-name (first slots))
+ (a)
+ (b (pushnew :mop-slot-order-reversed cl:*features*)))))
+
(defun ordered-class-slots (class)
- #+(or cmu18 sbcl) (class-slots class)
- #-(or cmu18 sbcl) (reverse (class-slots class)))
+ #+mop-slot-order-reversed (reverse (class-slots class))
+ #-mop-slot-order-reversed (class-slots class))
;; Lispworks has symbol for slot rather than the slot instance
(defun %svuc-slot-name (slot)