chiark / gitweb /
mop: Rearrange a bit.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 18 May 2006 08:41:29 +0000 (09:41 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 18 May 2006 08:41:29 +0000 (09:41 +0100)
Put the miscellaneous stuff before the metaclass hacking.

mdw-mop.lisp

index 51db744226852a8bb1f784be784f46b6d1fb5ae9..160eff976613189c6701f24bd1fed68c41041971 100644 (file)
@@ -28,8 +28,8 @@
 
 (defpackage #:mdw.mop
   (:use #:common-lisp #:mdw.base #+cmu #:mop)
-  (:export #:compatible-class
-          #:copy-instance #:copy-instance-using-class
+  (:export #:copy-instance #:copy-instance-using-class
+          #:compatible-class
           #:initargs-for-effective-slot #:make-effective-slot
           #:filtered-slot-class-mixin
             #:filtered-direct-slot-definition
@@ -42,6 +42,27 @@ (defpackage #:mdw.mop
 
 (in-package #:mdw.mop)
 
+;;;--------------------------------------------------------------------------
+;;; Copying instances.
+
+(defgeneric copy-instance-using-class (class object &rest initargs)
+  (:documentation
+   "Does the donkey-work behind copy-instance."))
+
+(defmethod copy-instance-using-class
+    ((class standard-class) object &rest initargs)
+  (let ((new (apply #'allocate-instance class initargs)))
+    (dolist (slot (class-slots class))
+      (setf (slot-value-using-class class new slot)
+           (slot-value-using-class class object slot)))
+    (apply #'shared-initialize new nil initargs)
+    new))
+
+(defun copy-instance (object &rest initargs)
+  "Make a copy of OBJECT, modifying it by setting slots as requested by
+   INITARGS."
+  (apply #'copy-instance-using-class (class-of object) object initargs))
+
 ;;;--------------------------------------------------------------------------
 ;;; Basic stuff.
 
@@ -64,27 +85,6 @@ (defmethod validate-superclass
     ((sub standard-class) (super compatible-class))
   (eq (class-of sub) (find-class 'standard-class)))
 
-;;;--------------------------------------------------------------------------
-;;; Copying instances.
-
-(defgeneric copy-instance-using-class (class object &rest initargs)
-  (:documentation
-   "Does the donkey-work behind copy-instance."))
-
-(defmethod copy-instance-using-class
-    ((class standard-class) object &rest initargs)
-  (let ((new (apply #'allocate-instance class initargs)))
-    (dolist (slot (class-slots class))
-      (setf (slot-value-using-class class new slot)
-           (slot-value-using-class class object slot)))
-    (apply #'shared-initialize new nil initargs)
-    new))
-
-(defun copy-instance (object &rest initargs)
-  "Make a copy of OBJECT, modifying it by setting slots as requested by
-   INITARGS."
-  (apply #'copy-instance-using-class (class-of object) object initargs))
-
 ;;;--------------------------------------------------------------------------
 ;;; Utilities for messing with slot options.