Changeset 324
- Timestamp:
- Jan 17, 2004, 7:55:05 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/lib/macros.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/lib/macros.lisp
r274 r324 2322 2322 nil)) 2323 2323 2324 (defmacro with-hash-table-iterator ((mname hash-table) &body body )2324 (defmacro with-hash-table-iterator ((mname hash-table) &body body &environment env) 2325 2325 (let ((state (gensym))) 2326 `(let ((,state (vector nil nil ,hash-table nil nil))) 2327 (declare (dynamic-extent ,state)) 2328 (unwind-protect 2329 (macrolet ((,mname () `(do-hash-table-iteration ,',state))) 2330 (start-hash-table-iterator ,state) 2331 ,@body) 2332 (finish-hash-table-iterator ,state))))) 2326 (multiple-value-bind (body decls) (parse-body body env) 2327 `(let ((,state (vector nil nil ,hash-table nil nil))) 2328 (declare (dynamic-extent ,state)) 2329 (unwind-protect 2330 (macrolet ((,mname () `(do-hash-table-iteration ,',state))) 2331 (start-hash-table-iterator ,state) 2332 (locally ,@decls ,@body)) 2333 (finish-hash-table-iterator ,state)))))) 2333 2334 2334 2335 (eval-when (compile load eval)
Note:
See TracChangeset
for help on using the changeset viewer.
