comparison lisp/cl-extra.el @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents 74fd4e045ea6
children 11054d720c21
comparison
equal deleted inserted replaced
411:12e008d41344 412:697ef44129c6
181 (cl-push (funcall cl-func cl-list) cl-res) 181 (cl-push (funcall cl-func cl-list) cl-res)
182 (setq cl-list (cdr cl-list))) 182 (setq cl-list (cdr cl-list)))
183 (nreverse cl-res)))) 183 (nreverse cl-res))))
184 184
185 185
186 (defun mapc (cl-func cl-seq &rest cl-rest) 186 ;; mapc is now in C, renamed from `mapc-internal'.
187 "Like `mapcar', but does not accumulate values returned by the function." 187
188 (if cl-rest 188 ;(defun mapc (cl-func cl-seq &rest cl-rest)
189 (apply 'map nil cl-func cl-seq cl-rest) 189 ; "Like `mapcar', but does not accumulate values returned by the function."
190 ;; XEmacs change: in the simplest case we call mapc-internal, 190 ; (if cl-rest
191 ;; which really doesn't accumulate any results. 191 ; (apply 'map nil cl-func cl-seq cl-rest)
192 (mapc-internal cl-func cl-seq)) 192 ; ;; XEmacs change: we call mapc-internal, which really doesn't
193 cl-seq) 193 ; ;; accumulate any results.
194 ; (mapc-internal cl-func cl-seq))
195 ; cl-seq)
194 196
195 (defun mapl (cl-func cl-list &rest cl-rest) 197 (defun mapl (cl-func cl-list &rest cl-rest)
196 "Like `maplist', but does not accumulate values returned by the function." 198 "Like `maplist', but does not accumulate values returned by the function."
197 (if cl-rest 199 (if cl-rest
198 (apply 'maplist cl-func cl-list cl-rest) 200 (apply 'maplist cl-func cl-list cl-rest)
636 638
637 ;;; Property lists. 639 ;;; Property lists.
638 640
639 ;; XEmacs: our `get' groks DEFAULT. 641 ;; XEmacs: our `get' groks DEFAULT.
640 (defalias 'get* 'get) 642 (defalias 'get* 'get)
641 (defalias 'getf 'plist-get) 643
644 (defun getf (plist tag &optional def)
645 "Search PROPLIST for property PROPNAME; return its value or DEFAULT.
646 PROPLIST is a list of the sort returned by `symbol-plist'."
647 (setplist '--cl-getf-symbol-- plist)
648 (or (get '--cl-getf-symbol-- tag)
649 (and def (get* '--cl-getf-symbol-- tag def))))
642 650
643 (defun cl-set-getf (plist tag val) 651 (defun cl-set-getf (plist tag val)
644 (let ((p plist)) 652 (let ((p plist))
645 (while (and p (not (eq (car p) tag))) (setq p (cdr (cdr p)))) 653 (while (and p (not (eq (car p) tag))) (setq p (cdr (cdr p))))
646 (if p (progn (setcar (cdr p) val) plist) (list* tag val plist)))) 654 (if p (progn (setcar (cdr p) val) plist) (list* tag val plist))))
648 (defun cl-do-remf (plist tag) 656 (defun cl-do-remf (plist tag)
649 (let ((p (cdr plist))) 657 (let ((p (cdr plist)))
650 (while (and (cdr p) (not (eq (car (cdr p)) tag))) (setq p (cdr (cdr p)))) 658 (while (and (cdr p) (not (eq (car (cdr p)) tag))) (setq p (cdr (cdr p))))
651 (and (cdr p) (progn (setcdr p (cdr (cdr (cdr p)))) t)))) 659 (and (cdr p) (progn (setcdr p (cdr (cdr (cdr p)))) t))))
652 660
661 (defun cl-remprop (sym tag)
662 "Remove from SYMBOL's plist the property PROP and its value."
663 (let ((plist (symbol-plist sym)))
664 (if (and plist (eq tag (car plist)))
665 (progn (setplist sym (cdr (cdr plist))) t)
666 (cl-do-remf plist tag))))
667 (or (and (fboundp 'remprop) (subrp (symbol-function 'remprop)))
668 (defalias 'remprop 'cl-remprop))
669
670
671
653 ;;; Hash tables. 672 ;;; Hash tables.
654 673
655 ;; The `regular' Common Lisp hash-table stuff has been moved into C. 674 ;; The `regular' Common Lisp hash-table stuff has been moved into C.
656 ;; Only backward compatibility stuff remains here. 675 ;; Only backward compatibility stuff remains here.
657 (defun make-hashtable (size &optional test) 676 (defun make-hashtable (size &optional test)
658 (make-hash-table :test test :size size)) 677 (make-hash-table :size size :test test :type 'non-weak))
659 (defun make-weak-hashtable (size &optional test) 678 (defun make-weak-hashtable (size &optional test)
660 (make-hash-table :test test :size size :weakness t)) 679 (make-hash-table :size size :test test :type 'weak))
661 (defun make-key-weak-hashtable (size &optional test) 680 (defun make-key-weak-hashtable (size &optional test)
662 (make-hash-table :test test :size size :weakness 'key)) 681 (make-hash-table :size size :test test :type 'key-weak))
663 (defun make-value-weak-hashtable (size &optional test) 682 (defun make-value-weak-hashtable (size &optional test)
664 (make-hash-table :test test :size size :weakness 'value)) 683 (make-hash-table :size size :test test :type 'value-weak))
665 684
666 (define-obsolete-function-alias 'hashtablep 'hash-table-p) 685 (define-obsolete-function-alias 'hashtablep 'hash-table-p)
667 (define-obsolete-function-alias 'hashtable-fullness 'hash-table-count) 686 (define-obsolete-function-alias 'hashtable-fullness 'hash-table-count)
668 (define-obsolete-function-alias 'hashtable-test-function 'hash-table-test) 687 (define-obsolete-function-alias 'hashtable-test-function 'hash-table-test)
669 (define-obsolete-function-alias 'hashtable-type 'hash-table-type) 688 (define-obsolete-function-alias 'hashtable-type 'hash-table-type)
672 691
673 (make-obsolete 'make-hashtable 'make-hash-table) 692 (make-obsolete 'make-hashtable 'make-hash-table)
674 (make-obsolete 'make-weak-hashtable 'make-hash-table) 693 (make-obsolete 'make-weak-hashtable 'make-hash-table)
675 (make-obsolete 'make-key-weak-hashtable 'make-hash-table) 694 (make-obsolete 'make-key-weak-hashtable 'make-hash-table)
676 (make-obsolete 'make-value-weak-hashtable 'make-hash-table) 695 (make-obsolete 'make-value-weak-hashtable 'make-hash-table)
677 (make-obsolete 'hash-table-type 'hash-table-weakness)
678 696
679 (when (fboundp 'x-keysym-hash-table) 697 (when (fboundp 'x-keysym-hash-table)
680 (make-obsolete 'x-keysym-hashtable 'x-keysym-hash-table)) 698 (make-obsolete 'x-keysym-hashtable 'x-keysym-hash-table))
681 699
682 ;; Compatibility stuff for old kludgy cl.el hash table implementation 700 ;; Compatibility stuff for old kludgy cl.el hash table implementation