From 5d1ce10ec8f041d7b25c27363620b7db63dff19b Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Sat, 22 Oct 2022 08:26:16 -0500 Subject: Add: utility modules --- definition-macros.lisp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 definition-macros.lisp (limited to 'definition-macros.lisp') diff --git a/definition-macros.lisp b/definition-macros.lisp new file mode 100644 index 0000000..6ecda6d --- /dev/null +++ b/definition-macros.lisp @@ -0,0 +1,19 @@ +;;;; 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) + (defclass/std ,name ,supers + ,slotdefs + (:metaclass persistent-class) + ,@options)))) -- cgit v1.2.3