;;; -*- Mode:LISP; Package:USER; Fonts:(MEDFNT MEDFNB); Readtable:CL; Base:10 -*-

(in-package 'user)
(use-package 'obj)


;;; Test cases

(eval-when (eval compile)
  (mapcar #'unintern '(*high-class* *low-class* *low-class2*
				    *low-class3* *low-class3a* *low-class3b*)))

(defkind *high-class* editable-thing)

(definstancevars *high-class*
  (name "<unnamed>")
  (type 'high-class))

(defclassvars *high-class*
  (editlist '((name "Name" :string)(type "Type" :choose (a b))))
  (editlabel "Edit high-class thing"))

(defobedit *high-class*)

(defkind *low-class* *high-class*)

(definstancevars *low-class* nicknames)

(defclassvars *low-class*
  (editlist '((nicknames "Nicknames" :string-list))))

(defobedit *low-class*)

(defkind *low-class2* *high-class*)

(definstancevars *low-class2* truenames)

(defclassvars *low-class2*
  (editlist '((truenames "True names" :string-list)))
  (editlabel "Edit low-class type 2 object"))

(defobedit *low-class2*)

(defkind *low-class3* *high-class*)

(definstancevars *low-class3* mynames)

(defclassvars *low-class3*
  (editlist '((name "Class 3 name" :string)
	      (mynames "My names" :string-list)))
  (editlabel "Edit low-class type 3 object"))

(defobedit *low-class3*)

(defkind *low-class3a* *low-class3*)

(definstancevars *low-class3a*
  (myvar "myvar"))

(defkind *low-class3b* *low-class3a*)

(defclassvars *low-class3b*
  (editlist '((myvar "My var" :string))))

(defobedit *low-class3b*)
