;;;; Common Lisp Object System for CLISP: Customizable variables ;;;; Bruno Haible 2004 (in-package "EXT") (progn (export #1='(custom::*strict-mop* custom::*forward-referenced-class-misdesign*) "CUSTOM") (export #1# "EXT")) (in-package "CLOS") ;; ============================================================================ (define-symbol-macro custom:*forward-referenced-class-misdesign* (-under-)) (defvar *-under-* nil) (defun -under- () *-under-*) (defun (setf -under-) (val) (when val (setq val 't)) (if val (unless (eq (find-class 'class) ) (set--) (set--)) (unless (eq (find-class 'class) ) (set--) (set--))) (setq *-under-* val) val) (defun set-- () (ext:without-package-lock ("CLOS") (setf (class-classname ) 'defined-class) (setf (class-classname ) 'class) (setf (find-class 'class) ) (setf (get 'class 'sys::type-symbol) (get 'potential-class 'sys::type-symbol)))) (defun set-- () (ext:without-package-lock ("CLOS") (setf (class-classname ) 'potential-class) (setf (class-classname ) 'class) (setf (find-class 'class) ) (setf (get 'class 'sys::type-symbol) (get 'defined-class 'sys::type-symbol)))) (defun set-- () (ext:without-package-lock ("CLOS") (setf (class-classname ) 'forward-reference-to-class) (setf (class-classname ) 'forward-referenced-class) (setf (find-class 'forward-referenced-class) ))) (defun set-- () (ext:without-package-lock ("CLOS") (setf (class-classname ) 'misdesigned-forward-referenced-class) (setf (class-classname ) 'forward-referenced-class) (setf (find-class 'forward-referenced-class) ))) ; Initial setting: (set--) (set--) ;; ============================================================================ (define-symbol-macro custom:*strict-mop* (strict-mop)) (defvar *strict-mop* nil) (defun strict-mop () *strict-mop*) (defun (setf strict-mop) (val) (when val (setq val 't)) (setf custom:*forward-referenced-class-misdesign* val) (setq *strict-mop* val) val)