Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv18912
Modified Files: loop.lisp Log Message: Factored out defstructs so they are not evaluated twice for every compilation of this file.
Date: Tue Feb 10 18:40:17 2004 Author: ffjeld
Index: movitz/losp/muerte/loop.lisp diff -u movitz/losp/muerte/loop.lisp:1.3 movitz/losp/muerte/loop.lisp:1.4 --- movitz/losp/muerte/loop.lisp:1.3 Wed Jan 21 17:02:09 2004 +++ movitz/losp/muerte/loop.lisp Tue Feb 10 18:40:17 2004 @@ -298,6 +298,53 @@ #-LISPM `(cdr ,head-var))))
+(defstruct (loop-minimax + (:constructor make-loop-minimax-internal) + (:copier nil) + (:predicate nil)) + answer-variable + type + temp-variable + flag-variable + operations + infinity-data) + +(defstruct (loop-universe + (:print-function print-loop-universe) + (:copier nil) + (:predicate nil)) + keywords ;hash table, value = (fn-name . extra-data). + iteration-keywords ;hash table, value = (fn-name . extra-data). + for-keywords ;hash table, value = (fn-name . extra-data). + path-keywords ;hash table, value = (fn-name . extra-data). + type-symbols ;hash table of type SYMBOLS, test EQ, value = CL type specifier. + type-keywords ;hash table of type STRINGS, test EQUAL, value = CL type spec. + ansi ;NIL, T, or :EXTENDED. + implicit-for-required ;see loop-hack-iteration + ) + + +(defstruct (loop-collector + (:copier nil) + (:predicate nil)) + name + class + (history nil) + (tempvars nil) + dtype + (data nil)) ;collector-specific data + +(defstruct (loop-path + (:copier nil) + (:predicate nil)) + names + preposition-groups + inclusive-permitted + function + user-data) + + + ;;;; Maximization Technology
(eval-when (:compile-toplevel :execute) @@ -317,18 +364,6 @@ |#
-(defstruct (loop-minimax - (:constructor make-loop-minimax-internal) - (:copier nil) - (:predicate nil)) - answer-variable - type - temp-variable - flag-variable - operations - infinity-data) - - (defvar *loop-minimax-type-infinities-alist* ;;@@@@ This is the sort of value this should take on for a Lisp that has ;; "eminently usable" infinities. n.b. there are neither constants nor @@ -467,19 +502,7 @@ (defmacro loop-store-table-data (symbol table datum) `(setf (gethash (symbol-name ,symbol) ,table) ,datum))
-(defstruct (loop-universe - (:print-function print-loop-universe) - (:copier nil) - (:predicate nil)) - keywords ;hash table, value = (fn-name . extra-data). - iteration-keywords ;hash table, value = (fn-name . extra-data). - for-keywords ;hash table, value = (fn-name . extra-data). - path-keywords ;hash table, value = (fn-name . extra-data). - type-symbols ;hash table of type SYMBOLS, test EQ, value = CL type specifier. - type-keywords ;hash table of type STRINGS, test EQUAL, value = CL type spec. - ansi ;NIL, T, or :EXTENDED. - implicit-for-required ;see loop-hack-iteration - ) +
(defun print-loop-universe (u stream level) @@ -1192,15 +1215,6 @@ ;;;; Value Accumulation: List
-(defstruct (loop-collector - (:copier nil) - (:predicate nil)) - name - class - (history nil) - (tempvars nil) - dtype - (data nil)) ;collector-specific data
(eval-when (:compile-toplevel #+movitz-loop :load-toplevel) @@ -1578,14 +1592,6 @@ ;;;; Iteration Paths
-(defstruct (loop-path - (:copier nil) - (:predicate nil)) - names - preposition-groups - inclusive-permitted - function - user-data)
(defun add-loop-path (names function universe &key preposition-groups inclusive-permitted user-data)