Changeset 331
- Timestamp:
- Jan 19, 2004, 4:29:22 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-1/l1-dcode.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-1/l1-dcode.lisp
r313 r331 953 953 954 954 ; vector arg is (vector key-index keyvect combined-method) ; the next combined method 955 #| 955 956 956 (defun %%check-keywords (vector-arg args) 957 957 (flet ((do-it (vector-arg args) … … 960 960 (keyvect-len (length keyvect)) 961 961 (key-index (%svref vector-arg 0))) 962 ; vector arg is (vector key-index keyvect combined-method) ; the next combined method962 ; vector arg is (vector key-index keyvect combined-method) ; the next combined method 963 963 (declare (fixnum args-len key-index keyvect-len)) 964 964 (when (>= args-len key-index) 965 (let* ((keys-in (- args-len key-index)) 966 aok) ; actually * 2 965 (let* ((keys-in (- args-len key-index))) ; actually * 2 967 966 (declare (fixnum key-index keys-in keyvect-len)) 968 967 (when (logbitp 0 keys-in) (odd-keys-error vector-arg (collect-lexpr-args args key-index args-len))) 969 (setq aok (%cadr (pl-search args :allow-other-keys))) 970 (do ((i key-index (+ i 2)) 971 (kargs (nthcdr key-index args) (cddr kargs))) 972 ((eq i args-len)) 973 (declare (fixnum i)) 974 (when aok (return)) 975 (let ((key (car kargs))) 976 (when (and (eq key :allow-other-keys) 977 (cadr kargs)) 978 (return)) 979 (when (not (dotimes (i keyvect-len nil) 980 (if (eq key (%svref keyvect i)) 981 (return t)))) 982 ; not found - is :allow-other-keys t in rest of user args 983 (when (not (do ((remargs kargs (cddr remargs))) 984 ((null remargs) nil) 985 (when (and (eq (car remargs) :allow-other-keys) 986 (cadr remargs)) 987 (setq aok t) 988 (return t)))) 989 (bad-key-error key vector-arg (collect-lexpr-args args key-index args-len)))))))) 968 (unless (%cadr (%pl-search (nthcdr key-index args) :allow-other-keys)) 969 (do ((i key-index (+ i 2)) 970 (kargs (nthcdr key-index args) (cddr kargs))) 971 ((eq i args-len)) 972 (declare (fixnum i)) 973 (let ((key (car kargs))) 974 (when (not (or (eq key :allow-other-keys) 975 (dotimes (i keyvect-len nil) 976 (if (eq key (%svref keyvect i)) 977 (return t))))) 978 (bad-key-error key vector-arg (collect-lexpr-args args key-index args-len)) 979 )))))) 990 980 (let ((method (%svref vector-arg 2))) 991 ; magic here ?? not needed981 ; magic here ?? not needed 992 982 (apply method args))))) 993 983 (if (listp args) … … 995 985 (with-list-from-lexpr (args-list args) 996 986 (do-it vector-arg args-list))))) 997 |# 998 999 (defun %%check-keywords (vector-arg args) 1000 (let ((method (%svref vector-arg 2))) 1001 (if (listp args) 1002 (apply method args) 1003 (%apply-lexpr-tail-wise method args)))) 987 988 989 1004 990 1005 991
Note:
See TracChangeset
for help on using the changeset viewer.
