[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: metaclasses
- To: CHEEWEEI%ITIVAX.BITNET@cunyvm.cuny.edu
- Subject: Re: metaclasses
- From: kanderso@DINO.BBN.COM
- Date: Wed, 16 Aug 89 11:20:50 -0400
- Cc: commonloops.pa@Xerox.COM
- In-reply-to: Your message of Thu, 10 Aug 89 14:49:00 +0800. <890809-235233-6074@Xerox>
- Redistributed: commonloops.pa
Date: Thu, 10 Aug 89 14:49 U
From: CHEEWEEI%ITIVAX.BITNET@cunyvm.cuny.edu
MMDF-Warning: Parse error in original version of preceding line at DINO.BBN.COM
Subject: metaclasses
To: commonloops.pa@xerox.com
X-Original-To: commonloops.pa@xerox.com, CHEEWEEI
Message-Id: <890809-235233-6074@Xerox>
In defining a metaclass eg.
(defclass my-standard-class (standard-class)
())
I also have to define:
(defmethod check-super-metaclass-compatibility ((x my-standard-class) (y t)) 't)
Is this something that must be done now as well as in future for user
defined metaclasses?
Is the decision when classes and methods are compiled totally left up to
the CLOS implementation? Is there a similar function like
compile-flavor-methods in Flavors that ensures it?
C
CHEEWEEI%itivax.bitnet
This is what we use:
(defvar *compile-class-hash* (make-hash-table :test #'eq))
(defun COMPILE-CLASS-METHODS-1 (classes)
(clrhash *compile-class-hash*)
(dolist (class-spec classes)
(let ((class (cond ((symbolp class-spec) (find-class class-spec nil))
((classp class-spec) class-spec))))
(cond (class
(dolist (gf (class-direct-generic-functions class))
(unless (gethash gf *compile-class-hash*)
(setf (gethash gf *compile-class-hash*) T)
(notice-methods-change-1 gf))))
(t (warn "~A is neither a class nor the name of a class" class-spec))))))
(defmacro COMPILE-CLASS-METHODS (&rest classes)
`(compile-class-methods-1 ',classes))
- References:
- metaclasses
- From: <CHEEWEEI%ITIVAX.BITNET@CUNYVM.CUNY.EDU>