I would like to know if it is possible in CLOS to automatically
generate an underlying DEFCLASS MACRO with a method attached
on a (meta) metaclass.
For instance, can CLOS directly generate the following specifications
or code similar to:
;;; DEFINITION OF THE CLASS
(defclass newspaper (class-obj-mgr)
((title :initarg title :accessor title) (type :initarg type :accessor type)
(editor_in_chief :initarg editor_in_chief :accessor editor_in_chief)
(publisher :initarg :publisher :accessor publisher)) (printer :initarg :printer :accessor printer))
(:metaclass model-class))
;;; INSTANCIATION OF ATTRIBUTES OF MODEL-CLASS FOR NEWSPAPER
(setf (specific-attr-down (find-class 'newspaper)) (list 'type 'editor_in_chief))
(setf (derived-attr (find-class 'newspaper)) (list 'title 'nb_of_words))
from a method new-model-class
(new-model-class model-class :classname 'newspaper
:attributes (list 'title 'type 'editor_in_chief 'publisher 'printer)
:specific-attr-down (list 'type 'editor_in_chief)
:derived-attr (list 'title 'nb_of_words))
if I have a metaclass model-class
;;; DEFINITION OF THE METAOBJECT CLASS MODEL-CLASS
(defclass model-class ()
((specific-attr-up :initform nil :initarg :specific-attr-up :accessor specific-attr-up)
(specific-attr-down :initform nil :initarg :specific-attr-down :accessor specific-attr-down)
(derived-attr :initform nil :initarg :derived-attr :accessor derived-attr)
(:metaclass meta-constructor))
)
and a meta-metaclass meta-constructor including the method new-model-class
;;; DEFINITION OF THE METAOBJECT CLASS META-CONSTRUCTOR
(defclass meta-constructor () () (:metaclass standard-class)
(defmethod new-model-class ((metaclass meta-constructor)
&key classname superclasses attributes
specific-attr-up specific-attr-down derived-attr))
)
Thanks in advance
Manuel Kolp
ยทยทยทยท@qant.ucl.ac.be
IAG-QANT
1, Place des Doyens
1348 Louvain-La-Neuve