;;;; definition-macros.lisp (in-package :vampire) (defmacro defclass/bknr (name supers slotdefs &rest options) "Defines a class using defclass/std syntax. Ensures that the class is a sublcas of STORE-OBJECT with metaclass PERSISTENT-CLASS." (let* ((include-store-object-p (notany (lambda (c) (closer-mop:subclassp c 'store-object)) supers)) (supers (if include-store-object-p `(store-object ,@supers) supers))) `(eval-when (:compile-toplevel :load-toplevel :execute) (defclass/std ,name ,supers ,slotdefs (:metaclass persistent-class) ,@options))))