Changeset 324


Ignore:
Timestamp:
Jan 17, 2004, 7:55:05 PM (21 years ago)
Author:
Gary Byers
Message:

WITH-HASH-TABLE-ITERATOR allows declarations.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/lib/macros.lisp

    r274 r324  
    23222322     nil))
    23232323
    2324 (defmacro with-hash-table-iterator ((mname hash-table) &body body)
     2324(defmacro with-hash-table-iterator ((mname hash-table) &body body &environment env)
    23252325  (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))))))
    23332334
    23342335(eval-when (compile load eval)
Note: See TracChangeset for help on using the changeset viewer.