From: Drew Crampsie Date: Mon, 4 Jul 2005 07:56:09 +0000 (-0700) Subject: eval-when :wave-dead-chicken. this is part of the EVAL mess that i need to clean up. X-Git-Url: https://git.hcoop.net/clinton/lisp-on-lines.git/commitdiff_plain/1da9fd46aa8f2d6f877a1347f18cbc1507b0aadb?hp=4628b4334da3a1a67a6c38eabc11c4119af671ad eval-when :wave-dead-chicken. this is part of the EVAL mess that i need to clean up. darcs-hash:20050704075609-5417e-649b18756aaf783558e86a2646b987f08a859fb5.gz --- diff --git a/src/backend/clsql.lisp b/src/backend/clsql.lisp index 6de317b..6d84dc7 100644 --- a/src/backend/clsql.lisp +++ b/src/backend/clsql.lisp @@ -263,10 +263,11 @@ creates a clsql view-class" (when (equalp (car exp) (sql->sym table)) (setf slots (cons (cdr exp) slots)))) slots))) - `(def-view-class/meta ,name - () - ,(append table-slots join-slots) - ,@(when model-name (list :model-name model-name))))) + `(eval-when (:compile-toplevel :load-toplevel :execute) + (def-view-class/meta ,name + () + ,(append table-slots join-slots) + ,@(when model-name (list :model-name model-name)))))) (def-compare-expr standard-db-object expr-= sql-=) (def-compare-expr standard-db-object expr-< sql-<) diff --git a/src/meta-model.lisp b/src/meta-model.lisp index dead63e..8705a68 100644 --- a/src/meta-model.lisp +++ b/src/meta-model.lisp @@ -32,13 +32,14 @@ (cons 'meta-model-class supers)))) (defmethod %def-meta-model ((base-type t) name supers slots &rest options) - `(defclass ,name ,(gen-supers supers) - () - (:default-initargs :metadata ',slots :base-type ,base-type))) + `(eval-when (:compile-toplevel :load-toplevel :execute) + (defclass ,name ,(gen-supers supers) + () + (:default-initargs :metadata ',slots :base-type ,base-type)))) (defmacro def-meta-model (name supers slots &rest options) - `(progn + `(eval-when (:compile-toplevel :load-toplevel :execute) (when (not (member (quote ,name) *meta-models*)) (setf *meta-models* (cons (quote ,name) *meta-models*))) @@ -50,19 +51,8 @@ (defmethod def-base-class-expander ((model t) name args) (def-base-type-class-expander (meta-model.base-type model) model name args)) -(defmacro def-base-class (name (model) &rest args) - (let ((i (make-instance model))) - `(progn - (eval-when (:compile-toplevel :load-toplevel :execute) - ,(def-base-class-expander i :clsql name args)) - (defmethod meta-model.metadata ((m ,name)) - ',(meta-model.metadata i))))) - - (defmethod base-class-name ((model t)) (class-name (class-of (meta-model.instance model)))) - - (defmethod view-class-metadata ((model t)) (meta-model.metadata model))