X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fkmr-mop.lisp;h=8fccf57778e306a4a9ce6b3b7801dfd49c026d3e;hp=e935f1ca0e1ef585b8b68ebbe455a304ac9f8ed8;hb=e622ee6f4bf2b9fe81af59d566e651c983a4833b;hpb=e3ed4080f0a28d94e81aad7452fb1f81e1e50253 diff --git a/sql/kmr-mop.lisp b/sql/kmr-mop.lisp index e935f1c..8fccf57 100644 --- a/sql/kmr-mop.lisp +++ b/sql/kmr-mop.lisp @@ -46,6 +46,27 @@ (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 cmu sbcl) (class-slots class) - #-(or cmu 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) + #+lispworks slot + #-lispworks (slot-definition-name slot)) + +(defun %svuc-slot-object (slot class) + (declare (ignorable class)) + #+lispworks (clos:find-slot-definition slot class) + #-lispworks slot) +