(multicsp (%include backquote)) (multicsp (%include defmacro)) (multicsp (%include once-only)) (itsp (includef '|bsg;oonl >|)) (declare (special FRONT-0 BACK-0 RHS-0 LHS-0 TOP-0 BOTTOM-0)) (declare (special FRONT BACK RHS LHS TOP BOTTOM)) (declare (special cube-interrupt-set cube-display-needs-update)) (defmacro 1to (n v &rest forms) `(do ,v 1 (1+ ,v)(> ,v ,n) . ,forms)) (defmacro 1to3 gunk `(1to 3 . ,gunk)) (defmacro 1to4 gunk `(1to 4 . ,gunk)) (defmacro mod stuff(cons '\ stuff)) (defmacro all-faces (var . forms)`(1to 6 ,var . ,forms)) (defmacro all-little-faces ((y z) . forms) `(1to 3 ,y (1to 3 ,z . ,forms))) (declare (array* (notype (colors 7)(cube 7 4 4)(face-names 7) (face-clock-relations 7 5)) (fixnum (Atop 7)(Abottom 7)(Aright 7)(Aleft 7)(Aback 7) (face-relations 7 7)(xpcoef 7 3)(ypcoef 7 3)))) (declare (eval (read))) (defun case-construct-util (var pred clauses) (once-only (var) (cons 'cond (mapcar '(lambda (pair) (let (((val . forms) pair)) (cond ((eq val t) `(t . ,forms)) (t `((,pred ,var ,val) . ,forms))))) clauses)))) (defmacro case (var . clauses)(case-construct-util var 'equal clauses)) (defmacro caseq (var . clauses)(case-construct-util var 'eq clauses)) (defmacro case= (var . clauses)(case-construct-util var '= clauses))