;;;; MIT-LOOP extension
-#+(or cmu scl)
+#+sbcl
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defpackage #:ansi-loop
+ (:import-from #:sb-loop
+ #:loop-error
+ #:*loop-epilogue*
+ #:*loop-ansi-universe*
+ #:add-loop-path)))
+
+#+sbcl
+(defun ansi-loop::loop-gentemp (&optional (pref 'loopva-))
+ (gensym (string pref)))
+
+#+(or cmu scl sbcl openmcl)
(defun loop-record-iteration-path (variable data-type prep-phrases)
(let ((in-phrase nil)
(from-phrase nil))
(unless in-phrase
(ansi-loop::loop-error "Missing OF or IN iteration path."))
(unless from-phrase
- (setq from-phrase '(*default-database*)))
+ (setq from-phrase '(clsql-base-sys:*default-database*)))
(cond
((consp variable)
(let ((query-var (ansi-loop::loop-gentemp 'loop-record-))
'loop-record-result-set-))
(step-var (ansi-loop::loop-gentemp 'loop-record-step-)))
(push `(when ,result-set-var
- (database-dump-result-set ,result-set-var ,db-var))
+ (clsql-base-sys:database-dump-result-set ,result-set-var ,db-var))
ansi-loop::*loop-epilogue*)
`(((,variable nil ,data-type) (,query-var ,(first in-phrase))
(,db-var ,(first from-phrase))
(,result-set-var nil)
(,step-var nil))
((multiple-value-bind (%rs %cols)
- (database-query-result-set ,query-var ,db-var)
+ (clsql-base-sys:database-query-result-set ,query-var ,db-var)
(setq ,result-set-var %rs ,step-var (make-list %cols))))
()
()
- (not (database-store-next-row ,result-set-var ,db-var ,step-var))
+ (not (clsql-base-sys:database-store-next-row ,result-set-var ,db-var ,step-var))
(,variable ,step-var)
(not ,result-set-var)
()
- (not (database-store-next-row ,result-set-var ,db-var ,step-var))
+ (not (clsql-base-sys:database-store-next-row ,result-set-var ,db-var ,step-var))
(,variable ,step-var))))
(t
(let ((query-var (ansi-loop::loop-gentemp 'loop-record-))
(result-set-var (ansi-loop::loop-gentemp
'loop-record-result-set-)))
(push `(when ,result-set-var
- (database-dump-result-set ,result-set-var ,db-var))
+ (clsql-base-sys:database-dump-result-set ,result-set-var ,db-var))
ansi-loop::*loop-epilogue*)
`(((,variable nil ,data-type) (,query-var ,(first in-phrase))
(,db-var ,(first from-phrase))
(,result-set-var nil))
((multiple-value-bind (%rs %cols)
- (database-query-result-set ,query-var ,db-var)
+ (clsql-base-sys:database-query-result-set ,query-var ,db-var)
(setq ,result-set-var %rs ,variable (make-list %cols))))
()
()
- (not (database-store-next-row ,result-set-var ,db-var ,variable))
+ (not (clsql-base-sys:database-store-next-row ,result-set-var ,db-var ,variable))
()
(not ,result-set-var)
()
- (not (database-store-next-row ,result-set-var ,db-var ,variable))
+ (not (clsql-base-sys:database-store-next-row ,result-set-var ,db-var ,variable))
()))))))
-#+(or cmu scl)
+#+(or cmu scl sbcl openmcl)
(ansi-loop::add-loop-path '(record records tuple tuples)
'loop-record-iteration-path
ansi-loop::*loop-ansi-universe*